at一次性定時(shí)任務(wù)
# at服務(wù)是否安裝
chkconfig --list | grep atd
systemctl list-unit-files | grep atd # centos 7
# 查看狀態(tài)
service atd status
systemctl status atd.service # centos 7
# 開啟
chkconfig atd on
systemctl enable atd.service # centos 7
at的訪問(wèn)控制
如果含有/etc/at.allow,則文件中的用戶可以使用at命令(/etc/at.deny會(huì)被忽略)
如果不含/etc/at.allow划纽,含有/etc/at.deny文件貌夕,則/etc/at.deny文件中的用戶不能使用at命令磷籍,對(duì)root不起作用闷哆。
如果兩個(gè)文件都不存在站楚,那么只有root用戶可以使用at命令礁遵。
at命令
at [選項(xiàng)] 時(shí)間
選項(xiàng):
-m :當(dāng)at工作完成后轻绞,無(wú)論是否命令有輸出,都用email通知執(zhí)行at命令的用戶
-c 工作號(hào):顯示at工作的實(shí)際內(nèi)容
時(shí)間:
— HH:MM # 例如 02:30
— HH:MM YYYY-MM-DD # 例如02:30 2016-11-11
— HH:MM[am|pm] [month] [date] # 例如 02:30 dec 25
— HH:MM[am|pm] + [minutes|hours|days|weeks] # 例如 now + 5 minutes
# 查詢當(dāng)前服務(wù)器上的at工作
atq
# 刪除指定的at任務(wù)
atrm [工作號(hào)]
例1:
at now + 2minutes
at > /root/hello.sh >> /root/hello.log
ctrl+d 保存退出at命令
例2:
# 在指定的時(shí)間重啟
at 01:00 2016-11-11
at > /bin/sync
at > /sbin/shutdown -r now
crontab循環(huán)定時(shí)任務(wù)
cron服務(wù)管理與訪問(wèn)控制
# crond服務(wù)是否安裝
chkconfig --list | grep crond
systemctl list-unit-files | grep crond # centos 7
# 查看狀態(tài)
service crond status
systemctl status crond.service # centos 7 查看狀態(tài)
# 開啟
chkconfig crond on
systemctl enable crond.service # centos 7
cron的訪問(wèn)控制
如果含有/etc/cron.allow佣耐,則文件中的用戶可以使用at命令(/etc/cron.deny會(huì)被忽略)
如果不含/etc/cron.allow政勃,含有/etc/cron.deny文件,則/etc/cron.deny文件中的用戶不能使用cron命令兼砖,對(duì)root不起作用奸远。
如果兩個(gè)文件都不存在既棺,那么只有root用戶可以使用cron命令。
crontab命令
crontab [選項(xiàng)]
選項(xiàng):
-e:編輯crontab
-l:查詢crontab任務(wù)
-r:刪除當(dāng)前用戶所有的crontab任務(wù)
# 進(jìn)入crontab編輯界面懒叛,會(huì)打開vim編輯你的工作
crontab -e
格式 :* * * * * 執(zhí)行的任務(wù)
# 在執(zhí)行crontab -e時(shí)不需要指定user-name丸冕,在編輯/etc/crontab時(shí)需要指定用戶名
# 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
項(xiàng)目 | 含義 | 范圍 |
---|---|---|
第一個(gè)"*" | 一小時(shí)中的第幾分鐘 | 0-59 |
第二個(gè)"*" | 一天中的第幾小時(shí) | 0-23 |
第三個(gè)"*" | 一月中的第幾天 | 1-31 |
第四個(gè)"*" | 一年中的第幾月 | 1-12 |
第五個(gè)"*" | 一周中的星期幾 | 0-7(0.7都代表星期日) |
特殊符號(hào) | 含義 |
---|---|
* | 代表任何時(shí)間。比如第一個(gè)"*"代表一小時(shí)中每分鐘都執(zhí)行一次薛窥。 |
, | 代表不連續(xù)的時(shí)間胖烛。比如"0 8,12,16 * * *命令"代表在每天的8:00,12:00,16:00都執(zhí)行一次。 |
- | 代表連續(xù)的時(shí)間范圍拆檬。比如" 0 5 * * 1-6 命令"洪己,代表在周一到周六的凌晨5:00執(zhí)行命令 |
*/n | 代表每個(gè)多久執(zhí)行一次。比如" */10 * * * * 命令"竟贯,代表每個(gè)10min執(zhí)行一次 |
注意事項(xiàng)
- 六個(gè)選項(xiàng)不能為空答捕,必須填寫。(時(shí)間占五個(gè)選項(xiàng)屑那,命令一個(gè))拱镐。如果不確定使用“*”代替時(shí)間。
- crontab定時(shí)任務(wù)持际,最小是有效時(shí)間是分鐘沃琅,最大有效時(shí)間范圍是月。
- 在定義時(shí)間時(shí)蜘欲,日期和星期最好不要再一條定時(shí)任務(wù)中出現(xiàn)益眉。(如果出現(xiàn)的話是幾號(hào)或者星期幾都會(huì)執(zhí)行)
- 在定時(shí)任務(wù)中,不管是直接寫命令姥份,還是在腳本中寫命令買最好都用絕對(duì)路徑郭脂。
系統(tǒng)的crontab設(shè)置
系統(tǒng)的定時(shí)任務(wù),crontab -e
是每個(gè)用戶執(zhí)行的命令澈歉。也就是說(shuō)不同的用戶身份可以執(zhí)行自己的定時(shí)任務(wù)展鸡。可是有些定時(shí)任務(wù)需要系統(tǒng)執(zhí)行埃难,這時(shí)們就需要編輯 /etc/crontab 這個(gè)配置文件了莹弊。
執(zhí)行系統(tǒng)的定時(shí)任務(wù)的方法
1.手工執(zhí)行定時(shí)任務(wù)
2.系統(tǒng)定時(shí)任務(wù)
①把需要定時(shí)執(zhí)行的腳本復(fù)制到/etc/cron.{daily,weekly,monthly}目錄中的一個(gè)
②修改/etc/crontab配置文件
anacron配置
anacron是用來(lái)保證在系統(tǒng)關(guān)機(jī)的時(shí)候錯(cuò)過(guò)的定時(shí)任務(wù),可以再系統(tǒng)開機(jī)之后再執(zhí)行涡尘。
vi /etc/anacrontab
內(nèi)容如下:
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
anacron檢測(cè)周期
- anacron會(huì)使用一天忍弛,七天,一個(gè)月作為檢測(cè)周期
- 在系統(tǒng)的/var/spool/anacron/目錄中存在cron.{daily,weekly,monthly}文件考抄,用于記錄上次執(zhí)行cron的時(shí)間
- 和當(dāng)前時(shí)間作比較细疚,若在兩個(gè)時(shí)間的差值炒過(guò)了anacron的指定時(shí)間差值,證明有cron任務(wù)被執(zhí)行