やーまんぶろぐ

気が向いた時にだけ書くブログ

巨大スクリプトを分解するために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のような使ってなくても読み込んでいるファイルが多数あったので、けっきょくは人の目で確認する必要がありそうです。。

いつの日か綺麗に分離できる日がくるのだろうか。。

気が向いたら、また書きます。