1
與跟隨着的代碼檢查如果一個進程正在運行,如果沒有,使用cron
#!/bin/bash
ps -aux | grep sidekiq > /dev/null
if [ $? -eq 0 ]; then
echo "Process is running."
else
echo "Process is not running."
fi
要檢查是否sidekiq進程正在運行或不,我創建restart.sh重新啓動它。我會把這個腳本放在cron中,每天運行,所以如果sidekiq沒有運行,它會自動啓動。
我的問題是,與
ps -aux | grep sidekiq
即使進程沒有運行,它顯示
myname 27906 0.0 0.0 10432 668 pts/0 S+ 22:48 0:00 grep --color=auto sidekiq
,而不是什麼都沒有。即使進程沒有運行,它也會以grep計數,因此它顯示爲「sidekiq」進程正在運行。如何不計算這個結果?我相信我必須使用awk,但我不確定如何在此處使用它以獲得更好的過濾效果。
嗯。很好的觸摸:)我猜測該操作已經找出了問題的根源,就是'ps -aux |'這一行grep sidekiq>/dev/null'在他的腳本..特別我喜歡第二個解決方案,這是臨牀。 – sjsam
@inian - grep -v grep完美運行,現在腳本正在運行。即使進程正在運行,當我在終端中運行時,pgrep sidekiq也不會給出任何結果。可能是因爲sidekiq的作用方式? – iCyborg
有沒有必要重定向到'/ dev/null'。只需使用'-q'選項,即可使用'grep'或'pgrep'。 – ghoti