Kill命令在bash脚本中无法正常工作

时间:2017-02-21 08:02:17

标签: bash

我正在运行一个ubuntu控制台,当我输入以下命令时,所有进程都将被完全杀死。

kill -9 $(ps -ef | grep 'job1/' | grep -v grep| awk '{print $2}')

但是当我尝试使用crontab定期调用脚本时,事情就出错了。

#!/bin/bash
pid=$(ps -ef | grep 'job1/' | grep -v grep | awk '{print $2}')
echo $pid
kill -9 $pid
# the following commands were never executed
sleep 5
/data/job1/tomcat8/bin/startup.sh

结果是这样的:

15432 15438
Killed

它似乎刚刚杀死了这个作业,但是不会执行以下命令。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果你打算通过PID制作一个kill事物的脚本,那么你需要非常小心你杀了正确的东西。

你已经拥有grep -v grep以避免杀死grep本身,但似乎你没有放入任何东西来防止脚本自杀。既然你知道自己的PID,你可以grep -v,但是如果你是123并且你要杀死的东西之一是1234怎么办?通过脚本名称可能更安全。