linux crontab定時任務詳解

2021-07-11 13:55:52 字數 3849 閱讀 7031

1.  為當前使用者建立cron服務: crontab  -e

例如 檔案內容如下(每隔1分鐘執行sql指令碼):

*/1 * * * * mysql -h127.0.0.1 -uroot -proot < /home/undoner/sync_db.sql

2. 檢視該使用者下的crontab服務是否建立成功: crontab  -l

3. 啟動crontab服務 :  /sbin/service crond start 若是根使用者的cron服務可以用 sudo service crond start (若版本不同用 sudo service cron start)

4. 檢視服務是否已經執行用 ps -ax | grep cron 

5. crontab命令

cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些引數與說明:

-u //設定某個使用者的cron服務,一般root使用者在執行這個命令的時候需要此引數  

crontab -l //列出某個使用者cron服務的詳細內容

crontab -r //刪除沒個使用者的cron服務

crontab -e //編輯某個使用者的cron服務

比如說root檢視自己的cron設定:crontab -u root -l

再例如,root想刪除fred的cron設定:crontab -u fred -r

在編輯cron服務時,編輯的內容有一些格式和約定,輸入:crontab -u root -e

進入vi編輯模式,編輯的內容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt

6. crontab命令選項:

-u指定乙個使用者

-l列出某個使用者的任務計畫

-r刪除某個使用者的任務

-e編輯某個使用者的任務

7. cron檔案語法:

分     小時    日       月       星期     命令

0-59   0-23   1-31   1-12     0-6     command     (取值範圍,0表示週日一般一行對應乙個任務)

記住幾個特殊符號的含義:

「*」代表取值範圍內的數字,

「/」代表」每」,

「-」代表從某個數字到某個數字,

「,」分開幾個離散的數字

8. 任務排程設定檔案的寫法

可用crontab -e命令來編輯,編輯的是/var/spool/cron下對應使用者的cron檔案,也可以直接修改/etc/crontab檔案

具體格式如下:

minute hour day month dayofweek   command

分鐘     小時   天     月       天每星期       命令

每個字段代表的含義如下:

minute             每個小時的第幾分鐘執行該任務

hour               每天的第幾個小時執行該任務

day                 每月的第幾天執行該任務

month             每年的第幾個月執行該任務

dayofweek     每週的第幾天執行該任務

command       指定要執行的程式

在這些欄位裡,除了「command」是每次都必須指定的字段以外,其它欄位皆為可選字段,可視需要決定。對於不指定的字段,要用「*」來填補其位置。舉例如下:

5       *       *           *     *     ls             指定每小時的第5分鐘執行一次ls命令

30     5       *           *     *     ls             指定每天的 5:30 執行ls命令

30     7       8         *     *     ls             指定每月8號的7:30分執行ls命令

30     5       8         6     *     ls             指定每年的6月8日5:30執行ls命令

30     6       *           *     0     ls             指定每星期日的6:30執行ls命令[注:0表示星期天,1表示星期1,

以此類推,也可以用英文來表示,sun表示星期天,mon表示星期一等。]

30     3     10,20     *     *     ls     每月10號及20號的3:30執行ls命令[注:「,」用來連線多個不連續的時段]

25     8-11 *           *     *     ls       每天8-11點的第25分鐘執行ls命令[注:「-」用來連線連續的時段]

*/15   *       *           *     *     ls         每15分鐘執行一次ls命令 [即每個小時的第0 15 30 45 60分鐘執行ls命令 ]

30   6     */10         *     *     ls       每個月中,每隔10天6:30執行一次ls命令[即每月的1、11、21、31日是的6:30執行一次ls 命令。 ]

每天7:50以root 身份執行/etc/cron.daily目錄中的所有可執行檔案

50   7       *             *     *     root     run-parts     /etc/cron.daily   [ 注:run-parts引數表示,執行後面目錄中的所有可執行檔案。 ]

9. 新增排程任務

新增排程任務可用兩種方法:

1)、在命令列輸入: crontab -e 然後新增相應的任務,wq存檔退出。

10. 檢視排程任務

crontab -l //列出當前的所有排程任務

crontab -l -u jp   //列出使用者jp的所有排程任務

11. 刪除任務排程工作

crontab -r   //刪除所有任務排程工作

12. 任務排程執行結果的轉向

例1:每天5:30執行ls命令,並把結果輸出到/jp/test檔案中

30 5 * * * ls >/jp/test 2>&1

注:2>&1 表示執行結果及錯誤資訊。

shell=/bin/bash  

path=/sbin:/bin:/usr/sbin:/usr/bin 

mailto=root //如果出現錯誤,或者有資料輸出,資料作為郵件發給這個帳號  

home=/ //使用者執行的路徑,這裡是根目錄  

# run-parts  

01   *   *   *   *     root run-parts /etc/cron.hourly         //每小時執行

/etc/cron.hourly內的指令碼  

02   4   *   *   *     root run-parts /etc/cron.daily           //每天執行/etc/cron.daily內的指令碼  

22   4   *   *   0     root run-parts /etc/cron.weekly       //每星期執行 /etc/cron.weekly內的指令碼  

42   4   1   *   *     root run-parts /etc/cron.monthly     //每月去執行/etc/cron.monthly內的指令碼  

13. linux系統使用者下的crontab任務不執行問題處理:

1)、確認伺服器是否開啟任務計畫服務,只有root使用者才能對crond服務進行開啟和關閉

shell=/bin/sh

path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

linux crontab 定時任務

通過crontab 命令,我們可以在固定的間隔時間執行指定的系統指令或 shell script指令碼。時間間隔的單位可以是分鐘 小時 日 月 周及以上的任意組合。這個命令非常適合週期性的日誌分析或資料備份等工作。命令格式 crontab e l 例如 每隔15分鐘 0,15,30,45 bin e...

Linux Crontab 定時任務

crontab檔案 bash vat command not found hadoop master1 etc cat crontab shell bin bash path sbin bin usr sbin usr bin mailto root home for details see man...

Linux Crontab 定時任務

一 crontab介紹 crontab命令的功能是在一定的時間間隔排程一些命令的執行。1.1 etc crontab檔案 在 etc目錄下有乙個crontab檔案,這裡存放有系統執行的一些排程程式。每個使用者可以建立自己的排程crontab 在 var spool cron目錄下 以下是我本機上的c...