1. 程式人生 > >crond定時任務詳解

crond定時任務詳解

ceo 開發 單用戶 init.d 管理 deny rest fin nta

首先來了解一下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定時任務詳解