计划任务大致两种:一次性任务和周期性计划任务
一次性任务:用完即删除,依赖at包
一次性任务需要邮箱功能,若没有,执行下面两条命令
yum -y install postfix
systemctl enable --now postfix
[root@centos8_1~]#rpm -ql at #检查at包是否安装
[root@centos8_1~]#systemctl status atd #启动
● atd.service - Job spooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-04-20 11:07:43 CST; 5h 12min ago
Main PID: 1097 (atd)
Tasks: 1 (limit: 11086)
Memory: 660.0K
CGroup: /system.slice/atd.service
└─1097 /usr/sbin/atd -f
Apr 20 11:07:43 centos8_1 systemd[1]: Started Job spooling tools.
[root@centos8_1~]#
at命令使用:
常用选项:
at [option] TIME
-V 显示版本信息
-t time 时间格式 [[CC]YY]MMDDhhmm[.ss]
-l 列出指定队列中等待运行的作业;相当于atq
-d N 删除指定的N号作业;相当于atrm
-c N 查看具体作业N号任务
-f file 指定的文件中读取任务
-m 当任务被完成之后,将给用户发送邮件,即使没有标准输出
at队列存放在/var/spool/at目录中,ubuntu存放在/var/spool/cron/atjobs目录下
例:创建一个打印hello的一次性任务:
一次性任务完成后文件自动删除,计划任务都是发生在未来,因此标准输出不会直接打印至终端,而是通过邮件的方式放送至创建任务的账户
/etc/at.{allow,deny} 控制用户是否能执行at任务
白名单:/etc/at.allow 默认不存在,只有该文件中的用户才能执行at命令
黑名单:/etc/at.deny 默认存在,拒绝该文件中用户执行at命令,而没有在at.deny 文件中的使用
者则可执行
如果两个文件都不存在,只有 root 可以执行 at 命令
allow文件优先级高,即用户同时存在于两个文件内,也可以执行at命令
(at一次性任务用的比较少)
周期性任务计划cron
相关包:
cronie:主程序包,提供crond守护进程及相关辅助工具
crontabs:包含centos提供系统维护任务
cronie-anacron:cronie的补充程序,用于监控cronie任务的执行情况如:cronie中的任务在过去运行的时间点未运行。cron任务分为
系统cron任务:系统维护作业,/etc/crontab 主配置文件, /etc/cron.d/ 子配置文件
用户cron任务:保存在 /var/spool/cron/USERNAME(ubuntu 系统存放
在/var/spool/cron/crontabs/USERNAME),利用 crontab 命令管理则anacron会随后启动一次此任务
crontab命令:
每个用户都有专用的cron任务文件:/var/spool/cron/USERNAME
默认标准输出和错误会被发邮件给对应的用户,如:wang创建的任务就发送至wang的邮箱
root能够修改其它用户的作业
用户的cron 中默认 PATH=/usr/bin:/bin,如果使用其它路径,在任务文件的第一行加PATH=/path或
者加入到计划任务执行的脚本中
第六个字段指定要运行的命令。 该行的整个命令部分,直至换行符或“%”字符,指定的shell执行.
除非使用反斜杠(\)进行转义,否则该命令中的“%”字符将变为换行符,并且第一个%之后的所
有数据将作为标准输入发送到该命令。
crontab命令格式:
常用选项:
-l 列出所有任务
-e 编辑任务
-r 移除所有任务
-i 同-r一同使用,以交互式模式移除指定任务
-u user 指定用户管理cron任务,仅root可运行
执行crontab -e后打开一个空白文件,格式参照cat /etc/crontab
五个※代表不同的执行时间,详情看图即可,另外周期性计划任务只能精确到分,需要精确至秒为单位可以写入脚本,利用命令sleep
每分钟执行一次备份/etc的配置文件,五个*默认每分钟执行
下图表示每2个小时整,1月至5月的1至5号、10号和20号,或者是星期天和星期6(0星期天,1星期一,2星期二····),这里需要注意的是天单位和星期的关系是或者的意思,即1至5号,10号和20号 或者 星期天星期六
查看星期几:
添加PATH是因为cron计划默认的PATH只有/usr/bin和/bin,为确保任务顺利执行,通常会在任务前添加,或写入需要执行的脚本里
####粗略####