crontab命令解釋

2021-09-05 09:23:44 字數 3085 閱讀 4566

常用命令:

crontab [-u username] [-l|-e|-r]

選項與引數:

-u :只有 root 才能進行這個任務,亦即幫其他使用者建立/移除 crontab 工作排程;

-e :編輯 crontab 的工作內容

-l :查閱 crontab 的工作內容

安裝crontab:

yum install crontabs

服務操作說明:

/sbin/service crond start //啟動服務

/sbin/service crond stop //關閉服務

/sbin/service crond restart //重啟服務

/sbin/service crond reload //重新載入配置

/sbin/service crond status //啟動服務

檢視crontab服務是否已設定為開機啟動,執行命令:

ntsysv

加入開機自動啟動:

chkconfig –level 35 crond on

使用方法:

舉例: 寫乙個每隔 五分鐘 執行的檔案

*/5 * * * * /usr/local/php/bin/php /home/wwwroot/default/push.php

/usr/local/php/bin/php : php 的安裝路徑

/home/wwwroot/default/push.php 需要執行的指令碼檔案

*/5 * * * * /usr/bin/curl

*  *  *  *  *  command

分  時  日  月  周  命令

第1列表示分鐘1~59 每分鐘用*或者 */1表示

第2列表示小時1~23(0表示0點)

第3列表示日期1~31

第4列表示月份1~12

第5列標識號星期0~6(0/7表示星期天 )

舉例:每5秒執行寫入 當前日期入檔案

一、 crontab 的延時: 原理:通過延時方法 sleep n 來實現每n秒執行。

二、 shell 指令碼實現

* * * * * sleep 5; /usr/bin/curl

* * * * * sleep 10; /usr/bin/curl

......

注意:60必須能整除間隔的秒數(沒有餘數),例如間隔的秒數是2,4,6,10,12等。

如果間隔的秒數太少,例如2秒執行一次,這樣就需要在crontab 加入60/2=30條語句。

shell指令碼:

* * * * * /home/php/crontab/crontab.sh

shell 指令碼實現 crontab.sh檔案

#!/bin/bash  

step=2 #間隔的秒數,不能大於60

for (( i = 0; i < 60; i=(i+step) )); do

$(php '/home/fujieace/php/crontab/tolog.php')

sleep $step

done

exit

特殊字元

代表意義

*(星號)

代表任何時刻都接受的意思!舉例來說,範例一內那個日、月、週都是 * , 就代表著『不論何月、何日的禮拜幾的 12:00 都執行後續命令』的意思!

,(逗號)

代表分隔時段的意思。舉例來說,如果要下達的工作是 3:00 與 6:00 時,就會是:0 3,6 * * * command 時間引數還是有五欄,不過第二欄是 3,6 ,代表 3 與 6 都適用!

-(減號)

代表一段時間範圍內,舉例來說, 8 點到 12 點之間的每小時的 20 分都進行一項工作:20 8-12 * * * command 仔細看到第二欄變成 8-12 喔!代表 8,9,10,11,12 都適用的意思!

/n(斜線)

那個 n 代表數字,亦即是『每隔 n 單位間隔』的意思,例如每五分鐘進行一次,則:/5 * * * command很簡單吧!用 * 與 /5 來搭配,也可以寫成 0-59/5 ,相同意思!

檢視contab執行日誌

centos: tail -f /var/log/cron

ubuntu: tail -f /var/log/cron.log

注:ubuntu 預設沒有開啟cron log.

在/etc/rsyslog.d/50-default.conf檔案中取消#cron.* /var/log/cron.log注釋符號#,

並重啟rsyslog sudo service rsyslog restart

解釋: >/dev/null 2>&1

os.system("/etc/init.d/winbind stop >/dev/null 2>&1")

(>/dev/null) 將輸出重定向到/dev/null,這是個空裝置,也就是忽略其輸出。

2>&1 是將錯誤輸出到標準輸出,如果在控制台除錯,也就是螢幕上,方便除錯。

有3個預設的i/o,0是標準輸入,一般是鍵盤;1是標準輸出,一般是螢幕了;2是標準錯誤。

/dev/null 代表空裝置檔案

:>代表重定向到**,例如:echo 「123」 > /home/123.txt

1 表示stdout標準輸出,系統預設值是1,所以">/dev/null"等同於"1>/dev/null"

2 表示stderr標準錯誤

& 表示等同於的意思,2>&1,表示2的輸出重定向等同於1

那麼本文標題的語句:

1>/dev/null 首先表示標準輸出重定向到空裝置檔案,也就是不輸出任何資訊到終端,說白了就是不顯示任何資訊。

2>&1 接著,標準錯誤輸出重定向等同於 標準輸出,因為之前標準輸出已經重定向到了空裝置檔案,所以標準錯誤輸出也重定向到空裝置檔案。

crontab命令解釋

基本格式 command 分 時 日 月 周 命令 第1列表示分鐘1 59 每分鐘用 或者 1表示 第2列表示小時1 23 0表示0點 第3列表示日期1 31 第4列表示月份1 12 第5列標識號星期0 6 0表示星期天 第6列要執行的命令 crontab檔案的一些例子 上面的例子表示每晚的21 3...

crontab命令解釋

crontab命令解釋 基本格式 command 分 時 日 月 周 命令 第1列表示分鐘1 59 每分鐘用 或者 1表示 第2列表示小時1 23 0表示0點 第3列表示日期1 31 第4列表示月份1 12 第5列標識號星期0 6 0表示星期天 第6列要執行的命令 crontab檔案的一些例子 上面...

crontab命令使用

crontab命令使用 名稱 crontab 使用許可權 所有使用者 使用方式 crontab u user file crontab u user 說明 crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是類似使用者的時程表。u user 是指設定指定 user 的時程...