標籤:意義 bash mail config login 表示 service 時間設定 level
一、簡介
1、 Linux中有許多周期性執行的任務,這些任務由cron守護進程完成,因此cron這個系統服務是預設啟動的。
2、Linux中調度任務分為兩類:系統任務調度和使用者任務調度,系統任務調度即系統周期性所要執行的工作。/etc/crontab檔案是系統任務調度的設定檔。
3、使用者任務調度就是使用者要周期性執行的工作,可用crontab命令定製自己的計劃任務,使用者定義的計劃任務都儲存在/var/spool/cron目錄中,檔案名稱與使用者名稱一致
4、使用者任務調度使用者許可權:
1)、/etc/cron.deny , 檔案所列使用者不允許使用crontab命令
2)、/etc/cron.allow , 檔案所列使用者允許使用crontab命令
3)、/var/spool/cron/ , 所有使用者crontab檔案存放的目錄,檔案名稱同使用者名稱
二、crontab 定時任務命令詳解
cat /etc/crontab
SHELL=/bin/bash #SHELL變數指定系統使用哪種shell,這裡使用bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin #PATH變數指定系統執行命令的路徑
MAILTO=root #MAILTO變數指定任務執行資訊發送給誰
HOME=/ #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,fri,sat
# | | | | |
# * * * * * user-name command to be executed
1、前5個欄位為時間設定段,第6個欄位是所需執行的命令段
minute hour day month week command
分鐘 小時 日期 月份 星期幾 要執行的命令或指令碼
每個欄位可使用的特殊字元代表意義:
* 表示所有可能的值,如day為*,則表示在滿足其他欄位制約的條件後每天都執行該命令或指令碼;
, 可用逗號隔開的值指定一個列表範圍
- 可以用整數之間的中杠表示整數範圍
/ 用來指定時間的間隔,如"0-23/2"表示在0點~23點,每兩小時執行一次,如hour欄位"*/3"表示每3小時執行一次
2、crond服務
安裝crond命令:yum install crontabs
服務作業命令:
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
/sbin/service crond status //啟動服務
查看開機啟動服務:ntsysv
加入開機啟動:chkconfig -level 35 crond on
3、crontab命令詳解
crontab命令可以在指定時間執行指定的命令或者shell指令碼。
crontab --help
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)
-u user : 設定某個使用者的crontab服務,如"-u root" 表示設定root使用者的crontab服務
-e : 編輯某個使用者的crontab檔案,不使用-u指定則表示編輯目前使用者的crontab檔案,下同
-l : 顯示某個使用者的crontab檔案內容
-r : 從/var/spool/cron/目錄中刪除某個使用者的crontab檔案
-i : 刪除某使用者的crontabz檔案前提示使用者
-s : selinux內容
4、舉例:
每周一,三,五的下午3:00系統進入維護狀態,重新啟動系統。
0 15 * * 1,3,5 shutdown -r +5
每小時的1分執行使用者目錄下的bin/account這個指令:
1 * * * * bin/account
每天早晨三點二十分執行使用者目錄下如下所示的兩個指令(每個指令以;分隔):
20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)
每年的一月和四月,4號到9號的3點12分和3點55分執行/bin/rm -f expire.1st這個指令,並把結果添加在mm.txt這個檔案之後(mm.txt檔案位於使用者自己的目錄位置)。
12,55 3 5-9 1,4 * /bin/rm -f expire.1st$#@62;$#@62;mm.txt
每天一個Linux命令—— crontab