首页 > 代码库 > linux-任务计划at,cron
linux-任务计划at,cron
任务计划
1、在未来的某个时间点执行一次任务
at
batch
at 时间
at>command
at>ctrl+d
指定时间
绝对时间: HH:MM DD.MM.YY MM/DD/YY
相对时间: now+#
单位:mininus,hours,days,weeks
命令的执行结果:将以邮件的形式发送给安排任务的用户
[root@localhost ~]# at now+3minutes
at> ls /var
at> cat /etc/fstab<EOT>
job 1 at 2017-03-21 07:30
[root@localhost ~]# date
Tue Mar 21 07:28:24 PDT 2017
[root@localhost ~]# at now+10minutes
at> cat /etc/issue
at> <EOT>
job 2 at 2017-03-21 07:38
[root@localhost ~]# at -l
2 2017-03-21 07:38 a root (a为队列名称,默认为a)
1 2017-03-21 07:30 a root
[root@localhost ~]#
删除任务:at -d job_id =atrm job_id
[root@localhost ~]# at now+3minutes
at> ls /etc/fstab
at> <EOT>
job 3 at 2017-03-21 07:51
[root@localhost ~]# at -l
3 2017-03-21 07:51 a root
[root@localhost ~]# at -d 3
[root@localhost ~]# at -l
[root@localhost ~]#
黑名单:/etc/at.deny
白名单:/etc/at.allow (at.allow优先级高与at.deny)
2、周期性地执行某个任务;不需要指定时间
cron为一个不间断运行的服务
anacron:cron补充,可以实现让cron因为各种原因在过去的时间执行而未执行的任务,恢复正常后执行一次
系统cron任务
/etc/crontab
[root@localhost ~]# ls /etc/crontab
/etc/crontab
[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly (run-parts为脚本)
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
10,40 * * * * root run-parts /etc/cron.halfhourly
10,40 * * * 3,6 root run-parts /etc/cron.halfweekly
10,40 * * * 1-5 root run-parts /etc/cron.workdayly
(分钟 小时 天 月 周 用户 任务 )
分钟:0-59 小时:0-23 天:1-31 月:1-12 周:0-7
时间通配符:
*:对应所有的有效取值
,:离散时间点
-:连续时间点
/:对应取值范围内没多久
/#:对应取值范围内多久一次
*/3 * * * * 任务每3分钟一次
执行结果将以邮件形式发送给管理员
*/3 * * * * cat /etc/fstab > /dev/null 接收错误结果
*/3 * * * * cat /etc/fstab &> /dev/null 不接收任何结果
注意:cron的环境变量,执行的所有命令在PATH环境变量指定的路径下;
PATH=/bin:/sbin:/usr/bin:/usr/sbin
如果用户没有登陆,将没有PATH,使用绝对路径/bin/cat或者优先定义PATH环境变量
[root@localhost ~]# ls /etc/cron.daily/
0anacron 0logwatch cups logrotate makewhatis.cron mlocate.cron prelink rhsmd rpm tmpwatch
(0优先运行)
用户cron任务
/var/spool/cron/USERNAME
(分钟 小时 天 月 周 任务 )
用户任务的管理
crontab -l 列出当前用户的cron任务
crontab -e 编辑及校验语法错误
crontab -r 移除所有cron任务
crontab -u username:管理其他用户的cron任务
[root@localhost ~]# crontab -l
*/3 * * * * /bin/echo "how are you ?"
[root@localhost ~]# crontab -e
crontab: no changes made to crontab
[root@localhost ~]# crontab -e
crontab: no changes made to crontab
[root@localhost ~]# ls /var/spool/cron/root
/var/spool/cron/root
You have new mail in /var/spool/mail/root
[root@localhost ~]# cat /var/spool/cron/root
*/3 * * * * /bin/echo "how are you ?"
[root@localhost ~]# crontab -r
[root@localhost ~]# crontab -l
no crontab for root
[root@localhost ~]#
anacron任务
[root@localhost ~]# cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
1 65 cron.daily run-parts /etc/cron.daily 开机后65min,
7 70 cron.weekly run-parts /etc/cron.weekly
30 75 cron.monthly run-parts /etc/cron.monthly
[root@localhost ~]#
确保crond及anacron服务开启
[root@localhost ~]# service crond status
crond (pid 4376) is running...
[root@localhost ~]#
[root@localhost ~]# service anacron status
anacron is stopped
[root@localhost ~]#
[root@localhost ~]# chkconfig --list crond
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost ~]# chkconfig --list anacron
anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost ~]#
linux-任务计划at,cron