2013-02-14 244 views
0
#!/bin/bash 
value=$(<man.txt) 
echo "$value" 

if [ "$value" == "true" ]; then 
    echo "startedif_manthan" 
     ps -ef|grep sym |awk '{ print $2 }'|sudo xargs kill -9; 
     sleep 30; 
    sudo sh /var/www/symmetric-ds-3.1.6/bin/sym --port 8082 --server; 
fi 

嗨那裏,我有這個腳本殺死一個進程,並在一段時間內重新啓動腳本。
它正在查殺腳本,但重啓腳本(sudo sh /var/www/symmetric-ds-3.1.6/bin/sym --port 8082 --server)運行不正常。

當我手動運行腳本時,它也給出問題。
我不知道它是否是shell腳本。
但是,當我試圖手動去腳本位置並執行此命令./sym --port 8082 --server腳本正常運行。無法啓動腳本

有什麼建議嗎?

+1

什麼是當你執行shell腳本,你得到的錯誤信息? – Incognito 2013-02-14 05:52:57

回答

1

既然你說的它的工作原理確定,當您cd到腳本目錄,然後執行該腳本:

#!/bin/bash 
value=$(<man.txt) 
echo "$value" 

if [ "$value" == "true" ] 
then 
    echo "startedif_manthan" 
    ps -ef|grep sym |awk '{ print $2 }'|sudo xargs kill -9 
    sleep 30 
    (cd /var/www/symmetric-ds-3.1.6/bin; sudo sh ./sym --port 8082 --server) 
fi 
+0

我試過了。這是殺死進程,它不會在括號中運行腳本。 – user1597811 2013-02-14 06:49:39

+0

我明白了,bcoz腳本本身是匹配模式來殺死它本身就是自殺 – user1597811 2013-02-14 07:03:16

+1

它可能會殺死'grep sym' ...要非常小心地匹配太多的進程。我使用的一個技巧是'grep'[s] ym'';方括號表示它不會匹配自己,但會匹配'sym'過程。但我仍然擔心在其他進程中出現'sym'。 – 2013-02-14 07:23:44