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