ubuntu中執行定時任務crontab

今天研究了下ubuntu裏的crontab內置指令。這是設置定時執行腳本任務的指令,我先測試了下最基礎的執行。ubuntu

第一次使用crontab 時,會出現vim

no crontab for root - using an empty one服務器

  「Select a editor ......」下面有幾個選項,就是叫你選擇編輯器。(選vim)就能夠了,我選的第三個。dom

 可是若是你選錯了,就可能會遇到點麻煩,沒有辦法正常編輯,crontab -e。 怎麼辦?編輯器

 執行這個命令:select-editor  (針對crontab的一個命令), 可讓你從新選一次。工具

 

文件位置通常在/var/spool/cron/下,若是你是root用戶,那下面有個root文件,建議平常備份,避免誤刪除致使crontab 文件丟失;默認狀況下,crontab中執行的日誌寫在/var/log下。測試

執行crontab  -e 進入編輯頁面,增長鬚要計劃執行的sh文件命令行

我寫的是*/1 * * * * echo "hello"   ,經過這條指令寫入cron.log中。從新啓動crontab 任務 。並在/var/log/cron.log中查看運行狀況rest

下面稍微解釋下crontab中每行的含義。crontab中的每一行表明一個按期執行的任務,分爲6個部分。前5個部分表示什麼時候執行命令,最後一個部分表示執行的命令。每一個部分以空格分隔,除了最後一個部分(命令)能夠在內部使用空格以外,其餘部分都不能使用空格。前5個部分分別表明:分鐘,小時,天,月,星期,每一個部分的取值範圍以下:日誌

 

分鐘          0 - 59

小時          0 - 23

天              1 - 31

月              1 - 12

星期          0 - 6       0表示星期天

 

除了這些固定值外,還能夠配合星號(*),逗號(,),和斜線(/)來表示一些其餘的含義:

 

星號          表示任意值,好比在小時部分填寫 * 表明任意小時(每小時)

逗號          能夠容許在一個部分中填寫多個值,好比在分鐘部分填寫 1,3 表示一分鐘或三分鐘

斜線          通常配合 * 使用,表明每隔多長時間,好比在小時部分填寫 */2 表明每隔兩分鐘。因此 */1 和 * 沒有區別

                  */2 能夠當作是能被2整除的任意值。

注意:

  • 1.Ubuntu 下先判斷cron是否啓動 #ps aux |cron 重啓:sudo /etc/init.d/cron restart 從新載入配置:sudo /etc/init.d/cron reload
  • ubuntu 下須要先設置cron運行日誌存放路徑才能查看crontab的日誌:sudo vi /etc/rsyslog.d/50-default.conf 去掉cron 前面的# 保存。
  • 重啓rsyslog服務:sudo service rsyslog restart 重啓cron服務:sudo service cron restart
  • 中止cron服務:sudo service cron stop

 

再順帶一提,不喜歡命令行的童鞋能夠去 Ubuntu軟件中心 下一個 計劃任務 程序。在軟件中心中搜索 schedule 就能夠搜到。它是一個GUI的程序,作的還蠻傻瓜化的。不過好像沒辦法設置成使用root用戶運行任務。並且,對於要ssl到服務器上進行操做的童鞋來講,命令行仍是最好(惟一)的工具。

 

由於我目前就用到這些知識,因此對cron也沒有更多瞭解。想了解Ubuntu下的cron的童鞋,能夠去看看Ubuntu官方的這篇 CronHowTo ,我的以爲講的仍是蠻詳細的。

 

基本的指令:

參數 : 
crontab -e : 執行文字編輯器來設定時程表,內定的文字編輯器是 VI,若是你想用別的文字編輯器,則請先設定 VISUAL 環境變數 
來指定使用那個文字編輯器(好比說 setenv VISUAL joe) 
crontab -r : 刪除目前的時程表 
crontab -l : 列出目前的時程表 
crontab file [-u user]-用指定的文件替代目前的crontab。 
時程表的格式以下 : 
f1 f2 f3 f4 f5 program 
其中 f1 是表示分鐘,f2 表示小時,f3 表示一個月份中的第幾日,f4 表示月份,f5 表示一個星期中的第幾天。program 表示要執 
行的程序。 
當 f1 爲 * 時表示每分鐘都要執行 program,f2 爲 * 時表示每小時都要執行程序,其餘類推 
當 f1 爲 a-b 時表示從第 a 分鐘到第 b 分鐘這段時間內要執行,f2 爲 a-b 時表示從第 a 到第 b 小時都要執行,其餘類推 
當 f1 爲 */n 時表示每 n 分鐘個時間間隔執行一次,f2 爲 */n 表示每 n 小時個時間間隔執行一次,其餘類推 
當 f1 爲 a, b, c,... 時表示第 a, b, c,... 分鐘要執行,f2 爲 a, b, c,... 時表示第 a, b, c...個小時要執行,其餘類推 
使用者也能夠將全部的設定先存放在檔案 file 中,用 crontab file 的方式來設定時程表。 
例子 : 
#天天早上7點執行一次 /bin/ls : 
0 7 * * * /bin/ls 
在 12 月內, 天天的早上 6 點到 12 點中,每隔3個小時執行一次 /usr/bin/backup : 
0 6-12/3 * 12 * /usr/bin/backup 
週一到週五天天下午 5:00 寄一封信給 alex@domain.name : 
0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata 每個月天天的午夜 0 點 20 分, 2 點 20 分, 4 點 20 分....執行 echo "haha" 20 0-23/2 * * * echo "haha" 注意 : 當程序在你所指定的時間執行後,系統會寄一封信給你,顯示該程序執行的內容,如果你不但願收到這樣的信,請在每一行空一格之 後加上 > /dev/null 2>&1 便可 例子2 : #天天早上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點 0 4 1 jan * date 範例 $crontab -l 列出用戶目前的crontab.

相關文章
相關標籤/搜索