crond定時任務詳解
首先來了解一下chkconfig這個命令:
chkconfig命令檢查、設置系統的各種服務。這是Red Hat公司遵循GPL規則所開發的程序,它可查詢操作系統在每一個執行等級中會執行哪些系統服務,其中包括各類常駐服務。謹記chkconfig不是立即自動禁止或激活一個服務,它只是簡單的改變了符號連接。
參數:
--add:增加所指定的系統服務,讓chkconfig指令得以管理它,並同時在系統啟動的敘述文件內增加相關數據;
--del:刪除所指定的系統服務,不再由chkconfig指令管理,並同時在系統啟動的敘述文件內刪除相關數據;
--level<等級代號>:指定讀系統服務要在哪一個執行等級中開啟或關畢。
等級代號列表:
等級0表示:表示關機
等級1表示:單用戶模式
等級2表示:無網絡連接的多用戶命令行模式
等級3表示:有網絡連接的多用戶命令行模式
等級4表示:不可用
等級5表示:帶圖形界面的多用戶模式
等級6表示:重新啟動
chkconfig --list #列出所有的系統服務。
[root@learning ~]# chkconfig --list crond
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
列出系統在每個執行等級中有沒有執行crond服務
linux定時任務分為兩種:
1.系統自身定期執行的任務(系統任務調度)
比如系統日誌的輪詢、備份系統數據、清除系統緩存等,可以通過vi配置/etc/crontab這個文件,它是一個純文本文件,當然只有root能配置,修改完之後要通過/etc/init.d/crondrestart重啟crond服務
[root@learning ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # 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,f ri,sat # | | | | | # * * * * * user-name command to be executed
2.用戶執行的定時任務(用戶調度任務)
1)at:只適合執行一次就結束的突發性調度任務,依賴於服務------atd
2)anacron:適合非7*24小時開機的服務器,是開機執行的調度任務,開機後會自動檢測停機期間該執行而未執行的任務,在開機後一次性執行一遍
3)crond:一個守護進程(即後臺執行的進程),依賴於服務------crond,默認情況下每分鐘檢查系統中是否有要執行的定時任務,若有,則會根據事先定義好的規則執行這個任務,所以對於秒級的定時任務,crond自身是實現不了的,必須通過方法改進......
crond與crontab的區別:crond服務是運行的程序,而crontab是用戶用來設置定時規則的命令,是一個執行文件------/usr/bin/crontab
crondtab的語法:
參數:
-u:指定在哪個用戶下面編輯定時任務,默認不寫為當前用戶
-e:修改定時任務,即ceontab文件的內容
-l:查看定時任務,即ceontab文件的內容
-r:移除定時任務,把當前用戶的整個crontab文件刪掉,一般不用,而是直接-e,取文件裏面刪除不要的內容
-i:確認功能
crontab -l/-e操作的是/var/spool/cron中的當前用戶的crontab文件,即
crontab -u root -l/-e == cat/vi /var/spool/cron/root
當用戶創建定時任務後,對應的配置文件會存在於/var/spool/cron/中,文件名與用戶名一致
用戶的定時任務規則一般分為6列:
1.minute【0~59] hour【0~23】 day【1~31】 month【1~12】 week【0~7】 command
2.week中0和7都為周日,也可以用sun,mon,tue,wed,thu,fri,sat來代替
3.日和周盡量不要一起用
4.符號:
* | 表示任意時間都 (00 23 * * * cmd:每天23:00執行cmd) |
- | 時間範圍 |
, | 分割時段的範圍 |
/n |
每n個時間單位,前面一般加*(*/5 * * * * cmd :每個五分鐘執行一次cmd) |
擴展:
1.我們可以通過編輯 /etc/cron.deny和 /etc/cron.allow 這兩個文件控制允許或者不允許文件中的用戶使用crontab命令,/etc/cron.allow的優先級比較大,一般使用/etc/cron.deny,把不允許使用crontab命令的用戶寫進去就行啦
2.所有用戶的配置文件默認存放在/var/spool/cron/目錄中,文件名以用戶名命名
crond定時任務詳解