如何在shell中使用“kill”后继续执行下一个其他命令?

时间:2013-07-29 08:16:44

标签: linux shell kill

我想将两个不同的脚本文件合并到一个脚本文件中,该文件可以执行两个不同文件的操作。脚本文件是:

脚本文件A:

pid=`ps -ef | grep temp_tool | grep -v grep | awk '{print $2}'`
kill -9 ${pid}

脚本文件B:

nohup ./temp_tool &

合并的脚本文件:

pid=`ps -ef | grep temp_tool | grep -v grep | awk '{print $2}'`
kill -9 ${pid}
nohup ./temp_tool &

执行kill命令后,整个合并的脚本文件将停止,我必须将其修改为:

pid=`ps -ef | grep temp_tool | grep -v grep | awk '{print $2}'`
out=`kill -9 ${pid}`
nohup ./temp_tool &

现在效果很好,但我不知道为什么?有什么不同吗?

1 个答案:

答案 0 :(得分:2)

我会说$pid也包含你脚本的pid。你可以过滤掉它:

script_pid=$$
pid=$(ps -ef | grep temp_tool | grep -Ev "grep|$script_pid" | awk '{print $2}')

虽然如果你想要命令temp_tool的pid,我会建议:

ps -C temp_tool -o pid

而不是ps -ef | grep ...