細讀crontab命令

2021-08-30 07:47:59 字數 2147 閱讀 2709

一句話總結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...