首頁 > 軟體

Linux中定時任務cron和crontab命令設定規則

2020-06-16 16:39:04

1.Corntab簡介

  Linux 系統則是由 cron (crond) 這個系統服務來控制的。Linux 系統上面原本就有非常多的計劃性工作,因此這個系統服務是預設啟動的。另外,由於使用者自己也可以設定計劃任務,所以,Linux系統也提供了使用者控制計劃任務的命令:crontab命令。

  Linux中有分為系統任務和使用者任務,系統任務是針對系統周期性的進行的任務,對於這些在進行修改的時候需要謹慎,在使用者任務中是為了避免使用者在修改的時候出現錯誤,從而影響系統而設定的,提供進行修改的地方。

  /ect/corntab檔案是系統任務,在改檔案進行的修改會在所以使用者下生效,使用者許可權檔案(使用者任務檔案):/etc/cron.deny(該檔案中所列使用者不允許使用crontab命令);/etc/cron.allow(該檔案中所列使用者允許使用crontab命令);/var/spool/cron/(所有使用者crontab檔案存放的目錄,以使用者名稱命名)

2、安裝crontab:

正常都是已經安裝的,如果沒有使用yum安裝

  yum install crontabs

服務操作說明:

  systemctl start crond.service      //啟動服務

  systemctl stop crond.service    //關閉服務

  systemctl restart crond.service  //重新啟動服務

  systemctl reload crond.service  //重新載入設定

  systemctl status crond.service  //檢視服務

檢視crontab服務是否已設定為開機啟動,執行命令:

  ntsysv

在選項中前面有x的都是表示已經加入開機自動啟動。

加入開機自動啟動:

  chkconfig –level 35 crond on

3、crontab檔案寫法

/etc/crontab開頭都是:

  SHELL=/bin/bash

  PATH=/sbin:/bin:/usr/sbin:/usr/bin

  MAILTO=HOME=root

在檔案中會有一段注釋大概的意思就說如下圖:

 

根據自己的需要在檔案下方寫下需要進行定時的功能就可以。例如:我在檔案中加入:

     * */1 * * * root /etc/cron.hourly/check-core-dir

意思是在每個小時定期執行存放在/etc/cron.hourly中的check-core-dir這個指令碼,其他的類似的做法,當然也可以執行第幾個小時進行執行,只需要把/去掉。

cron機制
        cron可以讓系統在指定的時間,去執行某個指定的工作,我們可以使用crontab指令來管理cron機制

crontab引數
        -u:這個引數可以讓我們去編輯其他人的crontab,如果沒有加上這個引數的話就會開啟自己的crontab
        crontab -u 使用者名稱

        -l:可以列出crontab的內容

        -r:可以移除crontab

        -e:可以使用系統預設的編輯器,開啟crontab

        -i:可以移除crontab,會跳出系統資訊讓你再次確定是否移除crontab

 crontab時間格式說明
        minute(分)可以設定0-59分

        hour(小時)可以設定0-23小時

        day of month(日期)可以設定1-31號

        month(月份):可以設定1-12月

        day of week(星期):可以設定0-7星期幾,其中0和7都代表星期天,或者我們也可以使用名稱來表示星期天到星期一,例如sun表示星期天,mon表示星期一等等

crontab時間格式範例
    1-3表示123
    1-9/2表示13579

 crontab範例
    每五分鐘執行  */5 * * * *

    每小時執行    0 * * * *

    每天執行        0 0 * * *

    每週執行      0 0 * * 0

    每月執行        0 0 1 * *

    每年執行      0 0 1 1 *

設定cron的許可權
        /etc/cron.allow
        /etc/cron.deny

        系統首先判斷是否有cron.allow這個檔案,如果有這個檔案的話,系統會判斷這個使用者有沒有在cron.allow的名單裡面,如果在名單裡面的話,就可以使用cron機制。如果這個使用者沒有在cron.allow名單裡面的話,就不能使用cron機制。

        如果系統裡面沒有cron.allow這個檔案的話,系統會再判斷是否有cron.deny這個檔案,如果有cron.deny這個檔案的話,就會判斷這個使用者有沒有在cron.deny這個名單裡面,如果這個使用者在cron.deny名單裡面的話,將不能使用cron機制。如果這個使用者沒有在cron.deny這個名單裡面的話就可以使用cron機制。

        如果系統裡這兩個檔案都沒有的話,就可以使用cron機制

 介紹crontab檔案
        /etc/crontab
        在這個檔案裡並沒有記錄系統要執行哪些工作,而是記錄了下面四個子目錄。
        /etc/cron.hourly
        /etc/cron.daily
        /etc/cron.weekly
        /etc/cron.monthly
        這些子目錄裡存放了一些指令碼,到了crontab所指定的時間點,系統就會去執行這些子目錄裡的指令碼。


IT145.com E-mail:sddin#qq.com