您的位置:首页 > 运维架构 > Linux

linux的任务计划

2013-04-01 07:53 375 查看
Linux中有许许多多的任务要执行,也有可能你在日常生活中需要让linux在某一个特定的时间做一件事,也有可能想让系统在每天或每周的一个特定时间做一件事情。这些都需要有一个任务计划来决定什么时间完成哪些事情。

1、在某一个时间内,完成某个任务一次
这种任务只用执行一次,当任务执行一次过后就完成它的使命。这个任务就再也不会执行,直到下一次重新把它写入计划中
这种任务用at命令指定任务和时间
at 命令分三步骤
# at 时间 #指定任务的执行时间
# at > COMMAND #完成的任务命令
# at > Ctrl +d # 完成任务指定

使用at命令的时候指定的时间方法有三种:
①、绝对时间:HH:MM, DD.MM.YY MM/DD/YY
例如:at 10:50 #指定任务开始执行的时间在10点50分
②、相对时间:now+3m:意思是指从现在开始3分钟后执行任务
单位有:minutes, hours, day, weeks
③、模糊时间:noon(中午), midnight(深夜), teatime(喝茶时间,下午4点)

at 命令的执行结果会以邮件的方式发送给指定任务的用户

at -l : 显示任务列表
at -d AT_JOB_ID : 终止任务

还有一种命令batch会让系统自动寻找任务比较空闲的时间进行任务

2、周期性的执行某任务
cron : cron自身就是一个不间断执行的服务脚本
系统任务放置在/etc/crontab文件中,其格式为:
分钟 小时 天 月 周 用户 命令
用户任务放置在/var/spool/cron/USERNAME以用户名命名的文件中,其格式为:
分钟 小时 天 月 周 任务 用户任务没有用户名是因为默认为指定任务的用户

时间的有效取值范围为:
分钟:0-59
小时:0-23
天:1-31
月:1-12
周:0-7, 0和7都代表周日

时间统配标示:
*;对应的所有有效取值
3 * * * * #每小时的第三分钟
3 * * * 7 #每周日的每小时的第三分钟
13 12 6 7 * #每年的7月第6天的12点13分
,: 离散时间点取值
10,40 02 * * 2,5 #每周二和周五的2点10分和40分 这种时间任务也被称为半小时任务
-:连续时间点
10 02 * * 1-5 #每周一至周五的2点10分
/#:对应取值范围内每多久一次
*/3 * * * * #每3分钟一次

每两小时执行一次:
08 */2 * * * #每过两小时的第8分钟
每两天执行一次:
10 04 */2 * * #每过两天的4点10分

12 * * * * root ping 172.16.17.1 # 任务为每小时的第12分钟ping一下172.16.17.1主机
将以邮件的方式发送给管理员
如果不想让邮件发送,就在命令的最后床底给/dev/null

cron的环境变量:cron执行所有命令都去PATH环境变量指定的路径下去找
PATH /bin:/sbin:/usr/bin:/usr/sbin
脚本中要指定环境变量

用户任务的管理:
crontab
-l:列出当前用户的所有cron任务
-e:编辑
-r:移除所有任务
-u USERNAME: 管理其他用户的cron任务
也有可能,正当任务需要执行的时候我们的主机关闭了。那任务就不能执行了,这时我们如果需要任务执行的时候,anacron命令能够实现让cron因为各种原因在过去的时间该执行而未执行的任务在恢复正常执行一次
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 任务 计划