一.什么是定時任務(wù)
定時任務(wù)就是定點執(zhí)行某個任務(wù)辙培。
二.為什么要用定時任務(wù)
電商秒殺,定時開啟崭庸,定時關(guān)閉怀浆。
定時備份文件
定時同步時間
定時爬蟲等等。怕享。揉稚。
三.定時任務(wù)語法
*? *? *? *? * user-name? command to be executed
? ? ? ? ? ? ? ? ? ? ? (用戶名,那個用戶)? ? ? ? ? ? ? (要執(zhí)行的任務(wù))
[root@localhost ~]# vim /etc/crontab
SHELL=/bin/bash(執(zhí)行命令解釋器)
PATH=/sbin:/bin:/usr/sbin:/usr/bin(環(huán)境變量)
SHELL=/bin/bash? ? ? ?
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root(郵件發(fā)給誰)
# 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
【符號代表】
*:代表任意的(分熬粗,時搀玖,日,月驻呐,周)時間都執(zhí)行
-:表示一個時間范圍灌诅,時間段,例:5-7
含末,:表示分隔時間段猜拾,例:6,0佣盒,4表示每周六挎袜,日,四都執(zhí)行
*/1:表示每隔多長時間執(zhí)行一次肥惭,例:*/10 表示每隔10分鐘執(zhí)行一次盯仪。
四.定時任務(wù)書寫規(guī)范
00? 02? *? *? *? ? ? ? ? ? ? ? ? ? ? ? ? 每天凌晨2點整執(zhí)行
00? 02? 1? *? *? ? ? ? ? ? ? ? ? ? ? ? ? 每月1號凌晨2點整執(zhí)行
00? 02? 14? 2? *? ? ? ? ? ? ? ? ? ? ? 每年的2月14號凌晨2點整執(zhí)行
00? 02? *? *? 7? ? ? ? ? ? ? ? ? ? ? ? ? 每周日凌晨2點整執(zhí)行
00? 02? *? 6? 5? ? ? ? ? ? ? ? ? ? ? ? 每年6月每周5凌晨2點整執(zhí)行
00? 02? 14? *? 7? ? ? ? ? ? ? ? ? ? ? 每月14號凌晨兩點整執(zhí)行,或者每月周日凌晨2點整執(zhí)行蜜葱。
00? 02? 14? 2? 7? ? ? ? ? ? ? ? ? ? ? 每年2月14日凌晨2點整執(zhí)行全景,或每年2月的每周日凌晨2點整執(zhí)行。
*/10? 02? *? *? *? ? ? ? ? ? ? ? ? ? ? 每天從凌晨2點開始牵囤,每10分鐘執(zhí)行一次
*? *? *? *? *? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 每分鐘執(zhí)行一次
00? 00? 14? 2? *? ? ? ? ? ? ? ? ? ? ? 每年2月14日凌晨12點整執(zhí)行
*/5? *? *? *? *? ? ? ? ? ? ? ? ? ? ? ? ? 每5分鐘執(zhí)行一次
00? 02? *? 1爸黄,2滞伟,8? *? ? ? ? ? ? 每年1月,2月炕贵,8月的凌晨2點整都執(zhí)行一次
00? 02? 1-8? *? *? ? ? ? ? ? ? ? ? ? ? 每月1號到18號凌晨2點整都執(zhí)行
0? 21? *? *? *? ? ? ? ? ? ? ? ? ? ? ? ? ? 每天21點整執(zhí)行一次
45? 4? 1梆奈,10,22? *? *? ? ? ? ? ? 每月的1號称开,10號鉴裹,22號的凌晨4點45分執(zhí)行。
45? 4? 1-10? *? *? ? ? ? ? ? ? ? ? ? ? 每月1號到10號的凌晨4點45分執(zhí)行? ? ? ? ? ? ? ?
3钥弯,15? 8-11? */2? *? *? ? ? ? ? ? ? 每兩天8點到11點的3分和15分各執(zhí)行一次
0? 23-7/1? *? *? *? ? ? ? ? ? ? ? ? ? 每天的23號到凌晨7點径荔,每隔1小時執(zhí)行一次。
15? 21? *? *? 1-5? ? ? ? ? ? ? ? ? ? 每周1到周5脆霎,21點15分執(zhí)行
*? 02? *? *? 7? ? ? ? ? ? ? ? ? ? ? ? ? 每周日凌晨2點開始執(zhí)行总处,2點的每1分鐘都執(zhí)行一次
四.定時任務(wù)使用方法
crontab命令
-e參數(shù):編輯定時任務(wù)
-l參數(shù):查看定時任務(wù)
-r參數(shù):刪除定時任務(wù)
-u參數(shù):指定其他用戶
【實踐案例】
1.每天凌晨12點03分做一次備份,備份/etc/目錄到/backup/下
準備環(huán)境:
[root@localhost ~]# mkdir /backup
(創(chuàng)建backup目錄)
[root@localhost ~]# vim backup.sh
tar -zcf /backup/$(date +%F)_etc.tar.gz /etc
(編寫腳本睛蛛,打包/etc/到/backup目錄下)
[root@localhost ~]# crontab -e
(添加定時任務(wù))
編寫定時任務(wù):
#每天凌晨12點03分備份/etc/目錄到/backup/目錄下
03 00 * * * /usr/bin/bash backup.sh
(驗證:date -s 更改時間鹦马,產(chǎn)看/backup目錄是否有壓縮包)
2.使用root用戶每5分鐘執(zhí)行一次時間同步
[root@localhost ~]# crontab -e -u root
(添加定時任務(wù),指定root用戶)
[root@localhost ~]# crontab -l
#使用root用戶每5分鐘執(zhí)行一次時間同步
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null
五.crond注意事項
1.編寫定時任務(wù)時一定要注釋忆肾。
2.將需要定期執(zhí)行的任務(wù)寫入Shll腳本中荸频,避免直接使用命令無法執(zhí)行的情況,比如(tar客冈,date等命令)旭从。
3.定時任務(wù)的結(jié)尾一定要有&>/dev/null,或者將結(jié)果追加重定向>>/tmp/date.log文件场仲。
4.注意有些命令是無法執(zhí)行的和悦,比如:(echo"123">>/tmp/test.log &>/dev/null)
5.在編輯定時任務(wù)時,命令必須得使用絕對路徑渠缕。
六.crond如何備份
1.通過查看/var/log/cron中的執(zhí)行記錄鸽素,去推算執(zhí)行的時間。
2.定時的備份/var/spool/cron/{uwername}
七.crond如何拒絕某個用戶使用
使用root將需要拒絕的用戶編寫到/etc/cron.deny文件中
root用戶
[root@localhost ~]# cat /etc/cron.deny
zhangyao
zhangyao用戶
[zhangyao@localhost ~]$ crontab -e
You (zhangyao) are not allowed to use this program (crontab)
See crontab(1) for more information