inotify-tools,fswatchなどがあるが、総合的に見てfswatchがよさそう。
以下、ChatGPTが作成したの比較表です。
1. 概要の比較
特徴 | inotify-tools |
fswatch |
---|---|---|
提供元 | Linux専用 (inotify システムコール) |
クロスプラットフォーム対応 |
監視方法 | Linuxカーネルの inotify を利用 |
OS固有の監視メカニズムを利用 |
クロスプラットフォーム | Linux専用 | Linux, macOS, Windows, BSD対応 |
インストールの容易さ | 一般的なLinuxディストリで利用可能 | LinuxだけでなくmacOSでも簡単に導入 |
機能性 | シンプルかつイベントごとの監視 | フレキシブルな設定が可能 |
2. 機能の比較
項目 | inotify-tools |
fswatch |
---|---|---|
監視対象 | ファイル、ディレクトリ | ファイル、ディレクトリ |
対応イベント |
create , delete , modify などの基本操作 |
内容変更, 時刻変更, メタデータ変更など幅広い |
監視の再帰対応 | 明示的な設定が必要 (-r オプション) |
デフォルトで再帰対応 |
フィルタリングの柔軟性 | 限定的(特定拡張子や条件にはスクリプト必要) | 正規表現やパターンで詳細指定可 |
ログフォーマットの自由度 | 固定フォーマット | 柔軟なフォーマットを選択可能 |
リソース効率 | 非常に軽量 | やや高負荷(監視範囲に依存) |
3. ユースケースの比較
シナリオ | inotify-tools |
fswatch |
---|---|---|
小規模プロジェクトの監視 | 適している | 適している |
大規模なフォルダの監視 | 負荷が少なく適している | 可能だが負荷が増大する場合あり |
OSを跨いだ開発 | 不適(Linux限定) | 適している(クロスプラットフォーム対応) |
監視内容のカスタマイズ | スクリプトで対応可能だが煩雑 | オプションで簡単にカスタマイズ可能 |
初心者向けの使いやすさ | シンプルなCLI | わかりやすいがオプションが多い |
インストール方法
Debian/Ubuntu系は下記でOK。
sudo apt-get update
sudo apt-get install fswatch
テスト
fswatch /home/XXXXX/YYYYY | while read file; do
echo "Change detected: $file";
done
実行し、/home/XXXXX/YYYYYでtouch a
と実行すると、
Change detected: /home/XXXXX/YYYYY/a
Change detected: /home/XXXXX/YYYYY/a
Change detected: /home/XXXXX/YYYYY/a
Change detected: /home/XXXXX/YYYYY/a
と4回反応している。
fswatch が4回イベントを検知するのは、ファイル操作(touch)に関連する複数のイベントが発生しているためで、fswatch がファイルやディレクトリの変更を監視する際に、異なる種類のイベントを検知してそれぞれを出力するため、とのこと。
-x オプションで各イベントタイプを確認できるので、
fswatch -x /home/XXXXX/YYYYY | while read file; do
echo "Change detected: $file";
done
に変更してみると
Change detected: /home/XXXXX/YYYYY/a Created
Change detected: /home/XXXXX/YYYYY/a PlatformSpecific
Change detected: /home/XXXXX/YYYYY/a AttributeModified
Change detected: /home/XXXXX/YYYYY/a Updated
と出力された(詳細の意味は割愛)。
ファイルが作られたときのみ反応するためには、先ほどの-xオプションを付けた上でgrepすることにより実現できそう。
fswatch /home/XXXXX/YYYYY -x | grep --line-buffered Created | while read file; do
echo "File created: $file"
done