一句話總結crontab(指這個應用、這個機制)的作用:」run this command at this time on this day」,在指定的日期、時間,執行指定的命令。下面是linux 上crontab手冊中的知識點,小結如下:
1. crontab檔案「正式行」的開始
空行、以空格或者「tab」開行的行,被cron(daemon)忽略。
以#開始的行,作為注釋被cron(daemon)忽略。
「注釋」不允許與「命令」放在同一行(作為命令的注釋),會被作為「第六段」,被cron(daemon)執行。
同樣的,也不能放在設定環境變數的同一行。
2. 在crontab檔案中指定環境變數
設定變數使用
name = value
這樣的格式,」=」號左右的空格不是必須的。
幾個變數預設已經被設定,比如:
shell=/bin/sh
hoem=/home/nnix
logname=nnix
其中shell和home可以重新設定,logname則不可(大概跟確定crontab檔案的位置有關)。
預設,crontab會把執行的輸出傳送給crontab的所有者,除非重新設定變數:
mailto=other_or_email
另外,當crontab傳送輸入時的郵件編碼,可以通過設定變數 content_type 和 content_transfer_encoding 來使用正確的編碼來傳送郵件。
3. crontab 檔案的分段
依次分別是
4. 前五段:時間和日期
1)表示任意:* 號表示 「任意」(first-last)。
2)指定數字,表示指定的時間。
3)指定段,表示「開始-結束」內包含的數:比如3-6,表示3,4,5,6
4)指定列表:比如 「1,2,3,4″,」0-4,8-12″
5)指定「步長」:8-14/2 表示8,10,12,14
5. 模糊的第六段:
1)除去前五段,從第六段開始到換行符或者「%」為止,為要執行的命令。
2)預設第六段將被/bin/sh執行,除非在crontab檔案中指定了非/bin/sh的shell變數。
3)第六段中的」%」號,除非前面加」\」號轉交,否則,「%」號將結束命令列、換行的意義,並且其後的內容會被做為標準輸入傳送給前面的命令。
6. 衝突的邏輯
日期可以用月限定,也可以用「星期」指定,如果兩個段有衝突(比如這兩段不同時為「*」),那麼,第六段的命令將在匹配任何乙個的情況下執行,比如
「30 4 1,15 * 5″,將在每月的1號和15號 加 每個周五,上午4:30執行。
7. crontab檔案中的神密符號「%」
可能會遇到的乙個問題是,在第六段中需要使用date生成日誌檔名,比如:
0 4 * * * /opt/cron/mysql_dump.sh > /srv/logs/`date +%y-%m-%d`.dump.log
這時會發現crontab怎麼也不執行這個mysql_dump.sh,也看不到有日誌生成。這是因為在crontab檔案中,」%」是有特殊含義的。假如不需要「%」的特殊作用,需要使用轉義符轉義。上面應該寫成:
0 4 * * * /opt/cron/mysql_dump.sh > /srv/logs/`date +\%y-\%m-\%d`.dump.log
「%」在crontab檔案中,有「結束命令列」、「換行」、「重定向」的作用,比如:
0 22 * * 1-5 mail -s 「it』s 10:00 pm」 joe%joe,%%where are your kids?%
將會在周一至周五的22:00傳送一分內容為:
joe,《換行》
《換行》
where are your kids?《換行》
8. 不能理解的特殊用法
@reboot : run once, at startup.
為了達到在開機後執行,且只執行一次的目的,除了這個,恐怕無法通過前五段的設定來實現吧?
crontab命令使用
crontab命令使用 名稱 crontab 使用許可權 所有使用者 使用方式 crontab u user file crontab u user 說明 crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是類似使用者的時程表。u user 是指設定指定 user 的時程...
crontab命令使用
名稱 crontab 使用許可權 所有使用者 使用方式 crontab u user file crontab u user 說明 crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是類似使用者的時程表。u user 是指設定指定 user 的時程表,這個前提是你必須要有...
crontab命令詳解
crontab命令的功能是在一定的時間間隔排程一些命令的執行。在 etc目錄下有乙個crontab檔案,這裡存放有系統執行的一些排程程式。每個使用者可以建立自己的排程crontab。crontab命令有三種形式的命令列結構 crontab u user file crontab u user e l...