inotifywait
디렉토리를 모니터링하고 변경 사항이 감지되면 작업을 시작하는 데 사용하는 bash 스크립트를 작성 중입니다. 다음과 같은 것 :
inotifywait -m ... | while read f; do something; done
이후 inotifywait
자체가 종료되지 않습니다,이 스크립트는 중단되지 않습니다.
그래서 내 계획은 inotifywait 프로세스의 PID를 가져 와서 파일에 저장하고 나중에 다른 프로세스가 종료하도록하는 것입니다.
inotifywait -m ... | { echo ??PID?? > pid-file; while ... }
그러나 PID를 얻는 방법을 모르겠습니다. 이것을 달성하는 간단한 방법이 있습니까? 또 다른 방법은 쉘 스크립트의 PID를 $$
파일에 저장하고 전체 쉘 스크립트를 종료하는 것이지만 while 루프 후 정리를 원했습니다.
나는 사용을 시도했지만 coproc
그것이 효과가 있다고 생각하지만 필요 이상으로 더 복잡해 보입니다.
이`ps -ef | grep processName | grep -v grep | awk '{print $ 2}'| xargs를 죽일 -9`
—
Kiwy
@Kiwy-그 혼란 대신에 그냥
—
slm
pgrep inotifywait
. 그러면 PID를 죽일 수 pkill inotifwait
있습니다.
@slm 시스템에 따라 grep 및 ps가 거의있는 동안 pgrep 및 pkill이 없습니다. 천만에요
—
Kiwy
@Kiwy-의심의 여지가 있지만, 이러한 도구는 어디에나 있습니다. 또한 당신은
—
slm
grep -v grep
대신 ps -ef | grep [p]rocessname...
할 필요가 없습니다 .
@DavidsonChua-예,
—
slm
-f
더 많은 실행 파일 이름과 일치 해야하는 경우 스위치를 사용할 수 있습니다 .