Crontab
在linux中,crontab的用來設置定期執行指定的命令,我們可以用它來指定一些需要重復的事情,Linux系統的用戶只需將想要定期要執行的命令序列加到crontab文件中,操作系統即會按用戶配置的時間執行這些命令序列。向crontab文件里添加指令之前,需要檢查下crontab服務是否已啟動和是否開機自動啟動:
【查看狀態】
Linux 系統上面原本就有非常多的計划性工作,因此這個系統服務是默認啟動的
可以使用service crond status進行查看狀態,下圖是我在cenos中查看到的狀態,可以看到是正在運行的。
如果需要啟動crond服務,可以使用 service crond start命令來進行服務的啟動
【設置開機自動啟動】
我們需要設置服務為開機自啟動,一般是默認設置好的,我們可以使用ntsysv打開服務配置進行查看,如下圖所示,前邊有*代表已經選中,向下翻查看crond是否被選中。


【命令格式】
1.命令格式:
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
2.命令功能:
通過crontab 命令,我們可以在固定的間隔時間執行指定的系統指令或 shell script腳本。時間間隔的單位可以是分鍾、小時、日、月、周及以上的任意組合。這個命令非常設合周期性的日志分析或數據備份等工作。
3.命令參數:
-u user:用來設定某個用戶的crontab服務,例如,"-u ixdba"表示設定ixdba用戶的crontab服務,此參數一般有root用戶來運行。
file:file是命令文件的名字,表示將file做為crontab的任務列表文件並載入crontab。如果在命令行中沒有指定這個文件,crontab命令將接受標准輸入(鍵盤)上鍵入的命令,並將它們載入crontab。
-e:編輯某個用戶的crontab文件內容。如果不指定用戶,則表示編輯當前用戶的crontab文件。
-l:顯示某個用戶的crontab文件內容,如果不指定用戶,則表示顯示當前用戶的crontab文件內容。
-r:從/var/spool/cron目錄中刪除某個用戶的crontab文件,如果不指定用戶,則默認刪除當前用戶的crontab文件。
-i:在刪除用戶的crontab文件時給確認提示。
默認情況下,系統所有用戶都可以使用crond服務。如需對crond服務的使用加限制,可以使用配置文件/etc/cron.allow和 /etc/cron.deny,望文生義,cron.allow是允許使用crond服務的用戶清單,cron.deny里的用戶則相反
crontab 文件中命令格式如下:
minute hour day-of-month month-of-year day-of-week commands
即:"分 時 日 月 周 命令",共計6段,前5段都是時間,最后一段才是你要定期執行的指令。每段之間使用空格或者制表符分隔。
來看一下前5段即日期和時間的取值范圍:
1,分鍾[00-59] 2,小時[00-23] 3,日[01-31] 4,月份[01-12]
5,周[0-6] ;注意,這里的0表示周日
上面這條指令里使用了特殊符號"*",代表當前段取值范圍內的所有數字,如第3段上的"*"代表[01-31]日,第4段上的"*"代表[01-12]月。
特殊符號除了"*"號還有"/"、"-"、",":
/ 代表"每"的意思,如"/5"表示每5個單位;
- 用於表示一個范圍,如"[1-10]"表示從1到10;
, 用於表示若干離散的數字,如"5,15,25"
編輯crontab文件:
例子;crontab –e
之后直接編輯你想實現的操作,保存並退出。比如
00 09 * * 3 echo "Hello new day!" >> /tmp/book
我們此時再使用crontab –l就可以看到剛剛設置的東西。也可以在/var/spool/cron目錄中查看到。文件名字就是用戶名。

為了看一下最終效果我先設置一個能看出效果的例子,如下:
20 22 * * * echo "Good Night!" >> /tmp/book
結果如下:可以看到,mybook文件中已經被寫入了Good Night

