我目前正在编写一个脚本,该脚本除其他外必须杀死某些进程。
我使用了kill方法,它运行得很好,除了在启动脚本时,控制台中会打印一些不需要的消息,说明已被“终止”的每个进程。
我不知道该如何摆脱这些信息,所以我感谢任何可以帮助我的人。
我希望这些消息不要在控制台内打印,因为它们可能会误导您。如果我正确理解,那是在stderr流中打印的错误消息。
有什么办法可以防止这些日志在控制台中打印?
我在此站点上发现了三个与我相同的问题,并提出了三种不同的解决方案:
kill -9 $pid &> /dev/null
exec 3>&2 exec 2> /dev/null kill $pid &> /dev/null exec 2>&3 exec 3>&-
杀死$ pid
等待$ pid 2> / dev / null
但是遗憾的是,这些解决方案都无法改变脚本的行为(我总是收到“已终止”消息)。还有其他想法吗?我是Linux的新手,还没有掌握输出的重定向,所以也许我忘记了一些明显的东西?
非常感谢任何愿意提供帮助的人!
使用子shell启动进程并转移子shell的输出:
pid=$(sleep 10 >/dev/null 2>&1 & echo $!)
kill $pid
问题在于启动外壳将监视并注意到其子项的终止并对其进行报告。
您还可以更加激进地关闭工作控制(在脚本中可能正是您想要的):
set +m
sleep 3 & pid=$!
kill $pid
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句