2012-08-23 79 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中独角兽的路径。