zoukankan      html  css  js  c++  java
  • Linux管理,例行性工作,at和cron

    at

    仅执行一次就结束调度(服务atd必须启动)

    at的配置信息

    1.我们设定的at进程其实都是被以文本的方式写入到/var/spool/at/目录内,然后这些设定的进程便会等待atd服务来启动这些进程了

    2.并不是所有的人都可以使用at命令,具体的规则由/etc/at.allow/etc/at.deny这两个文件指定(一般系统只有其中一个文件)

    (1)被at.allow记录的用户有权限使用at命令

    (2)被at.deny记录的用户没有权限使用at命令

    (3)若没有其中任何一个文件,则只有root用户可以使用at命令

    步骤:

    1.安装atd服务

    因为很多发行版本并没有安装atd服务,所以需要我们自己安装。(我的ubuntu 18.04LTS就没有安装)

    sudo apt install at

    2.启动/重启atd服务

    方法一:

    service atd restart 
    或者
    service atd start

    方法二:

    /etc/init.d/atd restart
    

    注意:

    前者是根据环境变量启动服务,后者是根据可执行文件所在路径启动服务

    3.at使用方法

    (1)参数:

    -m   ===>   在at完成之后,即使没有输出信息,以email的方式通知用户该工作已经完成

    -l   ===>   列出系统上所有的at调度

    -d   ===>   取消指定的at调度工作

    -v   ===>   直观的列出at调度工作

    -c   ===>   可以列出后面接的该项工作的实际命令内容

    (2)时间格式

    HH:MM   ===>   在今天的这个时刻执行工作,若已超时则推迟到明天

    HH:MM  YYYY-MM-DD   ===>   强制在指定的时间执行此工作

    HH:MM  +  number  [minutes|hours|days|weeks]   ===>   在某个时间点(HH:MM)在加上一段时间(number x m/h/d/w)后执行该工作

    (3)示例

    在一分钟之后将系统时间写入到当前目录下的info.txt文件当中

    这是工作运行前info.txt的内容

    开始设定工作

    at now + 1 minutes

    然后在提示符下输入命令,注意输入结束后以 ctrl + d 结束输入

    一分钟以后,我们查看info.txt中的内容

    可以看到,完美执行

    那么我们设定的这些工作如果忘了应该怎么样查看呢?

    可以通过

    at  -l

    查看全部工作,然后再通过

    at   -c    jobID

    查看特定工作的内容

    如果发现自己设定的at工作错误或者不合适了,如何将它删除掉呢?

    (1)查找工作

    atq 或者 at -l

    (2)删除

    atrm   [jobnumber]

    注意:很多时候我们测试的时候会让该工作在终端输出一些信息,但是到了那个时间点之后却没有输出,这是因为at命令的执行环境与终端无关,这些标准输出都会输出到执行者的mailbox去,所以并不会在终端机看到这些标准输出信息。这时候有两种解决方案:

    1.强制输出到终端机

    ls -al > /dev/tty1

    2.执行者自行到mailbox中去查看

    很多情况下,如果我们的电脑特别忙碌的时候,还要在指定时间完成指定的工作,这样会有点不合适甚至会出现不好的后果,因此便出现了batch命令

    batch命令用法和功能与at一致,唯一的不同点就是batch设定的工作,只会在cpu负载率小于0.8时才会执行,这个机制一定程度上保证了系统的稳定运行。

    cron

    cron所设置的工作将会一直循环下去。可循环的时间为分钟、小时、周、月、年等。

    它除了可以用命令执行外,也可以编辑/etc/crontab来执行(服务crond必须启动)

    cron的配置信息

    1.我们设定的crontab进程其实都是被以文本的方式写入到/var/spool/cron/目录内,然后这些设定的进程便会等待atd服务来启动这些进程了

    2.并不是所有的人都可以使用at命令,具体的规则由/etc/cron.allow/etc/cron.deny这两个文件指定(一般系统只有其中一个文件)

    (1)被cron.allow记录的用户有权限使用crontab命令

    (2)被cron.deny记录的用户没有权限使用crontab命令

    (3)每一个执行的corn工作都会被记录到/var/log/cron日志文件中

    crontab的使用方法

    1.参数

    -u   ===>   只有root用户才能进行这个任务。即帮助其他用户新建删除crontab工作调度

    -e   ===>   编辑crontab的工作内容

    -l   ===>   查阅crontab的工作内容

    -r   ===>   删除所有的crontab的工作内容

    2.使用方法

    注意:

    (1).每个任务都是/var/spool/cron/username其中的一行

    (2).每个任务都有六个字段

    代表意义 分钟 小时 日期 月份 命令
    取值范围 0~59 0~23 1~31 1~12 0~7 command

    (3).在设定任务的时候,还可以用一些特殊字符

    特殊字符 代表意义
    *(星号) 代表任何时刻都接受(假如日周月都是*,则代表不论几月几日星期几都会执行)
    ,(逗号) 多个时刻点都执行,用逗号分隔开
    -(减号) 指定时间段内都执行
    /number(斜线加数字) 每隔n单位间隔

    3.具体使用步骤

    (1)crontab -e

    (2)进行编辑

    (3)crontab -l查看

    可以看到,我们设定的程序完美执行了!

    4.针对系统的例行性工作

    需要注意的是,上面我们提到的都是针对当前用户的例行性工作,那么如何设置针对整个系统的例行性工作呢?

    非常简单,只需直接编辑这个文件即可 ===>   /etc/crontab

    我们来查看一下系统的例行性工作有哪些

    上面有一些陌生的字段,我们来一一说明:

    MAILTO=root

    如果有标准输出和标准错误输出时,会将这些信息传输给设置好的用户(默认是root)

    PATH=......

    可执行文件的查找路径

    dow user

    执行命令的身份

  • 相关阅读:
    真香!PySpark整合Apache Hudi实战
    Apache Hudi又双叕被国内顶级云服务提供商集成了!
    Apache Hudi集成Apache Zeppelin实战
    实战 | 将Apache Hudi数据集写入阿里云OSS
    实战|使用Spark Structured Streaming写入Hudi
    Apache Hudi 设计与架构最强解读
    【Flink】Flink作业调度流程分析
    【Flink】深入理解Flink-On-Yarn模式
    【Flink】Flink 底层RPC框架分析
    【MyBatis】MyBatis自动生成代码之查询爬坑记
  • 原文地址:https://www.cnblogs.com/viplanyue/p/12700496.html
Copyright © 2011-2022 走看看