
计划任务
周期性计划任务 cron
# 安装
yum install -y cronie crontabs cronie-anacron
cron计划任务分为 2 种
系统计划任务 | 用户计划任务 |
---|---|
系统维护作业,/etc/crontab 主配置文件, /etc/cron.d/ 子配置文件 | 保存在 /var/spool/cron/USERNAME,利用 crontab 命令管理 |
- 系统计划任务主配置文件
/etc/crontab
,只有root用户可编辑
计划任务时间格式
语法
* * * * *
分 时 日 月 周
@yearly 0 0 1 1 * #每年执行一次
@annually 0 0 1 1 * #每年执行一次
@monthly 0 0 1 * * #每月执行一次
@weekly 0 0 * * 0 #每周执行一次
@daily 0 0 * * * #每天执行一次
@hourly 0 * * * * #每小时执行一次
@reboot Run once after reboot #重启后执行一次
相关配置文件
/etc/crontab #cron编写系统计划任务主文件
/etc/cron.d/ #cron编写系统计划任务子文件
/etc/cron.hourly/ #每小时执行目录下存放的可执行文件
/etc/cron.daily/ #每天执行目录下存放的可执行文件
/etc/cron.weekly/ #每周执行目录下存放的可执行文件
/etc/cron.monthly/ #每月执行目录下存放的可执行文件
-
/etc/crontab
文件为crond系统计划任务主配置,其中也可以把一个计划任务单独存放/etc/cron.d/
目录下,避免误修改主配置文件内容 -
/etc/anacrontab
配置文件说明,anacrontab程序是对cronie计划任务是否执行进行检查,负责执行/etc/ cron.daily /etc/cron.weekly /etc/cron.monthly中系统任务
cron 用户计划任务
crontab
命令常用参数
参数 | 含义 |
---|---|
crontab -e | 调用vi编辑器,编写用户计划任务 |
crontab -l | 查看用户的计划任务 |
crontab -r | 删除全部用户计划任务 |
crontab -i | 同-r一同使用,以交互式模式移除指定任务 |
crontab -u <用户> [ -e | -l | -r | -i ] | 仅root可运行,指定用户管理cron任务 |
注意点
# 转义
30 2 * * * /bin/cp -a /etc/ /data/etc`date +\%F_\%T`
# crontab中将把%后面内容作为前面命令的标准输入
* * * * * bc % 2+1
sleep
命令实现以秒级别运行任务
- 计划任务也无法完成以每7分钟执行任务,原因是一个小时60分钟无法被7整除
sleep 20s #sleep命令默认以秒级别
sleep 5m #进程休眠5分钟
sleep 3h #进程休眠3个小时
sleep 2d #进程休眠2天
usleep
微秒级的休眠
#休眠一微秒
usleep 100000
sleep 0.000001
#休眠一毛秒
usleep 1000
sleepp 0.0001
一次性计划任务 at
# 安装
yum install -y at
at命令常用参数
参数 | 含义 |
---|---|
at -l | 查看at命令创建的计划任务;相当于 atq |
at -d <任务编号> | 删除指定编号计划任务;相当于 atrm |
at -c <任务编号> | 查看指定编号的任务;相当于cat /var/spool/at/目录下对应脚本文件 |
at -f <文件> <时间> | at命令接收标准输入信息,即:从指定文件中读取任务 |
at -m | 当任务被完成之后,将给用户发送邮件,即使没有标准输出 |
at -t <时间> | 定义时间格式 |
邮件接收信息
1. at 创建计划任务相当于创建一个脚本,存放在 /var/spool/at目录下
2. 计划任务会以创建计划任务的用户身份执行,也就是用户环境变量在执行at 计划变量值是一致的
3. 在执行at计划任务,执行命令有输出和错误信息误以执行任务的用户身份发邮件通知给 root,所以系统上需要邮件服务postfix
# 安装
[root@myx01~]$ yum install -y postfix
[root@myx01~]$ systemctl start --now postfi
# 使用
[root@myx01~]$ mail
示例
1.每周的工作日1:30,将/etc目录数据备份至/backup目录中,保存的文件名称格式为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
[root@myx01~]$ crontab -e mkdir /backup && tar Jcpf /backup/etcbak-`date -d '1 day ago' +%Y-%m-%d-%H`.tar.xz /etc &> /dev/null
2.每两小时取出当前系统/proc/meminfo文件中以S或M开头的信息追加至/tmp/meminfo.txt文件中
[root@myx01~]$ crontab -e
0 */2 * * * cat /proc/meminfo | egrep "^S|^M" >> /tmp/meminfo.txt
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 梦缘羲
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果