特定のディレクトリにファイルが作成されたら、どのようにスクリプトを実行できますか?
答え1
使用できるインクロン(クローンに通知します)。
同じアイデアですcron
。ただし、時間に基づくのではなく、incrontab
ファイルシステム内の特定のイベントに対して実行するコマンドを指定するコマンドを定義します。
あなたの場合はincrontab
次のとおりです。
/tmp IN_CLOSE_WRITE /path/to/someCommand $#
someCommand
ファイル名を引数として使用してファイルを書き込んで閉じるたびに呼び出されます(名前付きファイルが渡されたことを確認する必要がありますsomeCommand
)myFile
。
しかし、注意することがあります。/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
。