我运行一个脚本,如:
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
Gor*_*son 16
该消息不是来自任何一个kill或后台命令,它来自bash,当它发现其中一个后台作业被杀死时.要避免该消息,请使用disown从bash的作业控件中删除它:
sleep 20 &
PID=$!
disown $PID
kill -9 $PID
Run Code Online (Sandbox Code Playgroud)
这可以使用'wait'+ wait重定向到/ dev/null来完成:
sleep 2 &
PID=$!
kill -9 $PID
wait $PID 2>/dev/null
sleep 2
sleep 2
sleep 2
Run Code Online (Sandbox Code Playgroud)
此脚本不会给出"已杀死"消息:
-bash-4.1$ ./test
-bash-4.1$
Run Code Online (Sandbox Code Playgroud)
虽然,如果你尝试使用类似的东西:
sleep 2 &
PID=$!
kill -9 $PID 2>/dev/null
sleep 2
sleep 2
sleep 2
Run Code Online (Sandbox Code Playgroud)
它将输出消息:
-bash-4.1$ ./test
./test: line 4: 5520 Killed sleep 2
-bash-4.1$
Run Code Online (Sandbox Code Playgroud)
我喜欢这个解决方案比使用'disown'可能有其他含义.
想法来源:https://stackoverflow.com/a/5722850/1208218