一: Linux的定時(shí)任務(wù)crontab
Linux crontab 是用來定期執(zhí)行程序的命令。(Nginx 日志切割,數(shù)據(jù)庫備份等)
當(dāng)安裝完成操作系統(tǒng)之后,默認(rèn)便會(huì)啟動(dòng)此任務(wù)調(diào)度命令。
crond 命令每分鐘會(huì)定期檢查是否有要執(zhí)行的工作,如果有要執(zhí)行的工作便會(huì)自動(dòng)執(zhí)行該工作。
注意:新創(chuàng)建的 cron 任務(wù),不會(huì)馬上執(zhí)行,至少要過 2 分鐘后才可以,當(dāng)然你可以重啟 cron 來馬上執(zhí)行。
而 linux 任務(wù)調(diào)度的工作主要分為以下兩類:
1、系統(tǒng)執(zhí)行的工作:
系統(tǒng)周期性所要執(zhí)行的工作,如備份系統(tǒng)數(shù)據(jù)、清理緩存
2、個(gè)人執(zhí)行的工作:
某個(gè)用戶定期要做的工作,例如每隔 10 分鐘檢查郵件服務(wù)器是否有新信,這些工作可由每個(gè)用戶自行設(shè)置
1.crontab安裝與使用
安裝crontab
1.1 檢測系統(tǒng)是否安裝crond服務(wù)
service crond status
1.2 安裝
yum -y install vixie-cron
yum -y install crontabs
vixie-cron 軟件包是 cron 的主程序;
crontabs 軟件包是用來安裝、卸裝、或列舉用來驅(qū)動(dòng) cron 守護(hù)進(jìn)程的表格的程序。
1.3 創(chuàng)建任務(wù)
直接輸入命令crontab -e 或者編輯文件/etc/crontab 就可以直接編輯并且添加新的任務(wù)
命令:
crontab -e
或者
vi /etc/crontab
新的任務(wù):
*/1 * * * * /usr/local/nginx/sbin/cut_my_log.sh
1.4 重啟定時(shí)任務(wù):
service crond restart
1.5 其他說明
1.5.1 crontab其他命令
service crond start //啟動(dòng)服務(wù)
service crond stop //關(guān)閉服務(wù)
service crond restart //重啟服務(wù)
service crond reload //重新載入配置
service crond status //查看crontab服務(wù)狀態(tài)
1.5.2 設(shè)置開機(jī)自動(dòng)啟動(dòng)
chkconfig --level 345 crond on
1.5.3 定時(shí)任務(wù)設(shè)置
-
直接輸入命令crontab -e 或者編輯文件/etc/crontab 就可以直接設(shè)置定時(shí)任務(wù)。
-
輸入 crontab -e
-
按下 a 鍵進(jìn)入到編輯模式
-
輸入 0 */1 * * * /home/work/start-service.sh
-
同時(shí)按下 ctrl+c 退出編輯模式
-
按下 shift + : 輸入 wq 退出 crontab
與vi編輯文件步驟一樣
1.5.4 定時(shí)任務(wù)格式如下:
* * * * * command
分 時(shí) 日 月 周 命令
第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時(shí)1~23(0表示0點(diǎn))
第3列表示日期1~31
第4列表示月份1~12
第5列標(biāo)識(shí)號星期0~6(0表示星期天)
第6列要運(yùn)行的命令
星號(*):代表所有可能的值,例如month字段如果是星號,則表示在滿足其它字段的制約條件后每月都執(zhí)行該命令操作。
逗號(,):可以用逗號隔開的值指定一個(gè)列表范圍,例如,“1,2,5,7,8,9”。
中杠(-):可以用整數(shù)之間的中杠表示一個(gè)整數(shù)范圍,例如“2-6”表示“2,3,4,5,6”。
正斜線(/):可以用正斜線指定時(shí)間的間隔頻率,例如“0-23/2”表示每兩小時(shí)執(zhí)行一次。同時(shí)正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示每十分鐘執(zhí)行一次。
Crontab執(zhí)行時(shí)間計(jì)算工具:
https://tool.lu/crontab
1.5.5 示例
30 21 * * * /usr/local/etc/rc.d/lighttpd restart //每晚的21:30重啟apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart //每月1、10、22日的4 : 45重啟apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart //每周六、周日的1 : 10重啟apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart //每天18 : 00至23 : 00之間每隔30分鐘重啟apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart //每星期六的11 : 00 pm重啟apache。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart //每一小時(shí)重啟apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart //晚上11點(diǎn)到早上7點(diǎn)之間,每隔一小時(shí)重啟apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart //每月的4號與每周一到周三的11點(diǎn)重啟apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart //一月一號的4點(diǎn)重啟apache
*/30 * * * * /usr/sbin/ntpdate 210.72.145.44 //每半小時(shí)同步一下時(shí)間
二: 利用crontab定時(shí)備份mysql數(shù)據(jù)庫
1. 本地備份
實(shí)現(xiàn)本地備份A服務(wù)器的數(shù)據(jù)庫 備份文件依然在A服務(wù)器
1.1 新建腳本命令
vi /usr/local/bin/mysql-local-backup.sh
腳本內(nèi)容
DATE=$(date +%Y%m%d)
mysqldump -uroot -p'數(shù)據(jù)庫密碼' test > /var/lib/mysql/backup/test-"$DATE".sql;
test為要備份的數(shù)據(jù)庫,test-“$DATE”.sql為保存的備份文件
1.2 修改腳本權(quán)限
chmod +x /usr/local/bin/mysql-local-backup.sh
1.3 添加crontab定時(shí)任務(wù)
參照上面1.crontab安裝與使用
2. 遠(yuǎn)程備份
使用ssh協(xié)議的scp命令把A服務(wù)器備份的文件上傳到B服務(wù)器上,實(shí)現(xiàn)遠(yuǎn)程備份,前提條件是A服務(wù)器與B服務(wù)器建立了互信,也就是ssh免密登錄。
2.1 新建腳本命令
vi /usr/local/bin/mysql-local-backup.sh
2.2 腳本內(nèi)容 添加scp命令
DATE=$(date +%Y%m%d)
mysqldump -uroot -p'數(shù)據(jù)庫密碼' test > /usr/local/bin/mysql/backup/test-"$DATE".sql;
scp /usr/local/bin/mysql/backup/test-"$DATE".sql 137:/usr/local/bin/mysql/remote-backup/;
2.3 添加crontab定時(shí)任務(wù)
參照上面1.crontab安裝與使用文章來源:http://www.zghlxwxcb.cn/news/detail-573241.html
可參考文檔文章來源地址http://www.zghlxwxcb.cn/news/detail-573241.html
- 菜鳥教程Linux crontab 命令
- crontab詳解
到了這里,關(guān)于Linux的定時(shí)任務(wù)--CronTab 命令詳解及使用教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!