如何从shell脚本调用Ruby脚本?

时间:2013-10-29 20:28:37

标签: ruby shell nohup

我正在尝试为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脚本。

请提供任何帮助。

  1. Ruby文件具有+x权限。
  2. nohup.out文件为空。
  3. 解决方案:用完整路径替换裸“ruby”命令(ruby输出)。

    感谢所有回复=)

1 个答案:

答案 0 :(得分:1)

这通常是由不正确的环境引起的。检查创建的nohup.out文件中的Ruby输出,并将nohup本身的stderr记录到文件中。

通过以下方式启动脚本经常解决:

#!/bin/bash
source ~/.bash_profile
source ~/.bashrc

这将确保您使用bash而不是sh运行,并且将设置您在init文件中配置的任何设置,例如PATH。