Tôi đang viết một tập lệnh bash để sử dụng inotifywait
để theo dõi một thư mục và khởi động các hành động khi phát hiện ra các thay đổi. Cái gì đó như:
inotifywait -m ... | while read f; do something; done
Vì inotifywait
nó không tự chấm dứt, tập lệnh này sẽ không dừng lại.
Vì vậy, kế hoạch của tôi là lấy PID của quá trình inotifywait, lưu nó vào một tệp và có một quy trình khác giết nó sau, nói như sau:
inotifywait -m ... | { echo ??PID?? > pid-file; while ... }
Nhưng tôi không biết làm thế nào để có được PID. Có một cách đơn giản để đạt được điều này? Một cách khác là chỉ lưu PID của shell-script $$
vào tệp và giết toàn bộ shell-script nhưng tôi muốn thực hiện một số dọn dẹp sau vòng lặp while.
Tôi đã thử sử dụng coproc
và tôi nghĩ rằng nó sẽ hoạt động nhưng có vẻ như phức tạp hơn mức cần thiết.
pgrep inotifywait
. Điều đó sẽ cung cấp cho bạn PID, để giết , pkill inotifwait
.
grep -v grep
, thay vào đó ps -ef | grep [p]rocessname...
sẽ làm như vậy.
-f
tắc nếu bạn cần khớp với nhiều tên thực thi hơn.