-
定時任務(wù)概念
-
定時任務(wù)實現(xiàn)方式
-
定時任務(wù)配置應(yīng)用
1.系統(tǒng)定時任務(wù)概念
1.類似于生活中的鬧鐘
2.時間信息不準(zhǔn)時,可定時時間同步操作
3.備份數(shù)據(jù)信息(代替人自動完成一些任務(wù))
2.系統(tǒng)定時任務(wù)實現(xiàn)方法
1.定時任務(wù)軟件:
cronie :默認(rèn)系統(tǒng)自帶定時服務(wù)
atd:定時任務(wù)只執(zhí)行一次恭应,一次性定時服務(wù)
anacron:定時時間有固定設(shè)置 ---> cronie-anacron
實現(xiàn)定時任務(wù)配置:
方法一:系統(tǒng)默認(rèn)定時任務(wù) (/etc下)
cron.hourly/ --- 每小時執(zhí)行目錄中腳本文件
cron.daily/ --- 每天執(zhí)行目錄中腳本文件
cron.weekly/ --- 每周執(zhí)行目錄中腳本文件
cron.monthly/ --- 每月執(zhí)行目錄中腳本文件
例如:寫個腳本放進目錄執(zhí)行
vim oldboy.sh
#!/bin/bash
echo "info_$(date +%F_%T)" >/tmp/test_cron.txt
方法二:用戶自定義設(shè)置定時任務(wù)
crontab:設(shè)置和查看定時任務(wù)命令
crontab -l --- 查看設(shè)置的定時任務(wù)
crontab -e --- 編輯設(shè)置定時任務(wù)/語法檢查功能
配置文件路徑:
/var/spool/cron/root --- root用戶設(shè)置定時任務(wù)配置文件
/var/spool/cron/oldboy --- oldboy用戶設(shè)置定時任務(wù)配置文件
/var/log/cron --- 定時任務(wù)日志文件
定時任務(wù)如何進行配置
準(zhǔn)備工作:確認(rèn)定時任務(wù)服務(wù)是否開啟
systemctl start crond
systemctl enable crond
編寫定時任務(wù):
定時任務(wù)樣例文件
[root@oldboy63 ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
————————————————————————————————————————————————————————
* * * * * 命令/腳本
定時任務(wù)時間信息 執(zhí)行任務(wù)信息
時間信息:
*(分)*(時)*(日)*(月)*(周)
分鐘: 0-59
小時: 0-23
日期: 1-31
月份: 1-12
星期: 0-6
例:
凌晨2點半 將數(shù)據(jù)進行備份:cp /etc/host /etc/hosts.bak
crontab -e
30 2 * * * cp /etc/host /etc/hosts.bak
1. 實時監(jiān)控定時任務(wù)日志信息
[root@oldboyedu ~]# tail -f /var/log/cron
Jul 30 16:56:25 oldboyedu crontab[42580]: (root) BEGIN EDIT (root)
Jul 30 16:56:38 oldboyedu crontab[42580]: (root) REPLACE (root)
Jul 30 16:56:38 oldboyedu crontab[42580]: (root) END EDIT (root)
01 02 03 04
Aug 1 02:30:01 oldboyedu CROND[42950]: (root) CMD (cp /etc/host /etc/hosts.bak)
01: 編寫定時/定時任務(wù)觸發(fā) 時間信息
02: 主機名稱信息
03: 讀取什么定時任務(wù)文件信息
04: 定時任務(wù)完成了事情
2. 加快定時任務(wù)執(zhí)行
調(diào)整時間信息-----date -s
PS: 調(diào)整時間盡量向后調(diào)整
3.下午3點40,8月6日,將數(shù)據(jù)進行備份:
首先胆屿,日期不對
所以偶宫,在設(shè)置時間信息時,周信息不能和日期信息一起設(shè)置
4.每隔1個小時纯趋,數(shù)據(jù)備份:
/n 每隔多久執(zhí)行定時任務(wù)
0 */1 * * * cp /etc/hosts /etc/hosts.01
每過整點時就會執(zhí)行
在設(shè)置好一個時間信息時,前面的時間也要做好規(guī)劃
5.每天上午9,10,11,12點進行數(shù)據(jù)備份
- :表示連續(xù)的時間范圍
0 9-12 * * * cp /etc/hosts /etc/hosts.01
6.每天上午9纯命,11點進行數(shù)據(jù)備份:
痹栖, :表示非連續(xù)的時間范圍
0 9,11 * * * cp /etc/hosts /etc/hosts.01
時間的表示形式:
* 每多少時間
*/n 每隔多久
1-10 連續(xù)的時間范圍
1,10 非連續(xù)的時間范圍
定時任務(wù)編寫常見問題:
1.每隔5分鐘 進行時間同步:
方法一: 采用絕對路徑進行編寫
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
方法二: 放入到腳本文件中
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/oldboy:/oldgirl:/root/bin
echo $PATH &>/tmp/oldboy.txt
ntpdate ntp1.aliyun.com
說明: 定時任務(wù)執(zhí)行時, 識別的環(huán)境變量只有/usr/bin:/bin
2.規(guī)范化編寫定時任務(wù)
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null
/dev/null -------系統(tǒng)黑洞
postfix 服務(wù)開啟 --- /var/spool/mail/root 郵件 文件不斷變大 占用更多block
postfix 服務(wù)關(guān)閉 --- /var/spool/postfix/maildrop/ 大量小文件 占用更多inode
3. 將/etc/hosts 打包備份 /opt/hosts_時間信息.tar.gz 每分鐘操作
tar zcvf /opt/hosts_$(date +%F).tar.gz /etc/hosts
tar zcvf /opt/hosts_`date +%F`.tar.gz /etc/hosts
解決方式一: 將特殊符號前面加上轉(zhuǎn)義符號
* * * * * tar zcvf /opt/hosts_$(date +\%F).tar.gz /etc/hosts
解決方式二: 將有特殊符號命令放入腳本中
#!/bin/bash
tar zcvf /opt/hosts_$(date +%F).tar.gz
* * * * * sh /server/scripts/tar.sh &>/dev/null
說明: 定時任務(wù)中有些特殊符號無法識別
定時任務(wù)編寫注意事項:
01. 編寫定時任務(wù)需要有注釋信息 (時間 編寫人員 任務(wù)作用)
02. 編寫定時任務(wù)注意環(huán)境變量 /usr/bin:/bin 命令書寫為絕對路徑
03. 編寫定時任務(wù)注意特殊符號 需要標(biāo)記轉(zhuǎn)義符號
04. 編寫定時任務(wù)需要將輸出信息定義到空 &>/dev/null
05. 編寫定時任務(wù)建議使用腳本編寫