Cron 用法說明

2021-08-30 00:17:44 字數 3073 閱讀 6107

更新:新增日誌

cron.* -/var/log/cron

# nano /etc/rsyslog.conf

and then

# /etc/init.d/rsyslog restart

更新 :當你的cronjob死活不執行時

或者你在日誌裡看到(sudo grep cron /var/log/syslog)

錯誤資訊" (*system*) bad file mode (/etc/crontab)"是指/etc/crontab檔案的許可權設定錯誤。

請執行命令:chmod 0600 /etc/crontab

再重啟cron daemon就可以了。

通常說許可權不只是cronjob的指令碼裡的許可權,也要檢查例如:誰的cron,和/var/spool/cron/ 或者 /etc/crontab是否有許可權。

cron的用法老是記不住,索性寫下來備忘。下文內容大部分是根據《cron help guide》 翻譯而來,有些部分是自己加上的。

全文如下:

cron服務是linux的內建服務,但它不會開機自動啟動。可以用以下命令啟動和停止服務:

sudo /etc/init.d/cron restart [ubuntu]

/sbin/service crond start

/sbin/service crond stop

/sbin/service crond restart

/sbin/service crond reload

要把cron設為在開機的時候自動啟動,在 /etc/rc.d/rc.local 指令碼中加入/sbin/service crond start即可。

cron服務每分鐘不僅要讀一次 /var/spool/cron 目錄內的所有檔案,還需要讀一次 /etc/crontab 檔案。配置這個檔案也能讓cron執行任務。使用crontab命令是對使用者級任務的配置,而編輯 /etc/crontab 檔案是對系統級任務的配置。

以下是兩個cron語句的例子(在 /etc/crontab 檔案裡)。前者用來晚間備份 /etc 目錄,後者執行analog程式處理伺服器的統計資訊。

12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

52 5 * * * root /usr/local/src/analog-5.32-lh/analog >> /dev/null 2>&1

以下是cron語句中的字段與字段說明:

字段說明

1分鐘(0-59)

2小時(2-24)

3日期(1-31)

4月份(1-12;或英文縮寫jan、feb等)

5週幾(0-6,0為週日;或單詞縮寫sun、mon等)

6使用者名稱(執行命令時以此使用者的身份)

7要執行的命令(路徑)

現在來看第一行:

12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1
這條語句將在每天的凌晨3點12分 (03:12)執行tar czf /usr/local/backups/daily/etc.tar.gz /etc命令。>> /dev/null 2>&1表示把所有標準輸出傳送到 /dev/null(linux的**站),把標準錯誤輸出(2)傳送到和標準輸出(1)同樣的地方(即 /dev/null)。執行這行命令將不會產生任何輸出。

這條語句可以變得稍微複雜一點:

30 15 13 6 1 * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1
它將在6月13日周一的15:30 執行tar czf /usr/local/backups/daily/etc.tar.gz /etc命令。

以下語句可以達到同樣的效果:

30 15 13 jun mon * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1
如果你想以使用者joey的身份每小時的第15分鐘 執行某個程式,可以使用:

15 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1
其中的星號(*)是萬用字元,表示cron將忽略這個字段。

如果你想每兩小時 就執行某個程式,可以在小時欄位裡使用*/2。它將會在2點,4點,6點……22點,24點執行。具體語句如下:

0 */2 * * * joey /usr/bin/somecommand >> /dev/null 2>&1
cron語句中還可以使用逗號(,)來指定多個時間。例如你想在每小時的15分和30分 執行某個程式,可以在分鐘字段使用15,30

15,30 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1
如果你想在每月的第一周(即1號到7號)每天的指定時間 執行某個程式,可以在日期字段使用1-7

15,30 */2 1-7 * * joey /usr/bin/somecommand >> /dev/null 2>&1
這條語句將在每月的第1-7日每兩小時的15分和30分 (02:15,02:30……22: 15,22:30等)執行/usr/bin/somecommand命令。

如果你想在每天的16:18 執行乙個指令碼集合,可以把所有要執行的指令碼放到乙個目錄中(如 /home/username/cron),可以使用:

18 16 * * * root run-parts /home/username/cron >> /dev/null 2>&1
如果你想儲存某個程式的輸出結果, 可以把>> /dev/null 2>&1替換為>> /home/user/somecommand.log 2>&1

C new 用法說明

int a newint 這句相當於 int a 0 a 是空 int a new int 20 這句的本質是指標指向乙個 int20 的空間 在堆裡 這個與class 類似的。1 new運算子 用於建立物件和呼叫建構函式。這種大家都比較熟悉,沒什麼好說的了。2 new修飾符 在用作修飾符時,new...

SQLSERVER DBCC 用法說明

一 dbcc 幫助類命令 dbcc help 查詢所有的dbcc命令 dbcc help 命令 查詢指定的dbcc命令的語法說明 dbcc useroptions 返回當前連線的活動 設定 的set選項 二 dbcc 檢查驗證類命令 dbcc checkalloc 資料庫名稱 檢查指定資料庫的磁碟空...

linux c setitimer用法說明

在linux c程式設計中,setitimer是乙個比較常用的函式,可用來實現延時和定時的功能。使用時需要引入的標頭檔案 cpp view plain copy include setitimer函式原型 cpp view plain copy intsetitimer intwhich,const...