终止无限期运行的子命令 - inotify
Posted
技术标签:
【中文标题】终止无限期运行的子命令 - inotify【英文标题】:Terminate indefinitely running sub-command - inotify 【发布时间】:2020-05-10 03:36:29 【问题描述】:想象一个这样的场景,inotify 调用另一个脚本,该脚本永远运行
while inotifywait -e close_write ./<sample-file>; do
./file.sh
done
内容file.sh
:
while true; do
sleep 5;
echo "sample message";
done
有什么方法可以在sample-file
更新时终止file.sh
的执行?
谢谢!
【问题讨论】:
当您使用echo "$0: message: $*"
修改file.sh
并调用./file.sh $(date)
或其他更改参数时,您可以更轻松地进行测试。
【参考方案1】:
您可以在后台运行file.sh
,并跟踪它是否已经运行。如果是,请在再次运行之前将其杀死。示例:
#!/bin/sh
bgpid=
trap 'kill $bgpid' 0 2 3 15 # Kill the background process when the parent exits
while inotifywait -e open ./input.txt; do
if [ -n "$bgpid" ]; then
echo "Killing existing file.sh on pid $bgpid"
kill $bgpid
bgpid=
fi
./file.sh &
bgpid=$!
done
【讨论】:
以上是关于终止无限期运行的子命令 - inotify的主要内容,如果未能解决你的问题,请参考以下文章