退出脚本时杀死 bash 脚本中的后台进程

退出脚本时杀死 bash 脚本中的后台进程

我有一个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+Cbash,但我不确定这是正确的方法......

答案1

CLOCK_PID=$!
trap 'kill -9 $CLOCK_PID' EXIT
tail -f mylog.log

答案2

也许watch会适合您的需求。默认情况下打印当前时间。就像是:

$ watch tail -n 30 /var/log/syslog

相关内容