2013-02-18 60 views
0
#!/bin/bash 
value=$(</var/www/sym_monitor/manthan.txt) 


if [ "$value" == "true" ]; then 

    ps -ef|grep sym |grep -v grep |awk '{ print $2 }'|sudo xargs kill -9; 


(cd /var/www/symmetric-ds-3.1.6/bin;sudo ./sym --port 8082 --server); 

fi 

當我手動運行這個腳本它運行良好,但是當我在cron裏面運行這個腳本時,它給出了以下錯誤。shell腳本錯誤[:12:意外操作符?

[:12:意外的運營商

任何想法爲什麼?有什麼建議麼?

+0

這種運行流程的方法通常是一個非常糟糕的主意。你應該使用一個合適的過程監控系統(Upstart,Runit,systemd,launchd等等 - 是的,systemd在2013年不可用和穩定,但其他的都是),而這些都可以更可靠地重新啓動服務沒有潛在的失誤,grep和殺死錯誤的過程,並立即通知當過程中死亡。 – 2017-09-25 22:17:49

回答

3

您沒有在bash中運行腳本,但在不同的shell中運行。對於符合POSIX的外殼,請使用單個=而不是==

+0

是的,我在cron中使用bin/sh。現在我改變它爲bin/bash,但它沒有采取-eq,所以我使用相同的==我試圖手動運行它工作正常。讓我檢查一下當cron完成運行時,我會看看它是否工作。 – user1597811 2013-02-18 10:48:22

+0

現在還有其他問題。這個腳本正確執行它正在殺死進程(ps -ef | grep sym | grep -v grep | awk'{print $ 2}'| sudo xargs kill -9;)但是下一個命令沒有執行,也沒有錯誤消息?任何想法? – user1597811 2013-02-18 11:05:48

+0

對此有任何意見嗎? – user1597811 2013-02-18 11:46:27