我正在运行一个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
它似乎刚刚杀死了这个作业,但是不会执行以下命令。有什么想法吗?
答案 0 :(得分:1)
如果你打算通过PID制作一个kill
事物的脚本,那么你需要非常小心你杀了正确的东西。
你已经拥有grep -v grep
以避免杀死grep本身,但似乎你没有放入任何东西来防止脚本自杀。既然你知道自己的PID,你可以grep -v
,但是如果你是123并且你要杀死的东西之一是1234怎么办?通过脚本名称可能更安全。