2017-02-21 228 views
1

我正在运行ubuntu控制台,当我输入以下命令时,所有进程都将被完全杀死。杀死命令将无法在bash脚本中正常工作

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 

这似乎只是杀了工作,但不会执行下面的命令。任何想法?

+5

你是否意外地杀死了剧本本身? – John3136

+0

啊,确切地说!!!谢谢你sooooooo了!你真的节省了我的一天!! :) – Soony

+2

你应该考虑使用'pgrep'或'pkill' – oliv

回答

1

如果您要通过PID创建一个脚本,那么您需要非常小心,以免杀死正确的东西。

你已经有grep -v grep来避免杀死grep本身,但似乎你没有投入任何东西来防止脚本自杀。既然你知道你自己的PID,你可以使用grep -v,但是如果你是123,你想杀的东西是1234?可能更安全的脚本名称去。