脚本工作但不通过crontab?

时间:2011-10-04 15:33:29

标签: bash shell scripting crontab

想知道是否有人知道为什么会出现以下问题,或者有任何提示在哪里查看...我可以在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 个答案:

答案 0 :(得分: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 &

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