cron的任务计划内容
一、在未来的某个时间点执行一次某任务
at 指定时间点,在未来的时间点一次性的执行某个任务
batch 不需要指定时间,但是它也只执行一次,batch的特性是在我们系统里面控型的时候,自动的选择这个控型的任务
at 时间
at> COMMAND 在at提示符下输入要执行的命令
at> Ctrl+d 表示提交
指定时间:10:20 10点20分
now+3m:从这点开始往后的三分钟,即3分钟以后
绝对时间:HH:MM, DD.MM.YY MM/DD/YY
at 8:10 指离这一次最近的8:10
相对时间:now+#
单位:minutes,hours,days,weeks
eg:at now+6hours 从这点开始往后的6小时
模糊时间:noon,midnight,teatime(下午4点)
命令的执行结果:将以邮件的的形式发送给安排任务的用户
at -l: 显示作业的列表 (列表中的a表示队列)
at -l = atq
at -d: 删除作业
at -d AT_JOB_ID = artm AT_JOB_ID
/etc/at.allow: 白名单 写在这个文件中的用户都允许使用at
/etc/at.deny: 黑名单 写在这个文件中的用户都不允许使用at
若/etc/at.allow和/etc/at.deny都存在,只有allow允许使用at
若/etc/at.allow和/etc/at.deny都不存在,只允许root使用at
若/etc/at.deny为空或只有/etc/at.allow存在,任何人都可以使用at
二、周期性地执行某任务
必须能够实现以服务的方式不停的监控某些脚本或某些任务的执行情况,这时就需要用一些服务来实现,这个服务就叫cron
cron : 自身是一个不间断运行的服务 (需运行在一个长期不关机的服务器上)
anacron:cron的补充,能够实现让cron因为各种原因在过去的时间该执行而为之行的任务在恢复正常执行一次;
cron:
系统cron任务
定义在/etc/crontab中
格式:分钟 小时 天 月 周 用户 任务
用户cron任务
定义在/var/spool/cron/USERNAME中
格式:分钟 小时 天 月 周 任务
时间的有效取值:
分钟:0-59
小时:0-23
天:1-31
月:1-12
周:0-7,0和7都表示周日
时间通配表示:
*:对应的所有有效取值
3 * * * * 每小时的第3分钟执行一次
3 * * * 7 每礼拜天的每个小时第3分钟执行一次
13 12 * * * 每天的12:13执行一次
13 12 * * * 5 每周五的12:13执行一次
13 12 6 7 * 每年的7月6号12点13分执行一次
,;离散时间点
10,40 * * * * 每小时的第10分和第40分执行一次
10,40 * * * * 2,5 每周二周五的每小时的10分40分执行一次
-:连续时间点
10 02 * * 1-5 每周从周一到周五的2点10分执行一次
/#:对应取值范围内每多久一次
* */2 * * * 每隔1个小时执行一次
*/3 * * * * 每3分钟执行一次
01 */2 * * * 每两小时执行一次
10 04 */2 * * 每两天执行一次
执行结果将以邮件形式发送给管理员:
*/3 * * * */bin/cat /etc/fstab &> /dev/null
三、cron的环境变量:cron执行的所有命令都去PATH环境变量指定的路径下去找
PATH /bin:/sbin/:/usr/bin:/usr/sbin
vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts 实现运行这个目录下的每一个脚本
01 * * * * root run-parts /etc/cron.hourly
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.mouthly
用户任务的管理:
crontab
-l:列出当前用户的所有cron任务
-e:编辑
eg: crontab -e
编辑内容:*/3 * * * * /bin/echo "how are you?"
-r:移除所有任务
-u USERNAME:管理其他用户的cron任务
eg:crontab -u hadoop -e
编辑内容:*/3 * * * * /bin/echo "how are you?"
然后 ls /var/spool/cron/ 就可显示hadoop
最后su - hadoop 执行crontab -l 就可显示*/3 * * * * /bin/echo "how are you?"
四、cron的补充anacron
最小操作单位是天,最多只能坚持到每天任务、每周任务和每月任务
vim /etc/anacrontab
SHELL=/bin/sh --指定解释器为bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin --为任务执行指定环境变量
MAILTO=root --指定发送邮件的用户
1 65 cron.daily run-parts /etc/cron.daily
7 70 cron.weekly run-parts /etc/cron.weekly
30 75 cron.monthly run-parts /etc/cron.monthly
以上三列从左往右四个字段分别代表的含义:
时间间隔:执行任务的时间间隔,单位为天(周、月)
等待时间:在时间间隔到期后,如果任务没有顺利执行,则会等待此处设置的时间,然后再次进行尝试执行
任务标识:有关此任务的说明,它可包括任何非空格的字符(/除外),通常都用在anacron信息中或是此任务的时间戳文件名
命令:实际执行的任务
注意:无论是cron还是anacron必须确保cron服务一定得执行
service crond status
service anacron status