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를 선택하겠습니다. 생성, 수정, 삭제, 이동에 대한 시스템 호출을 살펴보고 이를 감지하면 수행할 작업을 셸에서 스크립트를 작성할 수 있습니다.