任务计划:
1、在未来的某个时间点执行一次某任务;
at 指定时间执行
batch 空闲时间执行
at 时间
at>COMMAND
at>Ctrl+d
指定时间:
绝对时间:HH:MM, DD.MM.YY MM/DD/YY
相对时间:now+#
单位:minutes,hours, days, weeks
模糊时间:noon, midnight, teatime
命令的执行结果:将以邮件的形式发送给安排任务的用户
[[email protected] tmp]# at now+1min
at> ls /tmp
at> <EOT> #按ctl + d
job 2 at 2016-12-02 17:17
[[email protected] tmp]# at -l 相当于atq
3 2016-12-02 17:17 a root
[[email protected] tmp]# at -d 相当于atrm
3 2016-12-02 17:17 a root
2、周期性地执行某任务;
cron命令简介:
linux中有一个命令可以定期来执行系统任务。这就是crond服务。
1.命令格式:
cron [选项][文件]
crontab -l //列出当前的所有调度任务
crontab -l -u jp //列出用户jp的所有调度任务
crontab -r //删除所有任务调度工作
crontab -e
Minute Hour Day Month Dayofweek command
分钟 小时 天 月 天每星期 命令
Minute 每个小时的第几分钟执行该任务
Hour 每天的第几个小时执行该任务
Day 每月的第几天执行该任务
Month 每年的第几个月执行该任务
DayOfWeek 每周的第几天执行该任务
2.命令功能:
cron:自身是一个不间断运行的服务 service crond {start|stop|restart|reload|status}
anacron:cron的补充,让cron因为各种原因在过去的时间该执行而未执行的任务在恢复正常执行一次
系统cron任务:
/etc/crontab
分钟 小时 天 月 周 用户 任务
用户cron任务:
/var/spool/cron/USERNAME
分钟 小时 天 月 周 任务
时间的有效取值:
分钟:0-59 小时:0-23 天:1-31 月:1-12 周:0-7,0和7都表示周日
时间通配表示:
* 对应时间的所有有效取值
3 * * * *
3 * * * 7
13 12 6 7 *
, 离散时间点: 10,40 02 * * 2,5
- 连续时间点: 10 02 * * 1-5
/# 对应取值范围内每多久一次: */3 * * * *
5 * * * * ls
//指定每小时的第5分钟执行一次ls命令
30 5 * * * ls
//指定每天5:30执行一次执行ls命令
40 7 18 * * ls
//指定每月18号的7:40分执行ls命令
30 5 18 6 * ls
//指定每年的6月18日5:30执行ls命令
50 6 * * 0 ls
//每星期日的6:50执行ls命令
[可用英文表示,sun表示星期天,mon星期一]
30 3 10,20 * * ls
//每月10号及20号的3:30执行ls命令 [“,”连接多个不连续的时段 ]
25 8-11 * * * ls
//每天8-11点的第25分钟执行ls命令 [“-”连接连续的时段 ]
*/15 * * * * ls //每15分钟执行一次[即每个小时的第0 15 30 45 60分钟执行ls命令]
0 */7 * * * ls
//指定
每7小时执行一次
ls命令[即每天的第0 7 14 21点整执行ls命令]
* */7 * * * ls
//
每天7小时执行一次
ls命令[即每天的第0 7 14 21点的一小时中的每分钟]
30 6 */10 * * ls //每月每隔10天6:30执行一次ls命令[每月的1、11、21、31日的6:30]
每天7:55以root 身份执行/etc/cron.daily目录中的所有可执行文件
55 7 * * * root run-parts /etc/cron.daily
//[红色表示执行后面目录中的所有可执行文件]
每两小时执行一次: 08 */2 * * *
每两天执行一次: 10 04 */2 * *
执行结果将以邮件形式发送给管理员:命令要绝对路径
*/3 * * * * /bin/cat /etc/fstab > /dev/null #正常结果清除,错误结果仍发邮件
*/3 * * * * /bin/cat /etc/fstab &> /dev/null #所有结果清除
cron的环境变量:cron执行所有命令都去PATH环境变量指定的路径下去找
#!/bin/bash
PATH /bin:/sbin:/usr/bin:/usr/sbin #定义PATH环境变量
#如去掉参数rum-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.monthly
[[email protected] etc]# ls cron*
cron.deny crontab
cron.d:
0hourly sysstat
cron.daily:
logrotate makewhatis.cron mlocate.cron prelink readahead.cron tmpwatch
cron.hourly:
0anacron mcelog.cron
cron.monthly:
readahead-monthly.cron
cron.weekly:
99-raid-check
[[email protected] etc]# ls /var/spool/cron/
hadoop
---end---