计划任务 at & crond tbc
一次性任务
at 工具
- 由包 at 提供
- 依赖与atd服务,需要启动才能实现at任务
- at队列存放在/var/spool/at目录中
- 执行任务时PATH变量的值和当前定义任务的用户身份一致
- 作业执行命令的结果中的标准输出和错误以执行任务的用户身份发邮件通知给 root
常用选项
-V 显示版本信息
-t time 时间格式 [[CC]YY]MMDDhhmm[.ss]
-l 列出指定队列中等待运行的作业;相当于atq
-d N 删除指定的N号作业;相当于atrm
-c N 查看具体作业N号任务
-f file 指定的文件中读取任务
-m 当任务被完成之后,将给用户发送邮件,即使没有标准输出
at任务控制
/etc/at.{allow,deny} 控制用户是否能执行at任务
白名单:/etc/at.allow 默认不存在,只有该文件中的用户才能执行at命令
黑名单:/etc/at.deny 默认存在,拒绝该文件中用户执行at命令,而没有在at.deny 文件中的使用者则可执行
如果两个文件都不存在,只有 root 可以执行 at 命令
# at 15:48
at> date > /root/test.at
at> <EOT>
job 6 at Fri Apr 16 15:48:00 2020
atq
周期性任务计划 cron
周期性任务计划cron相关的程序包:
- cronie:主程序包,提供crond守护进程及相关辅助工具
- crontabs:包含CentOS提供系统维护任务
- cronie-anacron:cronie的补充程序,用于监控cronie任务执行状况,如:cronie中的任务在过去该运行的时间点未能正常运行,则anacron会随后启动一次此任务
cron 依赖于crond服务,确保crond守护处于运行状态
service crond status
cron任务分为
- 系统cron任务:系统维护作业,/etc/crontab 主配置文件, /etc/cron.d/ 子配置文件
- 用户cron任务:保存在 /var/spool/cron/USERNAME,利用 crontab 命令管理
计划任务日志:/var/log/cron
crontab命令格式
crontab [-u user] [-l | -r | -e] [-i]
-l 列出所有任务
-e 编辑任务
-r 移除所有任务
-i 同-r一同使用,以交互式模式移除指定任务
-u user 指定用户管理cron任务,仅root可运行
控制用户执行计划任务:
/etc/cron.{allow,deny}
e.g.
#/bin/sh
basedir=/data/bachup
www_src=$basedir/www_src/$(date +%F-%H-%M)
[ ! -d "$www_src" ] && mkdir -p $www_src
cd /data/
tar -jpcf $www_src/www.tar.bz2 www
##########################################
crontab -e
* */1 * * * sh /data/script/www_backup.sh
systemctl restart crond