同步时钟脚本在crontab中遇到的问题

来源:互联网 发布:win7 apache php 配置 编辑:程序博客网 时间:2024/06/06 02:05

时钟同步应该是集群维护中必需的事项之一了,可用下列脚本clock_sync.sh来实现:

#!/bin/bashservice ntpd stopntpdate 192.168.0.191service ntpd startchkconfig ntpd on
该脚本手动执行正常。然后将其加入crontab:

0 * * * * clock_sync.sh
假设上述操作都在root用户下完成。为了检查效果,查看/var/spool/mail/root文件,发现了如下关键字:

X-Cron-Env: <SHELL=/bin/sh>X-Cron-Env: <HOME=/root>X-Cron-Env: <PATH=/usr/bin:/bin>clock_sync.sh: line 2: service: command not foundclock_sync.sh: line 3: ntpdate: command not foundclock_sync.sh: line 4: service: command not foundclock_sync.sh: line 5: chkconfig: command not found
看来脚本确实执行了,但是为什么找不到service等四个命令呢?
使用which命令查看一下,发现service等四个命令的可执行程序都在/sbin或/usr/sbin目录下。原因清楚了:crontab执行时的命令搜索路径为<PATH=/usr/bin:/bin>,service等四个命令不在其搜索目录下,所以报错“command not found”。
解决方案为以下两者之一:
1. 修改/var/spool/cron/root为:

#!/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/bin0 * * * * clock_sync.sh
2. 在/etc/crontab文件的最后添加:0 * * * * clock_sync.sh

BTW:crontab相关知识
cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表。
cron有两种配置文件:一个针对系统任务的全局配置文件(/etc/crontab);一组针对单个用户的配置文件(/var/spool/cron/username),这是采用crontab命令生成的。定时任务配置到任意一个中都可以。


0 0
原创粉丝点击