![退出脚本时杀死 bash 脚本中的后台进程](https://linux22.com/image/36679/%E9%80%80%E5%87%BA%E8%84%9A%E6%9C%AC%E6%97%B6%E6%9D%80%E6%AD%BB%20bash%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E7%9A%84%E5%90%8E%E5%8F%B0%E8%BF%9B%E7%A8%8B.png)
我有一个tail
文件的脚本同时在右上角显示时钟。我从网上拿了时钟部分,它工作正常。整个脚本是这样的(我简化了):
while sleep 1; do tput sc; tput cup 0 $(($(tput cols)-29)); date; tput rc; done &
tail -f mylog.log
一切都很好,但问题是当我停止脚本时使用CTRL+C
时钟继续在我的控制台中运行(直到我手动终止剩余的 bash 进程)。所以,当我退出脚本时有没有办法停止该过程?
我尝试了下面的代码,但它不起作用:
while sleep 1; do tput sc; tput cup 0 $(($(tput cols)-29)); date; tput rc; done &
CLOCK_PID=$!
tail -f mylog.log
kill -9 $CLOCK_PID
我搜索了如何陷入CTRL+C
bash,但我不确定这是正确的方法......
答案1
CLOCK_PID=$!
trap 'kill -9 $CLOCK_PID' EXIT
tail -f mylog.log
答案2
也许watch
会适合您的需求。默认情况下打印当前时间。就像是:
$ watch tail -n 30 /var/log/syslog