【发布时间】:2019-02-22 14:11:45
【问题描述】:
我正在生成一个fish shell 作为后台作业,并从中生成inotifywait(一个监视指定文件并仅在更改后才返回的进程)。
然而,稍后,在一个未指定的时间点(此时不能保证inotifywait 已返回),我将杀死产生inotifywait 的fish shell。
我的目标是让inotifywait 在产生它的 PPID 终止时自动终止。有没有办法做到这一点?
fish -c "inotifywait -qq $somefile && ..." &
# time passes, inotifywait hasn't returned
kill -15 (jobs -lp)
# the fish process is now terminated, but inoyifywait remains
我现在使用的临时破解方法是简单地更新正在监视的文件的访问时间(使用诸如 touch 之类的实用程序),以便最终返回 inotifywait。
我在 linux 4.20.11 上使用 fish 3.0.1。
【问题讨论】:
-
为什么是
fish?看起来你想做类似bash -c 'trap "kill $!" 0; inotifywait .... && ... & wait;' &这样的事情,这样调用 inotifywait 的 shell 会在它终止时向它发送一个信号,但我不确定这是否适用于 fish。