2017-02-21 135 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?可能更安全的腳本名稱去。