2012-08-23 111 views
0

試圖讓monit監視我們編寫的自定義守護進程,它只是不能用bash stop/start腳本工作。如果我從命令行手工運行停止/啓動腳本,它每次都能100%完美工作。如果它通過monit執行,則變量是空的。從那裏我有問題的腳本摘錄:當此獲取與monit的執行Monit丟失bash變量?

GETPID=$(ps aux | grep unicorn | grep master | cut -d" " -f7) 
echo "getPID : $GETPID"            
echo $GETPID > $PIDFILE 

$GETPID變量爲空白。它手工完美地工作。

任何人有任何想法?

+0

如果你添加一個shebang行'#!/ bin/sh'作爲文件的第一行,它有幫助嗎? – tripleee

+0

得到#!/ bin/bash作爲第一行,上面的代碼實際上只是腳本的摘錄。 – daemonza

+0

如果您使用'awk'{print $ 2}'而不是'cut',它會有幫助嗎,因爲'cut'對於空白中的變化是脆弱的嗎? –

回答

0

一般來說,解析psls的輸出並不是一個好主意。

您可以在文件系統proc使用find寫一個簡單的pgrep

# find /proc/ -maxdepth 2 -type l -name exe -lname '/bin/bash' -printf '%h\n' 2>/dev/null | sed 's/.*\///' 
3580 
3595 
9504 
9869 
10054 
10156 
10193 
# pgrep bash 
3580 
3595 
9504 
9869 
10054 
10156 
10193 
0

感謝您的幫助。問題是rvm install中獨角獸的路徑。