이것이 가능한지 확신 할 수는 없지만 나는 종종 그런 생각을하고 일부 솔루션은 저를 놀라게했습니다. while 루프 안에 내가 원하는 않는여분의 프로세스를 만들지 않고 스크립트에서 inotifywait -m을 사용 하시겠습니까?
#!/bin/bash
EVENTS="CREATE,CLOSE_WRITE,DELETE,MODIFY,MOVED_FROM,MOVED_TO"
inotifywait -e "$EVENTS" -m -r ~/Desktop/testing | \
while true; do
read TMP
echo "${TMP}" >> ~/Desktop/eventlog
done
주 : 두 개의 프로세스를 생성하지 않고 다음 스크립트의 동등한를 만들 수 있습니다 (이 경우, 파이프가 있기 때문에 두 개의 프로세스가 생성됩니다 분명하다) 이벤트에 액세스 할 수 있습니다.
우리는 하나의 프로세스로 작성하고 다른 프로세스에서 읽을 필요가 있기 때문에 파이프가 필요하다고 생각됩니다. 그러나 트릭이있을 수 있습니까?
아, 네, 제가이 일을 성취하려고 노력하고 있습니다. 흥미롭게도, 어떻게 구현할 수 있는지 궁금합니다. 나는 그들이 새로운 프로세스를 만드는 대신 새로운 스레드를 생성한다고 생각하니? 사람이 글을 쓰고 있고 읽는다면 두 가지 "일이 있어야합니다"라고 생각됩니다. 나는 두 개의 스레드를 추측한다. –
아니요. 두 개의 새 프로세스를 포크하지 않고 대기중인 대신 현재 프로세스의 첫 번째 명령을 새 프로세스와 루프에서 실행합니다. – chepner