Linux任务计划
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux任务计划相关的知识,希望对你有一定的参考价值。
at任务
单次定时执行任务
at命令:at [option] TIME
u 常用选项:
-V 显示版本信息:
-l: 列出指定队列中等待运行的作业;相当于atq
-d: 删除指定的作业;相当于atrm
-c: 查看具体作业任务
-f /path/from/somefile:从指定的文件中读取任务
-m:当任务被完成之后,将给用户发送邮件,即使没有标准输出
u 注意:作业执行命令的结果中的标准输出和错误以邮件通知给相关用户
u TIME:定义出什么时候进行 at 这项任务的时间
HH:MM [YYYY-mm-dd]
noon, midnight, teatime(4pm)
tomorrow
now+#{minutes,hours,days, OR weeks}
u执行方式:
1)交互式 2)输入重定向 3)at –f 文件
uat队列存放在/var/spool/at目录中
u/etc/at.{allow,deny}控制用户是否能执行at任务
白名单:/etc/at.allow 默认不存在,只有该文件中的用户才能执行at命令
黑名单:/etc/at.deny 默认存在,拒绝该文件中用户执行at命令,而没有在
at.deny 文件中的使用者则可执行
如果两个文件都不存在,只有 root 可以执行 at 命令
周期性计划任务cron
命令及程序包
确保服务运行:
CentOS 7: systemctl status crond
CentOS 6: service crond status
系统cron任务:系统维护作业
在/etc/crontab文件中设置
其中本身带有配置信息的使用规则:
第一位*代表每分钟,可取值0-59,例如取值5则表示每小时的05分开始执行
第二位*代表每小时,可取值0-23,例如取值1则表示每天的1点(AM)
第三位*代表每月的哪一号,可取值1-31
第四位*代表一年的哪一月份,可取值1-12
第五位*代表星期几,可取值(0-6)星期天是0
如果所在位数是*则代表,每xx时间执行,所有都是*则代表每分钟执行
例如,
下图第一个任务表示 6月5日14点5分已root身份运行free -m >> /data/memstat.log
第二个任务表示每个星期二的14点5分已root身份运行free -m >> /data/memstat.log
用户cron任务:
因为这里是root执行crontab -e所以这里表示root用户每10分钟执行一次后面的任务
ucrontab命令定义
每个用户都有专用的cron任务文件: /var/spool/cron/USERNAME
ucrontab命令: crontab [-u user] [-l | -r | -e] [-i] -l: 列出所有任务 -e: 编辑任务 -r: 移除所有任务 -i:同-r一同使用,以交互式模式移除指定任务 -u user: 仅root可运行,指定用户管理cron任务
u控制用户执行计划任务: /etc/cron.{allow,deny}
crontab -e 命令
at | crontab | |
一次性作业使用 | 重复性作业使用crontab Create | |
Create | at time | crontab -e |
List | at -l | crontab -l |
Details | at -c jobnum | N/A |
Remove | at -d jobnum | crontab -r |
Edit | N/A | crontab -e |
没有被重定向的输出会被邮寄给用户
根用户能够修改其它用户的作业
crontab的日志信息:/var/log/cron*
以上是关于Linux任务计划的主要内容,如果未能解决你的问题,请参考以下文章