系統(tǒng)定時任務實現(xiàn)方法:
一、實現(xiàn)定時任務配置
1)系統(tǒng)默認定時任務:
cron.daily/ ---每天執(zhí)行目錄中腳本文件
cron.hourly/ ---每小時執(zhí)行目錄中腳本文件
cron.weekly/ ---每周執(zhí)行目錄中腳本文件
cron.monthly/ ---每月執(zhí)行目錄中腳本文件
vim oldboy.sh
· #!/bin/bash
echo "info_$(date +%F_%T)" >/tmp/
- 用戶自定義設置定時任務
一個命令 兩個文件
crontab --- 設置和查看定時任務命令
·# crontab -l --- 查看設置crontab -e --- 編輯設置定時任務/語法檢查功能
配置文件
/var/spool/cron/用戶名稱文件 --- 用戶設置定時任務配置文件
·/var/spool/cron/root
/var/log/cron --- 定時任務日志文件
二 定時任務如何進行配置
準備工作:
systemctl status crontab
ststemctl start crontab
編寫定時任務:
[root@qiwangyu ~]# cat /etc/crontab --- 定時任務樣例
SHELL=/bin/bash 環(huán)境變量信息
PATH=/sbin:/bin:/usr/sbin:/usr/bin 環(huán)境變量信息
MAILTO=root 環(huán)境變量信息
·# 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
定時任務時間信息
· * 分鐘 0-59 分
- 小時 0-23 時
- 日 1-31 天
- 月 1-12 月
- 周 0-6 周
執(zhí)行任務信息
命令/腳本
任務信息:
cp/etc/hosts /etc/hosts.bak
如何驗證定時任務功能:
01.實時監(jiān)控定時任務日志信息
[root@qiwangyu ~]# tail -f /var/log/cron
Jul 30 16:05:01 qiwangyu crond[8622]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
Jul 30 16:12:34 qiwangyu crontab[8626]: (root) LIST (root)
Jul 30 16:46:16 qiwangyu crontab[8646]: (root) BEGIN EDIT (root)
Jul 30 16:47:31 qiwangyu crontab[8649]: (root) BEGIN EDIT (root)
01 02 03 04
Aug 1 02:30:01 qiwangyu CROND[8933]: (root) CMD (cp /etc/hosts /etc/hosts.bak)
01.編寫定時任務觸發(fā)時間信息
02.主機名稱信息
03.讀取什么定時任務文件信息
04.定時任務完成了什么事情
02.加快定時任務執(zhí)行
調(diào)整時間信息
PS : 調(diào)整時間盡量往后調(diào)整
-
每隔一個小時,數(shù)據(jù)備份
/n 每隔多久執(zhí)行定時任務 間隔多久
· * 每分鐘 每小時 每天 每月 每周- */1 * * * cp /etc/hosts /etc/hosts.bak ×
0 /1 * * * cp /etc/hosts /etc/hosts.bak √
說明: 每隔一小時會執(zhí)行
1:00 --- 2:00 執(zhí)行時間條件
· * --- 每分鐘執(zhí)行
集合在一起表示在每小時前有就是每分鐘和每小時都執(zhí)行
PS : 在設好一小時時間,最好將分鐘事假也做規(guī)劃調(diào)整
0 */1 * * *
- */1 * * * cp /etc/hosts /etc/hosts.bak ×
每天上午9.10.11.12.點 執(zhí)行數(shù)據(jù)備份
· - 連續(xù)的時間范圍
0 9-12 * * * cp /etc/hosts /etc/hosts.bak-
每天上午9 11 執(zhí)行數(shù)據(jù)備份
, 非連續(xù)的時間范圍
00 9,11 * * *練習題總結(jié):
時間表示形式:
· * 每多少時間
*/n 每隔多久 間隔時間
n-m 連續(xù)時間范圍
n,m 非連續(xù)的時間范圍 -
定時任務編寫常見問題
- 每隔5分鐘,進行時間同步(ntpdate ntp1.aliyun.com)
在定時任務中 只識別兩個環(huán)境便令文件 /usr/bin ; /bin
如何編寫定時任務?
方法一:采用絕對路徑進行編寫*/5 * * * * /usr/sbin/ntpdate ntp1.ailyun.com
方法二:放入到腳本文件中!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
echo $PATH &>/tmp/oldboy.txt
ntpdate ntp1.ailyun.com
- 每隔5分鐘,進行時間同步(ntpdate ntp1.aliyun.com)
- 規(guī)范編寫定時任務
*/5 * * * * /usr/sbin/ntpdate ntp1.ailyun.com &>/dev/null
postfix 服務開啟 --- /var/spool/mail/root 郵件 文件不斷變大
postfix 服務關閉 --- /var/spool/cron/root 大量小文件
/dev/null --- 系統(tǒng)黑洞
-
將/etc/hosts 打包備份 /opt/hosts_時間信息.tar.gz 每分鐘操作
PS: 定時任務中有些特殊符號無法識別
解決方式一:將特殊符號前面加上轉(zhuǎn)義符號
% 符號前加 \- tar zcvf /opt/hosts_$(date +%F).tar.gz /etc/hosts
解決方式二:將有特殊符號命令放入腳本中
- 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
定時任務編寫注意事項:
01. 編寫定時任務需要有注釋信息 (時間 編寫人員 任務作用)
02. 編寫定時任務注意環(huán)境變量 /usr/bin ;/bin 命令書寫為絕對路徑
03. 編寫定時任務是注意特殊符號 需要標記轉(zhuǎn)義符號
04. 編寫定時任務需要將輸出信息定義到空 &>/dev/null
05. 編寫定時任務建議使用腳本編寫 #~/bin/bash
編寫定時任務規(guī)范:
命令編寫定時任務
第一個里程:測試命令是否可以在命令行執(zhí)行
第二個里程:放入定時任務中(絕對路徑)
第三個里程:調(diào)整時間信息進行測試
第四個里程:檢查日志信息/檢查任務執(zhí)行結(jié)果
腳本編寫定時任務
第一個里程:編寫腳本信息
第二個里程:測試腳本執(zhí)行效果
/bin/sh /server/scripts/test.sh
第三個里程:放入定時任務中(絕對路徑)
第四個里程:調(diào)整時間信息進行測試
第五個里程:檢查日志信息/檢查任務執(zhí)行結(jié)果
測試環(huán)境測試定時任務沒問題:
執(zhí)行腳本將線上服務器定時任務做改動
compress.sh
#!/bin/bash
tar xxxxx
在寫一個腳本
#!/bin/bash
echo "* * * * * /sh/bin /server/scripts/compress.sh" >>/var/spool/cron/root