微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

bash – 如何在tail -f命令后继续运行脚本

我有以下脚本:
tail -f nohup.out
echo 5

当我在tail -f上按Ctrl C时,脚本停止运行:不打印5.在停止tail命令后如何运行命令echo 5?

Ctrl C将 SIGINT信号发送到前台 process group中的所有进程.当tail正在运行时,进程组由尾进程和运行脚本的shell组成.

使用trap内置来覆盖信号的认行为.

trap " " INT
tail -f nohup.out
trap - INT
echo 5

陷阱的代码不执行任何操作,因此如果shell接收到SIGINT,则shell将前进到下一个命令(echo 5).请注意,第一行中的引号之间有一个空格;任何无效的shell代码都会这样做,除了一个空字符串,这意味着完全忽略信号(这不能使用,因为它会导致tail忽略信号).第二次调用trap会恢复认行为,因此在第三行之后,Ctrl C将再次中断脚本.

原文地址:https://www.jb51.cc/bash/383374.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐