bash - 在 bash 中杀死后如何抑制终止消息?

标签 bash unix shell

你怎么能抑制在你杀死一个之后出现的Terminated消息 在 bash 脚本中处理?

我尝试了 set +bm,但它不起作用。

我知道另一种解决方案涉及调用 exec 2>/dev/null,但这是 可靠的?如何重置它以便我可以继续看到 stderr?

最佳答案

为了使消息静音,您必须重定向 stderr 在消息生成时。因为kill命令发送信号并且不等待目标进程响应,重定向 kill 命令的 stderr 对你没有好处。 bash 内置 wait是专门为此目的而制作的。

这是一个非常简单的例子,它杀死了最近的后台命令。 ( Learn more about $! here. )

kill $!
wait $! 2>/dev/null

因为killwait 都接受多个pid,所以你也可以做batch kill。这是一个杀死所有后台进程的示例(当然是当前进程/脚本的)。

kill $(jobs -rp)
wait $(jobs -rp) 2>/dev/null

我是从 bash: silently kill background function process 被带到这里的.

关于bash - 在 bash 中杀死后如何抑制终止消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33716439/

相关文章:

mysql - 验证 MySQL 用户名和密码

bash - 如何在扩展为匹配文件之前访问文字通配符参数?

bash - echo 控制 C 字符

linux - 将CSV文件中的第一行和第三行转换为Shell脚本中的列

linux - Crontab 每 15 分钟运行一次,除了凌晨 3 点?

Bash:在 if 语句中声明值

linux - 如何在shell脚本中查看和使用cp命令的状态?

php - Bash 脚本不会在后台启动后执行命令

bash - 在使用该别名调用的函数中使用 bash 别名

c - 如何让一个子进程等待它的兄弟?