我正在编写一个bash脚本,用于inotifywait
监视目录并在检测到更改时启动操作。就像是:
inotifywait -m ... | while read f; do something; done
由于inotifywait
不会自行终止,因此该脚本不会停止。
所以我的计划是获取inotifywait进程的PID,将其保存到文件中,然后让另一个进程将其杀死,例如:
inotifywait -m ... | { echo ??PID?? > pid-file; while ... }
但我不知道如何获取PID。有没有简单的方法可以做到这一点?另一种方法是将shell脚本的PID保存$$
到文件中并杀死整个shell脚本,但是我想在while循环后进行一些清理。
我已经尝试过使用coproc
,但我认为它会起作用,但似乎比所需的更为复杂。
您可以使用类似`ps -ef |的东西。grep processName | grep -v grep | awk'{print $ 2}'| xargs kill
—
-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
如果需要与更多可执行文件名称匹配,可以使用该开关。