一次性计划任务
以备份yum
仓库文件的计划任务为例,先检查脚本:
[@]# cat /root/backup-yum-repo.sh
/*#!/bin/bash
mkdir /opt/yum-repo-backup-dir -p
cp -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:00PM
at> /root/backup-yum-repo.sh
at> <EOT>
#提交at的计划任务使用ctrl+d
#6点22分执行,如果此时时间已经过了当天的6:22分,那么顺延到第二天
at 6:22
at> /root/backup-yum-repo.sh
at> <EOT>
# 2021年的3月15号的此刻执行,如果没有指定time,那么就是定制计划任务的time作为执行天的time
at 2021-03-15
at> /root/backup-yum-repo.sh
at> <EOT>
#2021年3月15号的12点12分执行
at 12:12 2021-03-15
at> /root/backup-yum-repo.sh
at> <EOT>
# 5天之后的9点15分执行
at 9:15 + 5 days
at> /root/backup-yum-repo.sh
at> <EOT>
# 在中午12点执行,如果过了12点,时间顺延到第二天
at noon
at> /root/backup-yum-repo.sh
at> <EOT>
# 在周一执行
at monday
at> /root/backup-yum-repo.sh
at> <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-15
at: refusing to create job destined in the past
一次性计划任务管理
[@]# atq
24 Mon Mar 15 17:01:00 2021 a root
25 Sun Dec 12 17:02:00 2021 a root
[@]# atrm 24
[@]# atq
25 Sun Dec 12 17:02:00 2021 a root
at -c job_id
一次性计划任务使用控制
at.allow
at.deny
在你的操作系统当中可能同时有多个用户在使用at
命令设置一次性计划任务,那么你可以控制哪些用户可以使用计划任 务,哪些用户不可以使用计划任务。 at
一次性计划任务的白名单是at.allow
,黑名单是at.deny
,不建议既使用黑名单,又使用白名单。建议使用白名单,白名单比黑名单力度要强。默认在CentOS系统中默认是没有at.allow
文件的,可以自己创建。 at.allow
的优先级是高于at.deny
。
周期性计划任务
仍以备份yum
仓库文件的计划任务为例,下面脚本仅供参考:
[@]# cat backup-yum-repo.sh
#!/bin/bash
mkdir /opt/yum-repo-backup-dir -p
cp -r /etc/yum.repos.d /opt/yum-repo-backup-dir/yum.repos.d-`date "+%Y-%m-%d- %H:%M:%S"`.bak
if [ `ls /opt/yum-repo-backup-dir/ | wc -l` -ge 10 ]
then
for i in `ls -tr /opt/yum-repo-backup-dir/ | head -5`
do
rm -rf /opt/yum-repo-backup-dir/$i
done
fi
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