歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 在Ubuntu 14.04使用cron實現作業自動化

在Ubuntu 14.04使用cron實現作業自動化

日期:2017/2/25 11:47:26   编辑:關於Linux

  Cron是Linux系統中最有用的工具之一,cron作業是在指定時間到來時被調度執行的作業。

  最常見的自動化系統管理和自動維護工作,比如每天發出的按計劃完成了備份的通知,或者是按計劃定時清理/tmp/目錄的通知。還有很多Web應用程序也需要執行定時作業。

  本文講述了Cron的工作機制,你可以用cron實現調度作業作業。Cron本身是一個守護進程,在後台運行,通過配置文件“crontab”來根據時間調度指定的作業執行。

  一、啟動Cron服務

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

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

  接著檢查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

在Ubuntu 14.04使用cron實現作業自動化

  要退出幫助命令手冊的顯示,按下q鍵或h鍵。

在Ubuntu 14.04使用cron實現作業自動化

  三、Crontab命令的用法

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

  • 1、對Cron作業進行列表

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

  root@ubuntu-14:~# crontab –l

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

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

  這會列出指定用戶的cron作業。

  • 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作業。

在Ubuntu 14.04使用cron實現作業自動化

  2)用戶級Crontab

  用戶級的cron作業是針對每個用戶單獨分開的。因此每個用戶都可以使用crontab命令創建自己的cron作業,還可以使用以下命令編輯或查看自己的cron作業。

  root@ubuntu-14:~# crontab –e

在Ubuntu 14.04使用cron實現作業自動化

  選擇編輯器後,你可以配置新cron作業了。

  五、用Crontab調度作業

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

  Crontab語法如下:

在Ubuntu 14.04使用cron實現作業自動化

  六、新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! 保存並退出

在Ubuntu 14.04使用cron實現作業自動化

  一旦保存了此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服務則會馬上執行。

Copyright © Linux教程網 All Rights Reserved