首页 文章

脚本工作但不通过crontab?

提问于
浏览
0

想知道是否有人知道为什么会出现以下问题,或者有任何提示在哪里查看...我可以在ssh中手动运行shell脚本,但如果我将其设置为在crontab中运行,我会遇到以下问题 .

服务器是:FreeBSD 8,我可以访问所有root权限

我有一个shell脚本(Bourne),它使用crontab在“root”权限下运行,并带有以下命令:

* * * * * /data/backups/scripts/server_log_check.sh > /data/backups/logs/cron_logs/server_log_check.sh_cron.log

“server_log_check.sh”脚本使用此命令检查“报表服务器”是否正在运行:

if ps -xauww | grep -v grep | grep java | grep www > /dev/null
            then 
                            #“reports are running, no need to try to restart it”
            Else
                            /usr/local/etc/rc.d/tomcat55 start     #start report server because it is not running
            Fi

问题发生在这一行:“ /usr/local/etc/rc.d/tomcat55 start ”,当使用crontab运行脚本时,如果我通过ssh手动运行脚本,这行代码运行没有问题,但脚本中的所有其余代码执行正常,不是这一行 . 或者,如果我将此行 /usr/local/etc/rc.d/tomcat55 start 粘贴到ssh命令提示符中,它也会运行得很好 .

我将“server_log_check.sh”所有权更改为“root”,但这没有什么区别,脚本“tomcat55”的所有权是“www” . crontab条目是在“Root”配置文件下创建的,因此,我认为运行由出租方权限(如“www”)拥有的文件没有问题 .

你有什么想法为什么cron这样做?

提前致谢

1 回答

  • 2

    尝试添加以下内容,将错误添加到日志文件中:

    * * * * * /data/backups/scripts/server_log_check.sh > /data/backups/logs/cron_logs/server_log_check.sh_cron.log 2>&1
    

    也改变这个:

    /usr/local/etc/rc.d/tomcat55 start
    

    至:

    cd /home/root
    
    nohup /usr/local/etc/rc.d/tomcat55 start &
    

    这应该在 /home/root 中创建一个 nohup.out .

相关问题