我寫了一個shell腳本來檢查一個服務檔案的狀態,如果我運行這個腳本,就會得到一個錯誤。
#! /bin/sh
SERVICE = myApp
while(true)
do(true)
if ! ps -ef | grep -i $SERVICE > /dev/null
then nohup /full_path/runMyApp &
fi
睡眠10
done
在這里,我得到的錯誤如下:
嘗試grep [OPTION]... pattern[FILE]... nohup:運行命令'full_path/runMyApp'失敗:沒有這樣的檔案或目錄
uj5u.com熱心網友回復:
你的grep命令失敗了,在你給的路徑中沒有找到myApp。
你腳本中的問題/修正:
你的腳本中的問題/修正:
你的腳本中的問題/修正
#!和/bin/sh之間加一個空格。
=符號周圍有空格(這會導致你的grep失敗)。grep命令中加引號,以防名稱中有空格。myApp路徑的和之前有一個/。看起來你可能漏掉了上面尾部的/。grep 行程本身,否則你將總是看到一些正在運行的行程,并認為你的服務已經啟動。
while中的括號是不需要的,因為這不是C語言。在sh中,它意味著你在子殼中運行true命令。grep有一個引數-q,它使它什么都不輸出。這比重定向到/dev/null更好。把它放在一起:
#!
SERVICE="myApp"。
while true
do
if ! ps -ef | grep -v grep | grep -qi "$SERVICE"!
then nohup "/full_path/$SERVICE" &
fi
睡眠10
done
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/307705.html
標籤:
