一、關於crontab
cron是一個Linux定時執行工具,可以在無需人工干預的情況下運行作業。在Ubuntu中,cron是被默認安裝並啓動的。
二、例子
直接上例子,來看看怎麼用。
需求:定時每天8點,自動執行保存在/root目錄下hello.sh腳本
1、方法很簡單,只需編輯ect下crontab文件就行了,這個文件裏存放的就是cron要執行的命令,以及定時執行的時間
vim /etc/crontab
2、最後一行添加:
00 08 * * * root /root/hello.sh
三、解釋
1、crontab定時任務語法如下:
minute hour day month week command #順序:分 時 日 月 周 命令
2、說明:
minute: 表示分鐘,可以是從 0 到 59 之間的任何整數。
hour:表示小時,可以是從 0 到 23 之間的任何整數。
day:表示日期,可以是從 1 到 31 之間的任何整數。
month:表示月份,可以是從 1 到 12 之間的任何整數。
week:表示星期幾,可以是從 0 到 7 之間的任何整數,這裏的 0 或 7 代表星期日。
command:要執行的命令,可以是系統命令,也可以是自己編寫的腳本文件。
3、在以上各個字段中,還可以使用以下特殊字符:
星號(*):代表所有可能的值,例如 month 字段如果是星號,則表示在滿足其它字段的制約條件後每月都執行該命令操作。
逗號(,):可以用逗號隔開的值指定一個列表範圍,例如,“1,2,5,7,8,9”
中槓(-):可以用整數之間的中槓表示一個整數範圍,例如“2-6”表示“2,3,4,5,6”
正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,\
例如*/10,如果用在 minute 字段,表示每十分鐘執行一次。
四、補充
cron 服務的啓動與停止,命令如下:
1)service cron start /*啓動服務*/
2)service cron stop /*關閉服務*/
3)service cron restart /*重啓服務*/
4)service cron reload /*重新載入配置*/
5)service cron status /*查看crond狀態*/
五、興趣拓展
寫了一個每天8點從中國天氣網爬取今天天氣,傳到ssh登錄歡迎頁面的小程序。這樣每次ssh連接的時候就能看到當天的天氣情況了。因爲我在深圳所以用的深圳的例子來舉,你可以自己去中國天氣網找到自己城市的頁面來爬。
1、shell腳本:/bin/tianqi.sh
#!/bin/bash
weatherDateRoot=http://www.weather.com.cn/weather1d/101280601.shtml #中國天氣網深圳
weatherDataFile=/root/weather.html
wget $weatherDateRoot -O $weatherDataFile > /dev/null 2>&1 #下載頁面
result=$(cat $weatherDataFile | sed -n '/<input type="hidden" id="hidden_title" value/p')
subresult1=${result##*value=\"} #處理網頁,獲取數據
subresult2=${subresult1%%\"*} #這邊涉及到字符串分割,不熟悉可以搜Shell截取字符串
echo printf "\"${subresult2} 深圳\"" >>/etc/update-motd.d/00-header
#將數據寫入歡迎頁面文件,我這邊還添了個深圳兩個字
2、crontab文件:
00 08 * * * root cp /etc/update-motd.d/00-header_bk /etc/update-motd.d/00-header
01 08 * * * root /bin/tianqi.sh
什麼意思呢,第一條執行的是將備份的00-header_bk文件覆蓋00-header文件,因爲每次執行完tianqi.sh,都會在最後追加當日天氣狀況,如果不用備份覆蓋,那麼就會保留有之前的天氣。因此,第一次啓用這個程序之前需要先備份一下00-header,命名爲00-header_bk。第二條就是執行天氣獲取腳本了。
好了,要講的就這麼多。