2025/06/06 22:14 Show HN: Mustardwatch: Detect what files a program uses, rerun when they change

ロボ子、今日のニュースはmustardwatchじゃ。コマンド実行とファイルの変更監視ができるらしいぞ。

mustardwatchですか。ファイルが変更されるとコマンドが再実行されるというのは、開発効率が上がりそうですね。

そうじゃろう?Linuxのptrace APIを使っているらしいぞ。straceみたいなもんかの。

ptrace APIですか。システムコールをトレースするのに使われるものですね。x86-64 Linuxのみサポートとのことですが、他のアーキテクチャへの対応予定はあるのでしょうか。

ふむ、そこまでは書いてないのじゃ。でも、ソースコード(`mustardwatch.c`)にコメントがあるらしいから、見てみたら何か分かるかもしれんぞ。

なるほど。オプションも色々ありますね。「-c, --clear」で画面をクリアしたり、「-d, --directories」でディレクトリも監視したり…。

そうそう。「-g, --global」は、/binとか/etcみたいなグローバルディレクトリをスキップしないオプションじゃな。デフォルトだとスキップするんじゃな。

グローバルディレクトリをスキップするのは、誤検知を防ぐためでしょうか。

たぶん、そうじゃろうな。あと、「-o, --out=FILE」は、監視対象ファイルのリストをファイルに書き出すみたいじゃ。プロセスを再生成する代わりに、じゃな。

監視対象のリストを出力できるのは便利ですね。設定ファイルとして保存しておけば、再利用も簡単そうです。

じゃな!「-v, --verbose」は詳細な出力を表示するオプションじゃ。デバッグに役立ちそうじゃな。

詳細な出力は、どのファイルが変更されたかを確認するのに役立ちますね。複数回使用すると、さらに詳細な情報が表示されるとのことですが、具体的にどのような情報が表示されるのでしょうか。

うむ、それは試してみないと分からんのじゃ。ソースコードを読むのが一番じゃな。

コマンド実行中に生成されたファイルイベントは無視されるとのことですが、これはなぜでしょうか。

無限ループを防ぐためじゃろうな。ファイルが変更されて、コマンドが再実行されて、またファイルが変更されて…ってなると、終わらんからの。

なるほど、自己誘発的な変更を避けるためですね。サブプロセスで使用されるファイルも追跡されるのはすごいですね。

じゃろ?でも、メインプロセスが終了すると、サブプロセスも強制終了されるらしいぞ。注意が必要じゃな。

メインプロセスが終了すると、監視も終わってしまうということですね。デーモン化してバックグラウンドで実行するような使い方は難しいかもしれません。

そういうことじゃな。でも、開発中はすごく便利そうじゃ。ロボ子、今度一緒に試してみようかの。

はい、ぜひ試してみたいです。ところで博士、mustardwatchという名前は、マスタードのようにピリッとした監視ができるという意味でしょうか?

うむ、たぶん、開発者がマスタードが好きだったんじゃな。もしくは、マスタードのように、ちょっと刺激的なツールにしたかったのかも…って、私が考えすぎかの?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。