文章目錄
- Centos 7 定時服務詳解介紹
-
- 1.定時任務概念
-
- 01.定時任務作用
- 02.定時任務分類
- 03.定時任務實作方式
- 2.定時任務實踐應用
-
- 01.定時任務 實驗環境
- 02.定時任務 配置方法
-
- 2.1定時任務相關檔案
- 2.2定時任務編寫格式
- 2.3 編寫步驟
- 2.4定時任務編寫注意事項:(規範)
- 總結
Centos 7 定時服務詳解介紹
在企業中,存在很多資料需要備份,那麼我們如何讓這些資料,每天晚上23:59 自動備份呢?
今天呢,我結合部分實踐案列,分享一篇關于定時任務的知識點。
Linux下面有
和
atd
兩種計劃任務,其中,
crond
atd服務使用的at指令隻能執行一次
,而crond服務使用的crontab定義的指令,是循環作用的,是以crond才符合我們的要求。
放棄可以找到一萬個理由,堅持隻需一個信念
1.定時任務概念
01.定時任務作用
- 自動 完成操作指令
- 定時備份系統資料資訊
02.定時任務分類
- 定時任務軟體
- cronie:
預設系統自帶定時服務crond(crontab)
- atd:
,隻運作一次,一次性定時任務需要安裝 at指令(yum -y install at)
- anacron:
非7*24小時運作的伺服器
- cronie:
03.定時任務實作方式
- 系統定時任務(
),系統自帶的,不靈活特殊的幾個目錄
- 系統定時任務周期:
每小時
控制定時任務目
錄:
/etc/cron.hourly
- 系統定時任務周期:
控制定時任務目錄:每一天
00:00-23:59/etc/cron.daily
- 系統定時任務周期:
控制定時任務目錄:每一周
7天/etc/cron.weekly
- 系統定時任務周期:
控制定時任務目錄:每個月
30 28 31/etc/cron.monthly
- 系統定時任務周期:
- 使用者定時任務
- 使用者定時任務檢視:
crontrabl -l(list) ----檢視定時任務資訊
- 使用者定時任務編輯:
crontab -e (edit) ----編輯定時任務資訊
- 定時任務配置檔案:
/var/spool/cron/root ---- root檔案表示root 使用者設定的定時任務
- 使用者定時任務檢視:
- 常見提示資訊
-
:相應使用者沒有編輯定時任務no crontab for root
-
:定時任務編輯錯誤是否繼續Do you want to retry the same edit
-
2.定時任務實踐應用
01.定時任務 實驗環境
系統版本 | 系統ip位址 |
---|---|
Centos 7.4 | 192.168.10.11 |
- 確定crond服務開啟
[[email protected]/tmp]# systemctl status crond crond.service - Command Scheduler Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2021-08-17 15:56:50 CST; 4h 58min ago Main PID: 23739 (crond) CGroup: /system.slice/crond.service └─23739 /usr/sbin/crond -n Aug 17 15:56:50 hbs systemd[1]: Started Command ... Aug 17 15:56:50 hbs systemd[1]: Starting Command... Aug 17 15:56:50 hbs crond[23739]: (CRON) INFO (R... Aug 17 15:56:50 hbs crond[23739]: (CRON) INFO (r... Aug 17 15:56:50 hbs crond[23739]: (CRON) INFO (@... Hint: Some lines were ellipsized, use -l to show in full. [[email protected]/tmp]#
- 相關啟動指令
Centos 6 service crond start //啟動服務 service crond stop //關閉服務 service crond restart //重新開機服務 service crond reload //重新載入配置 service crond status //檢視服務狀态 Centos 7 systemctl stop crond //關閉 systemctl start crond //開啟 systemctl reload crond //重新加載 systemctl restart crond //重新開機
02.定時任務 配置方法
2.1定時任務相關檔案
- 定時任務 服務配置檔案目錄:
/var/spool/cron
- 定時任務 運作記錄日志檔案:
/var/log/cron
- 定時任務 禁止使用者運作名單:
/etc/cron.deny
2.2定時任務編寫格式
- 檢視編寫格式
[[email protected]/tmp]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 分 時 日 月 周 [[email protected]/tmp]#
- 寫法:
1.用數值表示 時間資訊 00 02 * * * 備份檔案 2.利用特殊符号表示時間資訊 * * * * * 備份檔案 /分鐘 /小時 /天 /月 /周 ========================================= PS:定時任務最短執行的周期為 每分鐘 */5 */ 6 */3 */1 */2 每隔5分鐘 每隔6小時 每隔3日 每隔1月 每隔2周 ========================================= 其它 寫法: 01-05 02 * * * 每2日的01、02、03、04、05 執行一遍 指定不連續的時間範圍: 00 14,20 * * * * 每天14點,20點執行一次
- 補充說明
00/10 01,03 * * * 每天1點和3點的時候 每隔 10分鐘,執行一次 30/10 01,03 * * * 每天1點和3點的時候 , 從30分鐘開始,每隔 10分鐘,執行一次
2.3 編寫步驟
- 編寫步驟
每天淩晨兩點備份 /data目錄到 /backup 第一個曆程: 寫上時間資訊 00 02 * * * 第二個曆程: 寫上完成任務的具體指令 cp -a /data /backup 第三個曆程: 編寫定時任務 crontab -e 00 02 * * * cp -a /data /backup ====================================== [[email protected]~]#crontab -e 00 02 * * * cp -a /data /backup
2.4定時任務編寫注意事項:(規範)
- 編寫定時任務要有注釋說明
- 編寫定時任務路徑資訊盡量使用絕對路徑
- 編寫定時任務指令需要采用絕對路徑執行 /usr/sbin/useradd
指令執行成功條件: useradd ---> $PATH ---> /sbin/useradd ---> 指令執行成功 定時任務執行時,識别的PATH資訊隻有: /usr/bin:/bin useradd指令--->usr/sbin/useradd 是以,編寫要寫絕對路徑 useradd指令--->usr/sbin/useradd
- 編寫定時任務時,可以将輸出到螢幕上的資訊儲存到黑洞中,避免占用磁盤空間
sh test.sh &>/dev/null
- 編寫定時任務, 盡量不要産生螢幕輸出資訊
tar zcvf /backup/data.tar.gz /data 有資訊輸出 tar zcf /backup/data.tar.gz ./data 沒有資訊輸出
- 當需要多個指令完成一個定時任務需求時,可以利用腳本編寫定時
vim backup.sh cp -a /data /backup tar zcvf /backup/data.tar.gz /data crontab -e # xxxxx * * * * * /bin/sh /server/scripts/backup.sh &>/dev/null
總結
- 對定時任務排查的方法
1.檢查是否有定時任務配置檔案 2.檢查定時任務日志檔案 [[email protected]~]# tail -f /var/log/cron Aug 17 21:27:49 hbs crontab[26501]: PAM pam_end: NULL pam handle passed Aug 17 21:39:27 hbs crontab[26577]: (root) END EDIT (root) Aug 17 21:39:27 hbs crontab[26577]: PAM pam_end: NULL pam handle passed Aug 17 21:40:58 hbs crontab[26595]: (hbs) END EDIT (hbs) Aug 17 21:41:01 hbs CROND[26598]: (hbs) CMD (systemctl status crond) 執行時間 主機名 編輯定時任務 以什麼使用者編輯或執行定時任務/幹了什麼事情 執行定時任務
- 定時任務還有atd 定時任務
at指令是一次性定時計劃任務,執行完一個任務後不再執行此任務了。 at -f /tmp/date now +1 minutes #設定1分鐘後執行/tmp/date檔案中的内容 明天17點鐘,輸出時間到指定檔案内 [[email protected]~]# echo 'love you' >/dev/null [[email protected]~]# at 17:00 tomorrow at> echo 'love you' >/dev/null at> <EOT> job 8 at Thu Aug 19 17:00:00 2021 Can't open /var/run/atd.pid to signal atd. No atd running? [[email protected]~]# 删除已經設定的任務 atq : 檢視定時任務 atrm 8 :删除定時任務