我正在尝试为Ruby应用程序编写监视程序。到目前为止,我有一个成功调用shell脚本的cron作业:
#!/bin/sh
if ps -ef | grep -v grep | grep adpc.rb ; then
exit 0
else
NOW=$(date +"%m-%d-%Y"+"%T" )
echo "$NOW - CRITIC: ADPC service is down! Trying to initialize..." >> che.log
cd lib
nohup ruby adpc.rb &
exit 0
fi
此代码从命令行正确运行,但是当从cron作业调用时,我无法使shell脚本执行Ruby脚本。
请提供任何帮助。
+x
权限。 解决方案:用完整路径替换裸“ruby”命令(ruby输出)。
感谢所有回复=)
答案 0 :(得分:1)
这通常是由不正确的环境引起的。检查创建的nohup.out
文件中的Ruby输出,并将nohup本身的stderr记录到文件中。
通过以下方式启动脚本经常解决:
#!/bin/bash
source ~/.bash_profile
source ~/.bashrc
这将确保您使用bash
而不是sh
运行,并且将设置您在init文件中配置的任何设置,例如PATH。