杀死Bash脚本中的所有无声进程

时间:2014-06-19 09:46:25

标签: bash kill kill-process

我在脚本中运行了一系列phantomjs的静默实例,当脚本结束时我想立即将它们全部删除。但是要使脚本看起来不错,并且不要使用此消息重载屏幕

./runTests.sh: line 74: 26002 Killed phantomjs Lib/loadtester/runTests.js $TEST_COUNT $CLIENT_LIMIT $ACTION $PROFILE $TEST_SERVER $TEST_INCREMENT $DEBUG_MODE > "/tmp/"$TEST_COUNT"_log.txt"

这样做的最佳方法是什么,我目前正在尝试:

(killall -9 phantomjs 2>&1) >/dev/null

我已经尝试过几乎所有我能想到的东西,包括killall中的所有安静选项

1 个答案:

答案 0 :(得分:1)

这些消息不是来自killall命令。当它注意到其背景子进程之一已经死亡时,它们会来自shell。

您可以通过在子shell中运行命令来阻止这种情况:

(phantomjs Lib/loadtester/runTests $TEST_COUNT $CLIENT_LIMIT $ACTION $PROFILE $TEST_SERVER $TEST_INCREMENT $DEBUG_MODE > "/tmp/"$TEST_COUNT"_log.txt" &)

后台进程现在是子shell的子进程,而不是原始脚本shell,因此脚本shell在死亡时不会得到通知。 (实际上,由于子shell在创建后台进程后立即退出,因此后台进程成为init的子进程。)