如何抑制Terminated
在bash脚本中终止进程后出现的消息?
我试过了set +bm
,但那不起作用.
我知道另一个解决方案涉及呼叫exec 2> /dev/null
,但是可靠吗?如何重新设置它以便我可以继续查看stderr?
我运行一个脚本,如:
sleep 20 &
PID=$!
kill -9 $PID >/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
我不希望脚本显示输出如下:
line 51: 22943 Killed sleep
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会发生这种情况,我已将输出重定向到/ dev/null
通过引用bash:静默地杀死后台函数进程并在bash 中使命令超时而没有不必要的延迟,我编写了自己的脚本来为命令设置超时以及使kill消息静音。
但是当我的进程被终止时,我仍然收到“已终止”消息。我的代码有什么问题?
#!/bin/bash
silent_kill() {
kill $1 2>/dev/null
wait $1 2>/dev/null
}
timeout() {
limit=$1 #timeout limit
shift
command=$* #command to run
interval=1 #default interval between checks if the process is still alive
delay=1 #default delay between SIGTERM and SIGKILL
(
((t = limit))
while ((t > 0)); do
sleep $interval;
#kill -0 $$ || exit 0
((t -= interval))
done
silent_kill $$
#kill -s SIGTERM $$ && kill -0 $$ || exit 0 …
Run Code Online (Sandbox Code Playgroud)