问题描述
|
如果我从腻子(以root用户身份)手动运行以下脚本,则服务会重新启动没问题
手动命令
sh /home/auser/server/reService.sh >> /var/log/reService.log
但是,如果将相同的脚本安排为cronjob,则也要在root下:
crontab命令
00 07 * * * /home/auser/server/reService.sh 2>&1 >> /var/log/reService.log
那么'service myService restart \'服务不会成功执行:服务不会重新启动,并且与手动日志相比,计划日志中没有命令输出。我还可以告诉您,如果计划了重新启动行,则什么也不会执行。
为什么我在通过crontab时会失去一些特权?我如何成功安排myService的重启?
谢谢你。
reService.sh
#!/bin/bash
clear
echo \"=============================================================================\"
echo \"Daily restarting of my service\"
date
echo \"=============================================================================\"
service myService restart
exit 0
手动记录
[H [J=============================================================================
Daily restarting of my service
Thu May 19 04:51:12 EDT 2011
=============================================================================
Stopping myService ..done
Starting myService ..done
预定日志
=============================================================================
Daily restarting of my service
Thu May 19 07:00:02 EDT 2011
=============================================================================
解决方法
在您的手动示例中使用ѭ5表示该脚本没有执行权限。尝试在crontab中进行设置或以相同方式调用sh(我更喜欢前者)。
编辑:好的,这不是权限。接下来要看的是$ PATH;将其回显到日志文件并进行比较。
EDIT2:如果PATH是问题所在,则只需在crontab中进行设置即可:
PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/bin/:/usr/local/sbin:/usr/bin/X11:/usr/openwin/bin:/usr/java/bin:/root/bin
00 07 * * * /home/auser/server/reService.sh 2>&1 >> /var/log/reService.log