2021-05-12 14:32:11
Linux中定時任務cron和crontab命令設定規則
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所指定的時間點,系統就會去執行這些子目錄裡的指令碼。
相關文章