文章目錄
- 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 - 系統定時任務周期:
每一天控制定時任務目錄:/etc/cron.daily00:00-23:59 - 系統定時任務周期:
每一周控制定時任務目錄:/etc/cron.weekly7天 - 系統定時任務周期:
每個月控制定時任務目錄:/etc/cron.monthly30 28 31
- 系統定時任務周期:
-
用戶定時任務
- 用戶定時任務查看:
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服務開啟
[root@hbs/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. [root@hbs/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定時任務撰寫格式
-
查看撰寫格式
[root@hbs/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 分 時 日 月 周 [root@hbs/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 ====================================== [root@hbs~]#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.檢查定時任務日志檔案 [root@hbs~]# 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點鐘,輸出時間到指定檔案內 [root@hbs~]# echo 'love you' >/dev/null [root@hbs~]# 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? [root@hbs~]# 洗掉已經設定的任務 atq : 查看定時任務 atrm 8 :洗掉定時任務 -


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294945.html
標籤:其他
