歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下crontab的使用及利用crontab系統定時處理事務

Linux下crontab的使用及利用crontab系統定時處理事務

日期:2017/2/28 16:13:39   编辑:Linux教程

這裡是crontab的基本介紹,並且使用crontab來定時周期性的完成事務。

比如:我們每天需要備份數據庫,或者定時執行某項轉換任務等,crontab就派上用場了。

一 linux下crontab的使用
1.作用
使用crontab命令可以修改crontab配置文件,然後該配置由cron公用程序在適當的時間執行,該命令使用權限是所有用戶。

2.格式
crontab [ -u user ] 文件
crontab [ -u user ] { -l | -r | -e }

3.主要參數
-e:執行文字編輯器來設定時程表,內定的文字編輯器是vi。
-r:刪除目前的時程表。
-l:列出目前的時程表。

crontab文件的格式為“M H D m d cmd”。其中,M代表分鐘(0~59),H代表小時(0~23),D代表天(1~31),m代表月(1~12),d代表一星期內的天(0~6,0為星期天)。cmd表示要運行的程序,它被送入sh執行,這個Shell只有USER、HOME、SHELL三個環境變量。

4.說明
和at命令相比,crontab命令適合完成固定周期的任務。

5.應用實例
設置一個定時、定期的系統提示:
[cao @www cao]#crontab -e
此時系統會打開一個vi編輯器。
如果輸入以下內容:35 17 * * 5 wall "Tomorrow is Saturday I will go CS",
這樣每個星期五17:35系統就會彈出一個終端,提醒星期六可以打打CS了!

用crontab命令實現每天定時的病毒掃描
前面已經介紹了一個簡單的crontab命令操作,這裡看一些更重要的操作。

(1)建立一個文件,文件名稱自己設定,假設為caoproject:
#crontab -e

(2)文件內容如下:
05 09 * * * antivir
用vi編輯後存盤退出。antivir是一個查殺Linux病毒的軟件,當然需要時先安裝在系統中。

(3)使用crontab命令添加到任務列表中:
#crontab caoproject
這樣系統內所有用戶在每天的9點05分會自動進行病毒掃描。

6.高級應用:crontab每隔5分鐘運行一個怎麼寫?

第1列分鐘1~5 9
第2列小時1~2 3(0表示子夜)
第3列日1~3 1
第4列月1~1 2
第5列星期0~6(0表示星期天)
第6列要運行的命令

那crontab每隔5分鐘就可以有如下的寫法:

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/a.sh

1-59/5 * * * * /home/a.sh

*/5 * * * * /home/a.sh

呵呵,以此類推

0,30 18-23 * * * /apps/bin/dbcheck.sh
上面的例子表示在每天1 8 : 0 0至2 3 : 0 0之間每隔3 0分鐘運行/ a p p s / b i n目錄下的d b c h e c k . s h。

二利用系統crontab來定時執行備份文件,按日期對備份結果進行保存,達到備份的目的。

1、創建保存備份文件的路徑/mysqlbak
#mkdir /mysqlbak //這個是建立在根目錄下的
2、創建/usr/sbin/mysqlbak文件
#vi /usr/sbin/mysql bak
輸入
rq=` date +%Y%m%d `
tar zcvf /mysqlbak/mysql$rq.tar.gz /var/lib/mysql/wiki
或者寫成
rq=` date +%Y%m%d `
mysqldump -u root -p123456 wiki | gzip > /mysqlbak/mysql$rq.sql.gz
//我這裡是備份的是wiki 數據庫用mysqldump 命令壓縮.sql文件,相關mysqldump 命令清查看手冊或者
建入以下命令#mysqldump --help 查看系統幫助
/var/lib/mysql是你數據庫文件的目錄,部分用戶是/usr/local/mysql/data,每個人可能不同
/mysqlbak/表示保存備份文件的目錄,這個每個人也可以根據自己的要求來做。
3、修改文件屬性,使其可執行
# chmod +x /usr/sbin/mysqlbak
4、修改/etc/crontab
#vi /etc/crontab
在下面添加
01 3 * * * root /usr/sbin/mysqlbak
表示每天3點01分鐘執行備份
5、重新啟動crond
# /etc/rc.d/init.d/crond restart
完成。
這樣每天你在/mysqlbak可以看到這樣的文件
mysql20071119.tar.gz(mysql20071119.sql.gz)
你直接下載就可以了。
在恢復數據庫時,在tar命令執行前,停止數據庫服務進程或鎖定數據庫,否則恢復數據時,會出現數據庫損壞的情形

Copyright © Linux教程網 All Rights Reserved