linux下定時執行任務方法

來源:互聯網
上載者:User

http://soft.chinabyte.com/os/237/11428737.shtml

  (1)at命令

  假如我們只是想 要讓特定任務運行一次,那麼,這時候就要用到at監控程式了。

  設定at命令很簡單,指示定啟動並執行時間,那麼就會在哪個時候運行。at類似列印 進程,會把任務放到/var/spool/at目錄中,到指定時間運行它 。at命令相當於另一個shell,運行at time命令時,它發送一個個命令,可以輸入任意命令或者程式。at now + time命令可以在指示任務。

  假設處理一個大型資料庫,要在別人不用系統時去處理資料,比如淩晨3點10分。那麼我們就應該先建立/home/kyle/do_job指令碼管理資料庫,計劃處理/home/kyle/do_job檔案中的結果。正常方式是這樣啟動下列命令:

  # at 2:05 tomorrow

  at>/home/kyle/do_job

  at> Ctrl+D

  AT Time中的時間表示方法

  -----------------------------------------------------------------------

  時 間 例子 說明

  -----------------------------------------------------------------------

  Minute at now + 5 minutes 任務在5分鐘後運行

  Hour at now + 1 hour 任務在1小時後運行

  Days at now + 3 days 任務在3天后運行

  Weeks at now + 2 weeks 任務在兩周后運行

  Fixed at midnight 任務在午夜運行

  Fixed at 10:30pm 任務在晚上10點30分

  注意:一定要檢查一下atq的服務是否啟 動,有些作業系統未必是預設啟動的, linux預設為不啟動,而ubuntu預設為啟動的。檢查是否啟動,用service
atd檢查文法,用service atd status檢查atd的狀態,用service atd start啟動atd服務。

  查看at執行的具體內容:一般位於/var/spool/at目錄下面, 用vi開啟,在最後一部分就是你的執行程式

  (2)crontab

  cron是一個linux下 的定時執行工具,可以在無需人工幹預的情況下運行作業。由於Cron 是Linux的內建服務,但它不自動起來,可以用以下的方法啟動、關閉這個服務:

  /sbin/service crond start //啟動服務
  /sbin/service crond stop //關閉服務
  /sbin/service crond restart //重啟服務
  /sbin/service crond reload //重新載入配置
  /sbin/service crond status //查看服務狀態

(crond或cron看實際情況

service crond start #啟動服務
service crond stop #關閉服務
service crond restart #重啟服務
service crond reload #重新載入配置

)

  你也可以將這個服務在系統啟 動的時候自動啟動:

  在/etc/rc.d/rc.local這個指令碼的末尾加上:

  /sbin/service crond start

  現在Cron這個服務已經在進程裡面了,我們就可以用這個服務了,Cron服務提供以下幾種介面供大家使用:

  1、直接用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

  基本格式 :

  *  *  *  *  *  command

  分  時  日  月  周  命令

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

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

  第3列表示日期1~31

  第4列表示月份1~12

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

  第6列要啟動並執行命令

  crontab檔案的一些例子:

  #每晚的21:30重啟apache。

  30 21 * * * /usr/local/etc/rc.d/lighttpd restart

  #每月1、10、22日

  45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

  #每天早上6點10分

  10 6 * * * date

  #每兩個小時

  0 */2 * * * date

  #晚上11點到早上8點之間每兩個小時,早上8點

  0 23-7/2,8 * * * date

  #每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點

  0 11 4 * mon-wed date

  #1月份日早上4點

http://j3j5.com/post-41.html

在linux平台上如果需要實現任務調度功能可以編寫cron指令碼來實現以某一頻率執行任務linux預設會啟動crond進程,crond進程不需要使用者啟動、關閉。 crond進程負責讀取調度任務並執行,使用者只需要將相應的調度指令碼寫入cron的調度設定檔中。 cron的調度檔案有以下幾個: crontab cron.d cron.daily cron.hourly cron.monthly cron.weekly 

執行方法一:如果用的任務不是以hourly monthly weekly方式執行,則可以將相應的crontab寫入到crontab 或cron.d目錄中。 樣本: 每隔一分鐘執行一次指令碼 /opt/bin/test-cron.sh 可以在cron.d建立指令碼 echo-date.sh 內容為 
1 */1 * * * * root  /opt/bin/test-cron.sh

在指定的時間運行任務也可以通過at命令來控制在指定的時間運行任務 如: at -f test-cron.sh -v 10:25 其中-f 指定指令檔, -v 指定已耗用時間首先用 contab -l  匯出contab的配置,然後編輯contabs.tmp檔案。以一下格式添加一行:分鐘 小時 天 月 星期 命令比如10 3 * * 0,6 hello就是每周六、周日的3點10分執行hello程式。15 4 * * 4-6 hello就是從周四到周六的4點15點執行hello程式。然後用contab contabs.tmp 命令匯入新的配置。一般不建議直接修改/etc/下的相關設定檔。 啟動cron進程的方法:/etc/init.d/crond start 開機就啟動cron進程的設定命令:chkconfig --add crond執行方法二:把cron加入到啟動指令碼中:# rc-update add vixie-cron defaultcrontab -l #查看你的任務crontab-e#編輯你的任務crontab-r#刪除使用者的crontab的內容

執行個體講解二: 系統cron設定:/etc/crontab  通過 /etc/crontab 檔案,可以設定系統定期執行的任務,當然,要想編輯這個檔案,得有root許可權 0 7   *    *   *    root    mpg123 ~/wakeup.mp3  分 時 日 月 周 樣本: 
1 0 4  * * 0     root emerge --sync && emerge -uD world              #每周日淩晨4點,更新系統
2 0 2 1 * *     root   rm -f /tmp/*                                                    #每月1號淩晨2點,清理/tmp下的檔案
3 0 8 6 5 *   root     mail  robin < /home/galeki/happy.txt             #每年5月6日給robin發信祝他生日快樂

假如,我想每隔2分鐘就要執行某個命令,或者我想在每天的6點、12點、18點執行命令,諸如此類的周期,可以通過 “ / ” 和 “ , ” 來設定: 

01 */2   *   *   *   *           root      ...............      #每兩分鐘就執行........
02 0 6,12,18   *   *   *    root      ...............      #每天6點、12點、18點執行........
03 每兩個小時
04 0 */2 * * * echo"have a break now."
>&gt; /tmp/test.txt
05 晚上11點到早上8點之間每兩個小時,早上八點
06 0 23-7/2,8 * * * echo"have a good dream:)"
&gt;&gt; /tmp/test.txt
07 每個月的4號與每個禮拜的禮拜一到禮拜三的早上11點
08 0 11 4 * 1-3 command line
09 1月1日早上4點
10 0 4 1 1 * command line

收穫:可以把經常要做的一些事放到其中,簡化工作量,如每周一檢查伺服器的運行狀態,查看報告,殺掉一些進程等等…… 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.