一次性计划任务
以备份yum仓库文件的计划任务为例,先检查脚本:
[@]# cat /root/backup-yum-repo.sh/*#!/bin/bashmkdir /opt/yum-repo-backup-dir -pcp -r /etc/yum.repos.d /opt/yum-repo-backup-dir/yum.repos.d-`date "+%Y-%m-%d- %H:%M:%S"`.bak# 使用at命令来执行一次性备份yum仓库文件,为了顺利的查看at的执行结果,使用下面命令来关闭ntp同步,并设置 你的时间。# timedatectl set-ntp 0命令关闭了ntp同步timedatectl set-ntp 0#date -s "2021-12-4 18:30:50"命令设置日期和时间date -s "2021-12-4 18:30:50"#下午的5点执行,也就是17:00执行,如果此时时间已经过了当天下午,那么顺延到第二天at 5:00PMat> /root/backup-yum-repo.shat> <EOT>#提交at的计划任务使用ctrl+d#6点22分执行,如果此时时间已经过了当天的6:22分,那么顺延到第二天at 6:22at> /root/backup-yum-repo.shat> <EOT># 2021年的3月15号的此刻执行,如果没有指定time,那么就是定制计划任务的time作为执行天的timeat 2021-03-15at> /root/backup-yum-repo.shat> <EOT>#2021年3月15号的12点12分执行at 12:12 2021-03-15at> /root/backup-yum-repo.shat> <EOT># 5天之后的9点15分执行at 9:15 + 5 daysat> /root/backup-yum-repo.shat> <EOT># 在中午12点执行,如果过了12点,时间顺延到第二天at noonat> /root/backup-yum-repo.shat> <EOT># 在周一执行at mondayat> /root/backup-yum-repo.shat> <EOT>1、星期日:Sunday [ˈsʌndi]],英文缩写:SUN。2、星期一:Monday [ˈmʌndi],英文缩写:MON。3、星期二:Tuesday [ˈtju:zdi],英文缩写:TUE。4、星期三:Wednesday [ˈwenzdi],英文缩写:WED。5、星期四:Thursday [ˈθə:zdi]],英文缩写:THU。6、星期五:Friday [ˈfraidi],英文缩写:FRI。7、星期六:Saturday [ˈsætədi]],英文缩写:SAT。# 不能在过去的时间使用at,没有后悔药at 12:12 2020-03-15at: refusing to create job destined in the past
一次性计划任务管理
[@]# atq24 Mon Mar 15 17:01:00 2021 a root25 Sun Dec 12 17:02:00 2021 a root[@]# atrm 24[@]# atq25 Sun Dec 12 17:02:00 2021 a rootat -c job_id
一次性计划任务使用控制
at.allowat.deny
在你的操作系统当中可能同时有多个用户在使用at命令设置一次性计划任务,那么你可以控制哪些用户可以使用计划任 务,哪些用户不可以使用计划任务。 at一次性计划任务的白名单是at.allow,黑名单是at.deny,不建议既使用黑名单,又使用白名单。建议使用白名单,白名单比黑名单力度要强。默认在CentOS系统中默认是没有at.allow文件的,可以自己创建。 at.allow的优先级是高于at.deny。
周期性计划任务
仍以备份yum仓库文件的计划任务为例,下面脚本仅供参考:
[@]# cat backup-yum-repo.sh#!/bin/bashmkdir /opt/yum-repo-backup-dir -pcp -r /etc/yum.repos.d /opt/yum-repo-backup-dir/yum.repos.d-`date "+%Y-%m-%d- %H:%M:%S"`.bakif [ `ls /opt/yum-repo-backup-dir/ | wc -l` -ge 10 ]thenfor i in `ls -tr /opt/yum-repo-backup-dir/ | head -5`dorm -rf /opt/yum-repo-backup-dir/$idonefi
Crontab命令
crontab -e:编辑当前shell用户的计划任务;crontab -e -u user:编辑指定用户的计划任务(只有root用户可以编辑其他人的计划任务,非root用户只能编辑自己的计划任务);crontab -l:查看当前用户的所有计划任务;crontab -l -u user:列出指定用户的所有计划任务;
# 示例:
//每分钟一次
* * * * * /path/to/script
//每小时的整点一次
0 * * * * /path/to/script
//每天凌晨1点准时运行
0 1 * * * /path/to/script
//每天凌晨1点这个小时中的每分钟运行一次
* 1 * * * /path/to/script
//每个月的第一天的每分钟运行一次
* * 1 * * /path/to/script
//1月份中的每一分钟都运行一次
* * * 1 * /path/to/script
//每周第0天即周日的每一分钟
* * * * 0 /path/to/script
//每5分钟一次
0/5 * * * * /path/to/script
//每5分钟一次
0/5 0/2 * * * /path/to/script
//每个小时的第一分钟和第10分钟分别运行一次,例如3:01,3:10
1,10 * * * * /path/to/script
//每个小时的第15分钟~第20分钟每分钟运行一次,总共一小时运行6次
15-20 * * * * /path/to/script
//每年4月~6月,4月,5月,6月的10号和15号这2天,从0点开始,包括0点,每两个小时的第1分钟和第2分钟,第5~8分钟分别运行一次
1,2,5-8 0/2 10,15 4-6 * /path/to/script
