yum -y install ntpdate
ntpdate pool.ntp.org
hwclock -w
crontab -e
5 22 * * 0 /usr/sbin/ntpdate pool.ntp.org
5 23 * * 0 /sbin/clock -w
错误的配置(原因在后文中解释)
crontab -e
5 22 * * 0 ntpdate pool.ntp.org
5 23 * * 0 clock -w
crontab内的基本编辑格式如下
* * * * * root run-parts command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
root表示以root用户身份来运行
基本上,cron服务的最低检测时间单位是分钟,所以cron会每分钟读取一次/etc/crontab与/var/spool/cron中的数据内容,因此,只要您编辑完/etc/crontab文件并且保存之后,crontab时设定就会自动执行。
指令形式:
01 * * * * test mail -s test test < /home/test/test/test.txt
目录形式:
*/5 * * * * root run-parts /root/runcron
建立一个/root/runcron目录,将每隔5分钟执行一次的可执行文件都写到该目录下,就可以让系统每5分钟执行一次该目录下的所有可执行文件。
如果每个流程都在同一时间启动,那么在某个时段,系统会非常的繁忙,所以这时必须分别设定。可以这样做:
1,6,11,16,21,26,31,36,41,46,51,56 * * * * root ………… // 省略号代表命令
2,7,12,17,22,27,32,37,42,47,52,57 * * * * root …………
3,8,13,18,23,28,33,38,43,48,53,58 * * * * root …………
4,9,14,19,24,29,34,39,44,49,54,59 * * * * root …………
注意,要用","分隔时,不要带有空格。如此一来,则可以将每5分钟工作的流程分别安排在不同的时刻进行。
crontab -e里的配置
5 22 * * * ntpdate pool.ntp.org
Sep 16 22:05:01 web1 CROND[10087]: (root) CMD (ntpdate pool.ntp.org >> /var/log/ntpdate.log)
Sep 16 22:05:01 web1 CROND[10086]: (root) MAIL (mailed 36 bytes of output but got status 0x004b#012)
说明mail报错。linux系统没有安装mail命令。那就是postfix服务的问题
service crond status
crond (pid 1124) 正在运行...
service postfix status # postfix有问题
master 已停
查看/var/log/maillog
Sep 16 22:05:01 dg2 postfix/sendmail[7611]: fatal: parameter inet_interfaces: no local interface found for ::1
从时间上看,确实是这个问题。问题找到了,需要修改postfix的配置
/etc/postfix/main.cf
inet_interfaces: all
inet_protocol: ipv4
/var/spool/mail/root里发现定时任务依旧没有执行成功
#
# 邮件内容头省略
#
Message-Id: <20180919052901.F34F53E02A7@dg2.localdomain>
Date: Wed, 19 Sep 2018 13:29:01 +0800 (CST)
/bin/sh: ntpdate: command not found # 此处报错
whereis ntpdate
ntpdate: /usr/sbin/ntpdate /usr/share/man/man8/ntpdate.8.gz
which ntpdate
/usr/sbin/ntpdate
问题找到了,在定时服务中,ntpdate命令要使用全路径