作业管理(任务计划)

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

任务计划分为两类:

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

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

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

相关推荐

  • shell回顾

    测试基础知识

    2018-05-17
  • rpm指令详解

    程序包管理器: 功能:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装、升级、卸载和查询等管理操作;   1、程序包的组成清单(每个程序包都单独实现);         文件清单          安装或卸载时运行的脚本   2、数据库(公共)        程序包的名称和版本;       依赖关系;       功能…

    Linux笔记 2018-03-30
  • 网络管理 tcp/udp详解 (传输层)

    简介: TCP和UDP的区别 TCP是面向连接的传输控制协议,而UDP提供了无连接的数据报服务。 TCP具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作; UDP具有较好的实时性,工作效率较TCP协议高; …

    2018-05-01
  • 第三周作业

    1 列出当前系统上所有已经登陆的用户的用户名,注意:同一个用户名登陆多次,则只显示一次。
    2 取出最后登陆到当前系统的用户的相关信息。
    3 取出当前系统上被用户当作其默认shell的最多的那个shell.
    4 将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
    5 取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
    6 列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字装换为大写后保存至/tmp/etc.conf文件中。
    7 显示/var目录下一级子目录或文件的总个数。
    8 取出/etc/group文件中第三个字符段数值最小的10个组的名字。
    9 将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
    10. 请总结描述用户和组管理类命令的使用方法并完成以下练习:
    (1)创建组distro, 其GID为2016
    (2)创建用户mandriva, 其ID号为1005,基本组为distro
    (3)创建用户mageia, 其ID号为1100,家目录为/home/linux
    (4)给用户mageia添加密码,密码为mageedu
    (5)删除mandriva, 但保留其家目录
    (6)创建用户slackware, 其ID号为2002, 基本组为distro, 附加组为peguin
    (7)修改slackware的默认shell为/bin/tcsh
    (8)为用户slackware的新增附加组admins

    2018-06-05
  • MySQL数据库第一部分之简介和安装

    mysql数据库的安装方式:源码安装;二进制安装;yum安装:

    2018-06-04
  • 马哥Linux第三周

    第三周作业 7.2-7.8

    Linux笔记 2018-07-08