定時任務時間同步三部曲
阿新 • • 發佈:2018-11-27
定時任務時間同步三部曲
第一部分:時間同步
1.安裝 ntpdate
yum -y install ntpdate
2.時間同步國際ntp時間地址
ntpdate pool.ntp.org
hwclock -w
3.計劃任務
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
第二部分:計劃任務時間格式
1、基本格式
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使用者身份來執行
- run-parts表示後面跟著的是一個資料夾,要執行的是該資料夾下的所有指令碼
- 整數間的連字號(-)表示整數列,例如1-4意思是整數1,2,3,4
- 符號“/”指定步進設定。如0-59/2定義每兩分鐘執行一次。步進值也可用星號表示。如*/3用來執行每三個月份執行指定任務。
2、檢測時間
基本上,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
1、再檢視/var/log/cron日誌
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服務的問題
2、檢視服務執行狀態
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的配置
3、修改方法
- open
/etc/postfix/main.cf
- comment out
inet_interfaces: all
- add
inet_protocol: ipv4
4、檢視郵件資訊
/var/spool/mail/root裡發現定時任務依舊沒有執行成功
#
# 郵件內容頭省略
#
Message-Id: <20180919052901.[email protected].localdomain>
Date: Wed, 19 Sep 2018 13:29:01 +0800 (CST)
/bin/sh: ntpdate: command not found # 此處報錯
5、檢視ntpdate的路徑
whereis ntpdate
ntpdate: /usr/sbin/ntpdate /usr/share/man/man8/ntpdate.8.gz
which ntpdate
/usr/sbin/ntpdate
問題找到了,在定時服務中,ntpdate命令要使用全路徑