2017-05-30 175 views
1

你好我正在嘗試編寫一個腳本來從命令行重新啓動其他腳本。 用法應該是:重新啓動腳本的腳本

重啓someotherscript.sh

貓重啓

#!/bin/bash 

for pids in $(ps -ef | grep $1 | grep -v grep | awk '{print $2}') 
do 
kill -9 $pids 
done 
echo test 
sleep 10 
$1 & 

輸出爲:

[email protected]:/scripts# restart pricealert.sh 
Killed 
[email protected]: 

我重新啓動腳本是殺害自己。 這裏有什麼問題?你能幫我麼?

+2

更好地使用'pgrep'甚至'pkill' –

回答

0

您的腳本正在搜索結果中找到自己,因爲您用來啓動腳本的命令包含您試圖殺死的腳本名稱。

您可以添加一個if語句來解決這個問題($$是行書的PID):

if [ "$$" != "$pids" ]; then 
    kill -9 $pids 
fi 
+0

非常感謝這個固定我的問題.. ..我欣賞 –