1. 程式人生 > >Linux定時任務深入學習

Linux定時任務深入學習

調度 取值 user 通知 bash stat oot test 管理

為當前用戶創建cron服務

1. 鍵入 crontab -e 編輯crontab服務文件

例如 文件內容如下:

*/2 * * * * /bin/sh /home/admin/jiaoben/buy/deleteFile.sh

保存文件並並退出

*/2 * * * * /bin/sh /home/admin/jiaoben/buy/deleteFile.sh

*/2 * * * * 通過這段字段可以設定什麽時候執行腳本

/bin/sh /home/admin/jiaoben/buy/deleteFile.sh 這一字段可以設定你要執行的腳本,這裏要註意一下bin/sh 是指運行 腳本的命令 後面一段時指腳本存放的路徑

2. 查看該用戶下的crontab服務是否創建成功, 用 crontab -l 命令

3. 啟動crontab服務

一般啟動服務用 /sbin/service crond start 若是根用戶的cron服務可以用 sudo service crond start, 這裏還是要註意 下 不同版本linux系統啟動的服務的命令也不同 ,像我的虛擬機裏只需用 sudo service cron restart 即可,若是在根用下直接鍵入service cron start就能啟動服務

4. 查看服務是否已經運行用 ps -ax | grep cron

5. crontab命令

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

crontab -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
任務調度的crond常駐命令
crond 是linux用來定期執行程序的命令。當安裝完成操作系統之後,默認便會啟動此

任務調度命令。crond命令每分鍾會定期檢查是否有要執行的工作,如果有要執行的工

作便會自動執行該工作。

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存盤退出。
2)、直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務。

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 表示執行結果及錯誤信息。
編輯/etc/crontab 文件配置cron

cron服務每分鐘不僅要讀一次/var/spool/cron內的所有文件,還需要讀一次 /etc/crontab,因此我們配置這個文件也能運用cron服務做一些事情。用crontab配置是針對某個用戶的,而編輯/etc/crontab是針對系統的任務。此文件的文件格式是:

  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內的腳本
  大家註意”run-parts”這個參數了,如果去掉這個參數的話,後面就可以寫要運行的某個腳本名,而不是文件夾名了

例如:

1) 在命令行輸入: crontab -e 然後添加相應的任務,wq存盤退出。

2)直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務
11 2 21 10 * rm -rf /mnt/fb

***************************************************************************************************************************

Ubuntu上cron的使用

Cron是Linux系統中最有用的工具之一,cron作業是在指定時間到來時被調度執行的作業。
最常見的自動化系統管理和自動維護工作,比如每天發出的按計劃完成了備份的通知,或者是按計劃定時清理/tmp/目錄的通知。還有很多Web應用程序也需要執行定時作業。
本文講述了Cron的工作機制,你可以用cron實現調度作業作業。Cron本身是一個守護進程,在後臺運行,通過配置文件“crontab”來根據時間調度指定的作業執行。

一、啟動Cron服務

基本上所有的Linux發行版在默認情況下都預安裝了cron工具。即使未預裝cron,也很簡單,執行命令手動安裝它:

root@ubuntu-14:~# apt-get install cron
  • 1
  • 2

接著檢查cron服務的狀態,默認情況它應該運行於後臺。如果它未啟動,那麽可以手動啟動此服務。

root@ubuntu-14:~# service cron start
root@ubuntu-14:~# service cron status 
cron start/running, process 1027 

二、使用Cron幫助

如果cron工作正常,那麽你可以使用man命令查看其手冊描述的詳細用法。

root@ubuntu-14:~# man crontab 

上面的命令顯示了crontab手冊描述的使用方法。如果要查看怎樣使用cron作業指定的信息,可以這樣:

root@ubuntu-14:~# man 5 crontab 

技術分享圖片
要退出幫助命令手冊的顯示,按下q鍵或h鍵。
技術分享圖片

三、Crontab命令的用法

下面講述怎樣使用crontab命令實現定時調度作業。

1、對Cron作業進行列表

使用以下命令列出當前用戶計劃的cron作業。

root@ubuntu-14:~# crontab –l 

會列出當前用戶的所有cron作業,如果想查看其它用戶的cron作業,可以使用如下命令:

root@ubuntu-14:~# crontab –l –u username 

2、編輯Cron作業

要添加一個新cron作業,或者是編輯現有的cron作業,可以使用如下命令:

root@ubuntu-14:~# crontab -e 

3、移除Cron作業

使用下面的命令移除已經計劃的cron作業。

root@ubuntu-14:~# crontab –r 

使用下面的命令移除所有已計劃的cron作業,且無需再次確認。

root@ubuntu-14:~# crontab –ir 

4、命令參數

-u user:用來設定某個用戶的crontab服務;
file:file是命令文件的名字,表示將file做為crontab的任務列表文件並載入crontab。如果在命令行中沒有指定這個文件,crontab命令將接受標準輸入(鍵盤)上鍵入的命令,並將它們載入crontab。
-e:編輯某個用戶的crontab文件內容。如果不指定用戶,則表示編輯當前用戶的crontab文件。
-l:顯示某個用戶的crontab文件內容,如果不指定用戶,則表示顯示當前用戶的crontab文件內容。
-r:從/var/spool/cron目錄中刪除某個用戶的crontab文件,如果不指定用戶,則默認刪除當前用戶的crontab文件。
-i:在刪除用戶的crontab文件時給確認提示。

四、用Crontab計劃任務

除了通過配置文件來處理計劃cron作業之外,還有別的方法可以做到。如果你查看/etc目錄,你會發現有這樣的目錄:cron.daily、cron.hourly、cron.monthly等等。因此,把cron腳本放入這些目錄中,那麽系統會根據這些目錄名定時執行這些作業腳本的。

1、Cron配置類型

Cron有兩種配置文件類型,用於調度自動化任務。

1)系統級Crontab
這些cron作業被系統服務和關鍵作業所使用,且需要root級的權限才能執行。可以在/etc/crontab文件中查看系統級的cron作業。
技術分享圖片
2)用戶級Crontab
用戶級的cron作業是針對每個用戶單獨分開的。因此每個用戶都可以使用crontab命令創建自己的cron作業,還可以使用以下命令編輯或查看自己的cron作業。

root@ubuntu-14:~# crontab –e 

技術分享圖片
選擇編輯器後,你可以配置新cron作業了。

五、用Crontab調度作業

可以使用指定的語法調度cron作業,而且還有速記縮寫命令,使的管理cron作業很簡單。
Crontab語法如下:

* * * * * command to be executed
- - - - - -
| | | | | |
| | | | | --- 預執行的命令
| | | | ----- 表示星期0~7(其中星期天可以用0或7表示)
| | | ------- 表示月份1~12
| | --------- 表示日期1~31
| ----------- 表示小時1~23(0表示0點)
------------- 表示分鐘1~59 每分鐘用*或者 */1表示 

六、新Cron作業配置實例

現在你已經熟悉了crontab命令、語法及cron作業的類型,現在可以創建一些作業計劃進行測試。可以使用crontab –e 命令添加。

1、每分鐘運行的計劃作業

下面的例子,創建一個cron作業,它每分鐘輸出文本“test cron job to execute every minute”並把文本發送到[email protected]郵箱。
首先用crontab命令編輯

root@ubuntu-14:~# crontab –e 

寫入以下的腳本

SHELL=/bin/bash
HOME=/
MAILTO=”[email protected]”
#This is a comment
* * * * * echo ‘test cron job to execute every minute‘
:wq!    保存並退出 

技術分享圖片
一旦保存了此cron腳本文件,就可以把它添加到計劃的作業中。

2、在指定時間調度Cron job作業

假如想調度某個cron作業,讓它在“每個星期四的下午7:00”運行,那麽crontab腳本應該這樣:

00 19 * * 4 sh /root/test.sh 

再把它添加到調度作業中。

root@ubuntu-14:~# crontab -e
crontab: installing new crontab 

上面腳本中的“00 19”指的是下午7點,“4”指的是星期四。

七、總結

可以看到,用crontab實現自動化任務是很容易的,而且它可以按分鐘、小時、周、月、星期來執行任務。除此之外,Linux還有一個at命令,它適用於處理只執行一次的任務,且需要先運行atd服務。
其次要註意環境變量的問題。有時我們創建了一個crontab,但是這個任務卻無法自動執行,而手動執行這個任務卻沒有問題,這種情況一般是由於在crontab文件中沒有配置環境變量引起的。在crontab文件中定義多個調度任務時,需要特別註環境變量的設置,因為我們手動執行某個任務時,是在當前shell環境下進行的,程序當然能找到環境變量,而系統自動執行任務調度時,是不會加載任何環境變量的,因此,就需要在crontab文件中指定任務運行所需的所有環境變量,這樣,系統執行任務調度時就沒有問題了。
還要註意清理系統用戶的郵件日誌。每條任務調度執行完畢,系統都會將任務輸出信息通過電子郵件的形式發送給當前系統用戶,這樣日積月累,日誌信息會非常大,可能會影響系統的正常運行,因此,將每條任務進行重定向處理非常重要。
最後要註意,新創建的cron作業,不會馬上執行,至少要過2分鐘才執行。如果重啟cron服務則會馬上執行。

Linux定時任務深入學習