Linux實戰教學筆記11:linux定時任務

第十一節 linux定時任務

標籤(空格分隔): Linux實戰教學筆記linux

---更多資料點我查看數據庫

1.1 定時任務Crond介紹

Crond是linux系統中用來按期執行命令/腳本或指定程序任務的一種服務或軟件,通常狀況下,咱們安裝完Centos5/6 linux操做系統以後,默認便會啓動Crond任務調度服務,在咱們前面的系統安裝及開機啓動優化的設置中,咱們也設置保留了Crond開機自啓動,Crond服務會按期(默認每分鐘檢查一次)檢查系統中是否有要執行的任務工做,若是有,便會根據其預先設定的定時任務規則自動執行該定時任務工做,這個crond定時任務服務就至關於咱們平時早起使用的鬧鐘同樣。vim

1.2 開始作linux開機自啓動服務優化

屏幕快照 2017-02-05 上午11.31.34.png-56.8kB

必須最低保留的啓動服務:windows

crond:定時任務服務
network:網絡服務
rsyslog:日誌服務
sshd:遠程連接服務
sysstat:系統監控服務(涉及一系列監控工具)緩存

QQ20170205-122117@2x.png-143.4kB

1.2.1小結

  • 經常使用服務,必須開機啓動的服務crond,sshd,network,rsyslog,sysstat
  • 命令拼接(awk/sed)==>品良==>循環

1.2.2 爲何要使用Crond定時任務?

  • 爲何要使用定時任務呢?
  • 咱們舉個例子說明:例如,咱們的數據庫或者代碼程序須要天天晚上0點作一次全備份,這樣天天夜裏都須要執行的週期性工做,若是要讓人操做的話,就得天天半夜爬起來,而後登陸系統執行任務,執行完接着睡覺。另外,執行任務的過程也可能持續幾個小時,這樣一來,一個晚上咱們就都不用睡覺了,這樣顯然是不行的。那麼有什麼辦法來解決這個週期性的執行任務需求呢?
  • 這就是linux系統的定時任務Crond,這至關於咱們平時生活中的鬧鐘功能,天天晚上提早設置定時,早晨按時叫醒你。

1.2.3 linux系統的定時任務

linux系統中定時任務調度的工做能夠分爲如下兩種狀況:
,linux系統自身按期執行的任務工做:系統週期性自行執行的任務工做,如輪詢系統日誌,備份系統數據,清理系統緩存等,這些任務無需咱們人爲干預。ruby

[root@chensiqi1 ~]# ls -l /var/log/messages* #系統的日誌 -rw-------. 1 root root 4680 Feb 4 07:41 /var/log/messages -rw-------. 1 root root 191470 Dec 25 05:44 /var/log/messages-20161225 -rw-------. 1 root root 1492005 Jan 2 06:51 /var/log/messages-20170102 -rw-------. 1 root root 633737 Jan 8 08:02 /var/log/messages-20170108 -rw-------. 1 root root 1594144 Feb 4 04:25 /var/log/messages-20170204 [root@chensiqi1 ~]# 
[root@chensiqi1 ~]# ls -l /var/log/secure* #用戶登陸日誌 -rw-------. 1 root root 872 Feb 4 07:13 /var/log/secure -rw-------. 1 root root 5254 Dec 25 05:44 /var/log/secure-20161225 -rw-------. 1 root root 64822 Jan 2 06:27 /var/log/secure-20170102 -rw-------. 1 root root 14187 Jan 8 07:22 /var/log/secure-20170108 -rw-------. 1 root root 13540 Jan 12 00:17 /var/log/secure-20170204 [root@chensiqi1 ~]# 

,用戶執行的任務工做:某個用戶或系統管理員按期要作的任務工做,例如每隔5分鐘和互聯網上時間服務器進行時間同步(這是安裝系統基礎優化部分的內容),天天晚上0點備份網站站點數據及數據庫數據,通常這些工做須要由每一個運維自行設置才行。服務器

例如:服務器時間同步markdown

[root@chensiqi1 ~]# crontab -l */5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1 [root@chensiqi1 ~]# 

用戶執行的任務工做,也就是咱們運維管理人員執行的任務工做,所以,這個用戶執行的任務是咱們今天討論的重點網絡

1.2.4 linux系統下定時任務軟件的種類

嚴格的說,linux系統下的定時任務軟件還真很多,例如:at,crontab,anacron
假如:某天晚上須要處理一個任務,僅僅是這一天的晚上,屬於突發性的工做任務。要執行at命令,還須要啓動一個名爲atd的服務才行,在實際工做中,還真沒碰到須要用到它的時候。所以,建議你們不要深刻研究了,到此咱們講解到這裏爲止便可。運維

屏幕快照 2017-02-05 下午1.12.53.png-27.4kB

  • crontab(命令):正如前面所說的這個命令能夠週期性的執行任務工做,例如:每五分鐘作一次服務器時間同步。要執行crontab這個命令,也須要啓動一個服務crond才行,這個crontab命令是生產工做中最經常使用到的命令,請你們務必掌握。

1,開機自啓動crond服務

[root@chensiqi1 ~]# chkconfig --list | grep crond crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@chensiqi1 ~]# 

2,此時此刻服務的狀態(查看,開啓,關閉)

[root@chensiqi1 ~]# /etc/init.d/crond status crond (pid 1139) is running... [root@chensiqi1 ~]# 

/etc/init.d 服務啓動命令(腳本)
3,如何查看進程
ps -ef | grep crond

  • anacron:這個命令主要用於非7*24小時開機的服務器準備的,anacron並不能指定具體時間執行任務工做,而是以天爲週期或者在系統每次開機後執行的任務工做。
    它會檢測服務器停機期間應該執行,可是並無進行的任務工做,並將該任務執行一遍。

小結提示:
1,咱們所說的crond服務是運行的程序,而crontab是用來管理用戶的定時任務(規則)的命令
2,crond服務是企業生產工做中經常使用的重要服務,at和anacron不多用,能夠忽略
3,幾乎每一個服務器都會用到crond服務
4,上千服務器能夠開發分佈式定時任務項目方案(批量管理ansible/saltstack)

1.3 定時任務Crond使用說明

1.3.1 指令語法

crontab [-u user] { -l | -e | -r | -i }
查看系統幫助
man crontab

[root@chensiqi1 ~]# crontab --help crontab: invalid option -- '-' crontab: usage error: unrecognized option usage: crontab [-u user] file crontab [-u user] [ -e | -l | -r ] (default operation is replace, per 1003.2) -e (edit user's crontab) -l (list user's crontab) -r (delete user's crontab) -i (prompt before deleting user's crontab) -s (selinux context) [root@chensiqi1 ~]# 

crontab -l 查看當前用戶的定時任務配置

[root@chensiqi1 ~]# crontab -l */5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1

crontab -e 進入當前用戶的定時任務vim編輯模式
屏幕快照 2017-02-05 下午1.45.01.png-53.4kB

crontab -u 用戶名 -l 查看指定用戶的定時任務設置

[root@chensiqi1 ~]# crontab -u root -l */5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1 [root@chensiqi1 ~]# crontab -u chensiqi -l no crontab for chensiqi

1.3.2 指令說明

經過crontab咱們能夠在固定的間隔時間執行指定的系統指令或script腳本。時間間隔的單位能夠是分鐘,小時,日,月,周及以上的任意組合(注意:日和周不要組合)。crond服務經過crontab命令能夠很容易的實現週期性的日誌分析或數據備份等企業運維場景工做

QQ20170205-135323@2x.png-48.1kB

1.3.3 使用者權限及定時任務文件

文件 說明
/etc/cron.deny(拒絕) 該文件中所列用戶不容許使用crontab
/etc/cron.allow(容許) 該文件優先級高於cron.deny(默認不存在,通常不用)
/var/spool/cron/ 全部用戶crontab配置文件默認都存在此目錄,文件名以用戶名命名
[root@chensiqi1 ~]# cat /etc/cron.deny chensiqi [root@chensiqi1 ~]# su - chensiqi [chensiqi@chensiqi1 ~]$ crontab -l You (chensiqi) are not allowed to use this program (crontab) See crontab(1) for more information [chensiqi@chensiqi1 ~]$ crontab -e You (chensiqi) are not allowed to use this program (crontab) See crontab(1) for more information
[root@chensiqi1 ~]# ls /var/spool/cron/ root #默認是沒有的,只有建立了定時任務纔有 [root@chensiqi1 ~]# cat /var/spool/cron/root */5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1

1.3.4 指令選項說明含義表

參數 含義
-l(字母) 查看crontab文件內容
-e 編輯crontab文件內容
-r 刪除crontab文件內容(用的不多)
-u user 指定使用的用戶執行任務

特別強調:-r參數在生產中不多用,沒什麼特殊需求必需要用-e進入編輯便可

補充:

crontab { -l | -e } 實際上就是在操做/var/spool/cron/當前用戶這樣的文件
使用crontab命令的優勢:
1,crontab能夠檢查語法
2,輸入方便

1.3.5 定時任務指令的使用格式

默認狀況下,當用戶創建定時任務規則後,該規則記錄對應的配置文件會存在於/var/spool/cron中,其crontab配置文件對應的文件名與登陸的用戶名一致,如:root用戶的定時任務配置文件爲/var/spool/cron/root
Crontab定時任務的書寫格式很簡單,用戶的定時任務規則通常分爲6個段(每一個段經過空格來分隔,系統的定時任務爲/etc/crontab,分爲7個段,空格來分隔),前五段爲時間的設定段,第六段爲所要執行的命令或腳本任務段
屏幕快照 2017-02-05 下午2.28.43.png-423.7kB

用戶定時任務實例:

01 * * * * cmd #每小時的01分鐘執行
02 04 * * * cmd #天天4點的02分鐘執行
22 14 * * 00 cmd #每週日的14點22分執行
42 04 01 * * cmd #每個月1日的4點42分執行
提示:
1,cmd爲要執行的命令或腳本,例如:/bin/sh /server/scripts/chensiqi.sh
2,每一個列之間必需要有一個空格。多個空格能夠麼?本身實踐

1.3.6 crontab 語法格式中時間段的含義以下表

含義
第一段 表明分鐘
第二段 表明小時
第三段 表明日,天
第四段 表明月份
第五段 表明星期,周幾

提示:時間記憶口訣:分時日月周。取值範圍記憶:正常日期時間範圍,小學生都會的了

1.3.7 crontab 語法格式中特殊符號含義以下表

特殊符號 含義
* *號,表示任意時間都,實際就是「每」的意思
- 減號表示分隔符,表示一個時間範圍,區間段,如17-19點,例如:天天的17,18,19點的00分執行任務。00 17-19 * * * cmd
逗號,表示分隔時段的意思例如天天的5點10點00分執行任務,00 5,10 * * * cmd
/n n表明數字,即「每隔n單位時間」,例如:每10分鐘執行一次任務能夠寫成/10 * * * cmd,其中,/10,的範圍是0-59,所以也能夠寫成0-59/10

1.3.8 學習畫圖來表達說明(億圖)

屏幕快照 2017-02-05 下午3.49.44.png-363.9kB

強調:這是學習態度的體現,這種態度極其重要,不要單純理解技術,多結合畫圖,案例理解原理,記一次好久都忘不掉。
要學好linux運維請從排版畫圖開始

金牌IT職業再教育培訓機構,歡迎來校資源。QQ:215379068
相關文章
相關標籤/搜索