0

我正在尝试为 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 文件为空。

解决方案:用完整路径(ruby 输出)替换裸露的“ruby”命令。

感谢大家的回复=)

4

1 回答 1

1

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

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

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

这将确保您使用bash而不是运行sh,并且您在初始化文件中配置的任何设置(如 PATH)都将被设置。

于 2013-10-29T20:52:03.080 回答