任务计划

所谓计划任务就是指某一个时间系统自动做一件事情如输入指令或者保存文件等等 
计划任务分两种:一次性计划任务命令(at)和周期性计划任务命令(crontab)
at的用法:如果当前时间为2017年6月6日 
at 18:00 2017-06-6

w > /root/who.txt 
init 0 
(输入ctrl+d结束编辑) 
此时将意味着我们的系统将在第二天的傍晚6点执行两个命令,一个是将当时系统访问的客户列表做一个另存为,另一个是关机。 
这个命令将是一次性执行。 
这个任务会生成一个可执行文件到/var/spool/at/这个目录中可以通过cat查看其中文件内容 
atq或者at -l:这两个命令是将制定的计划列出清单会工作的id和执行时间
atrm [id]或者at -d [id]:这两个命令是将指定的任务删除,具体删哪个任务是由任务的id决定的。 
at -c [id] :这个命令是通过工作id来查看计划中的内容的等同于直接查看/var/spool/at/目录中的可执行文件。 
(注:查看#at -l; 删除#at -d [id]; 查看计划内容#at -c [id])

at这个功能本身是一项开机及执行的服务,利用chkconfig --list atd可以看到atd这个服务是在全字符模式和图形模式默认开启的 

。如果这个服务被关闭了我们也可以通过两种方式来开启它。 
第一种 /etc/init.d/atd {start|stop|restar|stadues|…} 
第二种 service atd {start|stop|restar|stadues|…} 
at有黑白名单分别为 
/etc/at.deny黑名单此名单中的用户不可以使用at命令centos默认有这个文件。 
/etc/at.allow白名单这个文件默认没有可以自己创建,这个文件意味着只有白名单的用户可以使用at功能其他人都不可以。 
如果两个文件中都有同一个用户那么allow优先。 
有的操作系统可能没有安装at功能我们可以通过rpm -q at 来查看at工具有没有安装如果没有下载一个装上即可centos系统自带。 
说到at也可以顺带提一个命令batch。 
batch的用法和at基本相同而且batch可以不指定时间,或者即使指定了时间到时也未必会执行计划的操作。 
因为batch会考虑系统的负载状况当负载状况低于0.8才会执行其中的操作。

下面来介绍周期性计划cron
 所谓周期性就是设定等任务计划会根据你指定的时间条件进行周期性的执行。这样就不用像at一样一条一条制定了。

用法具体如下: 
crontab -e -u (user)这是对用户进行任务编辑;如果直接输入crontab -e 则是对当前用户建立计划 
进入计划编辑界面后就可以编辑计划了计划是已行分开的每一行是一个计划。格式如下: 
分 (0~59) 时(0~23)日期 (1~31)月(1~12)星期(0~7)命令 如果用*则表示通配其中星期0和7都代表星期天。 
如果我们想在每年的2月和12月的1号和28号的晚上八点到12点每半个小时向系统所在的所有用户广播see your back 
编辑为 /30 20-0 1,28 2,12 wall “see your back” 
注意:由于每年的星期几和日期搭配是会变化的,所以星期几和日期时间不要同时写,以免系统会真的等到若干年后两个时间重合再运行你指定的命令。 
如果我们是root用户时也可以通过vim在家目录编辑一个内容为周期运行的指令文件,这样我们通过命令 crontab -u student /root/文件名 来为student用户设置计划。 
计划编辑好后查询命令为 crontab -l -u (user)同时也可以到/var/spool/cron/这个目录中,通过cat查看其中文件内容 
删除命令 crontab -r -u (user) 这种删除方式会将用户的所有计划全盘删除因此不建议使用,还是应该进入编辑模式来有目的的删除。 
这个周期性计划服务也是默认开启的开关的方法也是两种 
第一种 /etc/init.d/crond {start|stop|restar|stadues|…} 
第二种 service crond {start|stop|restar|stadues|…} 
cron有黑白名单分别为 
/etc/cron.deny黑名单此名单中的用户不可以使用crontab命令centos默认有这个文件。 
/etc/cron.allow白名单这个文件默认没有可以自己创建,这个文件意味着只有白名单的用户可以使用crontab其他人都不可以。 
cron功能是否安装可以通过rpm -q vixie-cron来确认。

原创文章,作者:huchaowei,如若转载,请注明出处:http://www.178linux.com/77709

赞 (0)
huchaoweihuchaowei
上一篇 2017-06-07 08:36
下一篇 2017-06-07 10:11

相关推荐

  • Bash的基础特性之命令执行状态返回值和命令行展开

    Bash的基础特性之命令的执行状态 Linux的命令执行结果状态有两种,分别为:1、成功2、失败bash使用特殊变量 $? 保存最近一条命令的执行状态结果使用echo $? 命令来查看命令执行状态返回值:0:成功1-255:失败 示例:         [root@localho…

    Linux干货 2016-11-04
  • redis + keepalived 双主模型

    redis + keepalived 双主模型 架构图:    1.vip默认绑定在redis主上,由redis主提供服务,redis从为备用节点。(实际上提供服务的只是vip) 2.当redis主挂掉,vip会默认漂移至redis从。由redis从提供服务,redis主已经挂掉。 3.当redis主已经恢复,redis从继续提供服务和挂…

    Linux干货 2016-06-23
  • 马哥教育网络班20期+第2周课程练习

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 常用文件管理命令有:ls、mkdir、cd、pwd、cp、rm、mv、touch、cat、more、less、head、tail等 (1)ls命令:列出目录内容 ls [OPTION]… [FILE]…  &nbs…

    Linux干货 2016-06-29
  • 马哥教育网络班22期+第7周课程练习

    week7: 1、创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程…

    Linux干货 2016-09-26
  • LAMP分离环境的搭建(最新版本的mysql+php+http源码编译安装)

    实验者:FrankStar      实验日期:20150628 任务:主要是实现在Linux环境下配置LAMP环境,利用VMware+centos6.4实现,将LAMP分离为多台主机; 附注:由于大家的环境不一样,可能有些人已经安装了这个包或者那个软件,所以调试的环境结果也不一样,为了尽量能模拟到 可能出现的所有问题,在编译会…

    Linux干货 2015-06-30
  • N26-第九周

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash # # # NUM1=0 NUM2=0 for i in `cut -d: -f7 /etc/passwd` ;do if [[ “$i” = ‘/bin/bash…

    Linux干货 2017-03-15