巨大スクリプトを分解するためにinotifyを使ってみた
様々なコマンドが密結合している巨大なスクリプトがあります。
あるコマンドを叩くのに必要なファイルはスクリプト全体の数%程度ですが、
どこに設定が書かれているかなどを職人技的に探す必要があり非常にやっかいなことになっています。
何とかして分解したいと思って、
inotifyを使って各コマンドで使われているファイルを調べることにしました。
inotify
inotifyではファイルのアクセス、オープン、クリエイト、デリートなどの操作を監視することができます。
inotify-toolsのインストール
下のリンクにならって、epelからインストールします。
www.server-world.info
$ sudo yum --enablerepo=epel -y install inotify-tools
inotifywaitコマンドを実行
基本的にはこちらを参考にしました。
qiita.com
accessだけ監視したかったので、オプションでeventを特定しています。
catのときのみ通知されていることがわかります。
$ mkdir test $ inotifywait -e access -r -m test & [2] 8120 Setting up watches. Beware: since -r was given, this may take a while! Watches established. $ cd test $ touch sample.txt $ echo hoge > sample.txt $ cat sample.txt hoge test/ ACCESS sample.txt
これでファイルへのアクセスが監視することができました。
最後に
実際にinotifyで巨大スクリプトの実行を監視してみたところ、各コマンドで使われているファイルを洗い出すことができました。
ただ、utilとかhelperのような使ってなくても読み込んでいるファイルが多数あったので、けっきょくは人の目で確認する必要がありそうです。。
いつの日か綺麗に分離できる日がくるのだろうか。。
気が向いたら、また書きます。