2015-11-06 118 views
0

我一直在試圖找到並殺死在Linux機器上的ksh腳本中停止後留下的任何陳舊進程,它似乎無法正常工作。它的命令行,但在劇本雖然找到並殺死ksh腳本(linux)中的進程無法正常工作

這裏是代碼

echo "kill any process still running" 
ps -ef | grep qpasa |grep -v grep | awk '{print $2}' |xargs kill 

作品,這裏是從腳本日誌輸出

usage: kill [ -s signal | -p ] [ -a ] pid ... 
     kill -l [ signal ] 

你能請你讓我知道什麼我在這裏做錯了嗎

+0

什麼是同一個命令的輸出沒有最後「殺命令」? 「ps -ef | grep qpasa | grep -v grep | awk'{print $ 2}'」 – nabeel

回答

1

我想你在沒有進程運行時調用腳本。嘗試kill沒有參數,你會得到相同的消息。
您可以將錯誤重定向到/dev/null,但我會嘗試別的東西:

ps -ef | grep qpasa |grep -v grep | awk '{print $2}' | while read pid; do 
    echo "Killing ${pid}" 
    kill ${pid} 
    sleep 2 
    kill -9 ${pid} 2>/dev/null 
done 

第一killqpasa的可能性,停止控制:刷新緩存和關閉句柄。給它qpasa 2秒。
qpasa忽略信號時,kill它是困難的方式。當然,這個過程可能已經停止了,所以這次我們想忽略錯誤信息。

當你有很多qpasa進程時,你只想睡2秒一次。
首先通過友好殺死所有進程循環,等待5秒鐘,然後殺死你發現的進程。當你的循環(與使用$ 1中刪除信號)的功能kill_qpasa_signal,您可以使用

kill_qpasa_signal 15 
sleep 5 
kill_qpasa_signal 9