ファイル生成時のスクリプト実行 [重複]

ファイル生成時のスクリプト実行 [重複]

特定のディレクトリにファイルが作成されたら、どのようにスクリプトを実行できますか?

答え1

使用できるインクロン(クローンに通知します)。

同じアイデアですcron。ただし、時間に基づくのではなく、incrontabファイルシステム内の特定のイベントに対して実行するコマンドを指定するコマンドを定義します。

あなたの場合はincrontab次のとおりです。

/tmp IN_CLOSE_WRITE /path/to/someCommand $#

someCommandファイル名を引数として使用してファイルを書き込んで閉じるたびに呼び出されます(名前付きファイルが渡されたことを確認する必要がありますsomeCommandmyFile

しかし、注意することがあります。/tmp世界中で書くことができるので、誰でも何でもファイルに書き込んでシンボリックリンクを作成できます。これにより、myFile転送時に書き込み権限を持つすべてのファイルを上書きしたり(シンボリックリンクを使用)、意図したものとは異なるコマンド(トロイの木馬など)を実行することができます。自分だけの書き込み権限を持つディレクトリにファイルを保存する方が合理的です。

答え2

次の場所に同じスクリプトを配置できますcron

while true; do
   modification_time=`stat --printf=%y /tmp/mydir`
   if [ "$modification_time" != "`stat --printf=%y /tmp/mydir`" ]; then
      echo YOUR DIR CHANGED
   fi;
done;

動作しているかテストしてみました。変更できますecho line

関連情報