作业管理(任务计划)

任务计划就好比我们的闹钟一样,到了指定的时间就该去做对应的事情。

任务计划分为两类:

一次性的任务计划:只执行一次就结束

周期性的任务计划:每隔一定的周期去做相同的事情

at命令就是专门用来处理一次性的计划任务

batch也是处理一次性的计划任务但是它是由系统自行选择空闲时间去执行此处指定的任务(不常用)

crontab可以根据定义的周期信息,循环的去做一些事情

 

在使用此命令之前都要先安装相应的包,at和cronie,安装之后要启用相应的服务

at:

centos6:使用service atd start 启动

centos7:使用systemctl  start atd启动

crontab:

centos6:使用service crond start启动

centos7:使用systemctl restart crond.service启动

了解任务计划的相关信息之后我们来看下这些命令的具体使用:

at命令:

格式:at [option] TIME
常用选项:
-V 显示版本信息:
-l: 列出指定队列中等待运行的作业;相当于atq(查询)
-d: 删除指定的作业;相当于atrm(删除)
-c: 查看具体作业任务
-f /path/from/somefile:从指定的文件中读取任务
-m:当任务被完成之后,将给用户发送邮件,即使没有标准输出

TIME:定义出什么时候进行 at 这项任务的时间
HH:MM [YYYY-mm-dd]
noon, midnight, teatime(4pm)
tomorrow
now+#{minutes,hours,days, OR weeks}

执行at命令时会有多行输入,当输入完命令之后按Ctrl+d 提交退出

注意:作业执行命令的结果中的标准输出和错误以邮件通知给相关用户

如果是写在脚本中,最好是重定向至/dev/null

 

如果想取消任务计划,可先使用at -l 查看任务计划

然后使用at -d job_num取消

at计划任务默认保存在/var/spool/at中即使重启也能生效

如果不想让某些用户去创建任务,系统还给我们提供了相应的配置文件 黑名单和白名单

我们只需把用户名写入相应的名单中就给了他们不同的权限

白名单:/etc/at.allow

黑名单配置文件:/etc/at.deny

我们可以简单的理解为一个用户到底有没有创建任务的权限只需先看白名单,白名单里面有那就可以创建

也可以简单的说白名单优先级高于黑名单(个人理解如果有误请指出)

另外如果一个用户创建任务之后被放入了黑名单,那么任务是还会执行

 

接下来我们再来说说crontab

cron周期任务分为系统任务和普通用户任务,当然名字不同配置文件也不同

系统cron任务的配置文件:/etc/crontab

我们只需在此配置文件中按照格式写入即可

简单的把格式表示一下(每相邻两个之间用空格隔开)

分钟     小时      日期    月份    周几     用户名     命令

星号(*)表示 每……

离散取值
#,#,#
连续取值
#-#

 

普通用户计划任务

配置文件 /var/spool/cron/USERNAME

crontab 命令

格式   crontab [-u user] [-l | -r | -e] [-i]

-l: 列出所有任务
-e: 编辑任务
-r: 移除所有任务
-i:同-r一同使用,以交互式模式移除指定任务
-u user: 仅root可运行,指定用户管理cron任务

普通用户可以使用crontab -e创建计划任务但不能修改,如果要修改则还要执行crontab -e file

当然我们也可以设置黑名单和白名单配置文件是/etc/cron.{allow,deny}

此处我们不再赘述和上面一样

注意:运行结果的标准输出和错误以邮件通知给相关用户

 

工作中如果有时候马上就到任务执行的时候了却因为其他一些因素导致关机,出现故障等这时原定的计划任务没有执行怎么办?别担心系统中还有anacron系统来解决此类问题

我们打开/etc/anacrontab来看下(截取的只是最下面与我们相关的)

#period in days delay in minutes job-identifier command
1     5       cron.daily          nice run-parts      /etc/cron.daily
7     25     cron.weekly     nice run-parts      /etc/cron.weekly
@monthly 45    cron.monthly   nice run-parts     /etc/cron.monthly

第二行表示:一天之内没有被执行的任务将在开机五分钟后执行

下面两行想必你也明白了吧

 

以上是个人的理解,如果有错误请及时指出,谢谢!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/97578

(0)
上一篇 2018-05-05 20:24
下一篇 2018-05-06 09:34

相关推荐