Linux基本计划任务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基本计划任务相关的知识,希望对你有一定的参考价值。
在linux下有两种计划任务的计划:只执行一次、周期性执行。
(1)只执行一次,在未来的某个指定时间执行一次
指定的时间格式有:
绝对时间:HH:MM,DD.MM.YY,MM/DD/YY
相对时间:now+数字(minutes,hours,days,weeks)
模糊时间:noon(即12点),midnight(即24点),teatime(即16点)
命令格式:at [选项] [时间]
命令选项:
-m 指定任务完成后,将给用户发送邮件
-l 与atq命令一样
-d 与atrm命令一样
-v 显示任务将被执行的时间
-c 打印任务内容到标准输出
-V 显示版本信息
atd服务必须启动
rhel6 | rhel7 |
---|---|
#service atd restart |
#systemctl restart atd.service |
1、2分钟后向/tmp/1.txt输入当前时间,
[[email protected] ~]# at now+2minutes #回车
at> echo `date` >> /tmp/1.txt #回车
at> <EOT> #写入完命令后按下crtl+d提交任务
job 3 at Thu Mar 8 15:44:00 2018
[[email protected] ~]# tail -f /tmp/1.txt
2018年 03月 08日 星期四 15:44:00 CST
2、查看当前at的任务,at -l
[[email protected] ~]# at now+5minutes
at> echo `date` >> /tmp/1.txt
at> <EOT>
job 4 at Thu Mar 8 15:52:00 2018
[[email protected] ~]# at -l
4 Thu Mar 8 15:52:00 2018 a root
[[email protected] ~]#
3、删除任务,at -d jobID 或者 atrm jobID
[[email protected] ~]# at now+5minutes
at> echo `date` >> /tmp/1.txt
at> <EOT>
job 5 at Thu Mar 8 15:54:00 2018
[[email protected] ~]# at -l
5 Thu Mar 8 15:54:00 2018 a root
[[email protected] ~]# at -d 5
[[email protected] ~]# at -l
[[email protected] ~]#
4、系统空闲的时候自动执行任务
[[email protected] ~]# batch
at> echo "hello" > /dev/pts/1
at> <EOT>
job 6 at Thu Mar 8 15:55:00 2018
[[email protected] ~]# hello
[[email protected] ~]#
at有两个配置文件/etc/at.deny和/etc/at.allow
如果deny单独存在,则是deny文件记录以外的所有用户都可以使用at命令
如果allow单独存在,则是只允许allow内的用户可以使用at命令
如果同时存在,则只允许allow内的用户使用at命令
(2)周期性执行任务
可周期性的在指定时间里重复执行任务
命令格式:crontab [选项] [参数]
命令选项:
-u 指定设置某用户的计划任务,只有root可以设置
-l 列出用户的计划任务
-r 删除某用户的所有计划任务
-e 编辑某用户的所有计划任务
时间格式说明:
第一个位置表示:分钟(0-59)
第二个位置表示:小时(0-23)
第三个位置表示:日期(1-31)
第四个位置表示:月份(1-12)
第五个位置表示:星期(0-7,0和7均代表星期日)
第六个位置表示:所要执行的命令
时间通配表示:*
代表当前位置的所有时间点5 * * * *
每天每小时的05分开始执行,
离散时间点10,25,50 * * * *
每天每小时的10分、25分、50分各执行一次-
连续时间点30-40 * * * *
每天每小时的30-40分钟之间,每一分钟执行一次/
对应取值范围内每隔多少时间执行一次1 */2 * * *
每隔两小时的01分执行一次
crond任务分为用户计划和系统计划
1、系统计划的配置文件在/etc/crontab文件里
2、用户计划在/var/spool/cron/username
crontab权限问题到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在
用法如下:
1、如果两个文件都不存在,则只有root用户才能使用crontab命令。
2、如果cron.allow存在但cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。
3、如果cron.allow不存在, cron.deny存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其它用户都能使用。
4、如果两个文件都存在,则列在cron.allow文件中而且没有列在cron.deny中的用户可以使用crontab,如果两个文件中都有同一个用户,以cron.allow文件里面是否有该用户为准,如果cron.allow中有该用户,则可以使用crontab命令。
crond服务必须启动 |
rhel6 | rhel7 |
---|---|---|
#service crond restart |
#systemctl restart crond |
示例:
- 每小时的09分执行一次
9 * * * *
- 每周3至6的10点、23点分别执行一次
0 10,23 * * 3-6
或者0 10,23 * * 3,4,5,6
- 每小时的10-30分之间每隔2分钟执行一次
10-30/2 * * * *
- 每天12点09分执行一次
9 12 * * *
- 每周3的12点09分执行一次
9 12 * * 3
- 每月9号12点09分执行一次
9 12 9 * *
- 每年的6、12月的9号12点09分分别执行一次
9 12 9 6,12 *
思考题
* */2 * * *
,代表什么意思?0 12 9 * 6
,代表什么意思?
答案
- 每隔一小时,每分钟执行一次
- 每月9号且是周六的时候,12点正执行一次(一般比较少日与周同时使用,因为要同时满足条件的概率较低。)
以上是关于Linux基本计划任务的主要内容,如果未能解决你的问题,请参考以下文章