Linuxで変更または新しく作成されたファイルまたはディレクトリを一覧表示する方法。これにより、別のコマンドまたはシェルスクリプトを実行して別の操作を実行できます。例えば。 a.txtファイルとtest.txtファイルが修正され、Linux cmdを使用して最後に変更されたファイルを見つけて、restart.shスクリプトを起動して変更をインポートしたいと思います。
答え1
これを達成する方法はいくつかありますが、以下はPythonの例です。
#!/usr/bin/env python
import os
import glob
import time
import subprocess
if __name__ == '__main__':
mtimes = dict()
while True:
for f in glob.glob('*.txt'):
if f not in mtimes:
mtimes[f] = os.path.getmtime(f)
if mtimes[f] != os.path.getmtime(f):
print("File {} was modified. Executing restart.sh.".format(f))
mtimes[f] = os.path.getmtime(f)
output = subprocess.check_output('./restart.sh')
print(output)
time.sleep(1)
環境によっては調整が必要な場合があります。
glob.glob('*.txt')
監視するファイルの検索パターン。subprocess.check_output('./restart.sh')
スクリプトを呼び出す場所です。他の場所にいるかもしれません。time.sleep(1)
秒単位の検査間の遅延。
答え2
私はinotifywaitを選択します。作成、変更、削除、移動へのシステムコールを見て、それを検出すると、実行するアクションをシェルからスクリプトに書き込むことができます。