• Linux任务计划


    1. Linux任务计划:

      1. 一次性任务执行(at、batch);
        1. at:定时任务,指定一个时间执行一个任务,只能执行一次。
          1. at使用方式;
            1. 交互式:让用户在at>提示符输入多个要执行的命令;
            2. 批处理:将任务的个命令写入文件由at进行调用;
          2. at命令使用;
            1. at [参数] [时间]
            2. at> COMMAND
            3. at> Ctrl+d
          3. at时间:定义出什么时候要进行at的任务;
            1. HH:MM:在今日的 HH:MM 时刻进行,若该时刻已超过,则明天的 HH:MM 进行此任务。
              • ex> 04:00
            2. HH:MM YYYY-MM-DD:规定在某年某月的某一天的特殊时刻进行该项任务
              • ex> 04:00 2009-03-17
            3. HH:MM[am|pm] [Month] [Date]:规定在某年某月某日的某时刻进行该项任务
              • ex> 04pm March 17
            4. HH:MM[am|pm] + number [minutes|hours|days|weeks]:规定在某个时间点再加多少时间后才进行该项任务
              • ex> now + 5 minutes
              • ex> 04pm + 3 days
            5. 时间格式扩展:at允许使用一套相当复杂的指定时间的方法。
              1. 能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。
              2. 能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。
              3. 能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。
              4. 能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。
              5. 能够使用相对计时法。指定格式为:now + count time-units ,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,几天,几小时。
              6. 能够直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。
          4. at常用参数;
            1. -m :当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出;
            2. -I :atq的别名;
            3. -d :atrm的别名;
            4. -v :显示任务将被执行的时间;
            5. -c :打印任务的内容到标准输出;
            6. -V :显示版本信息;
            7. -q :后面加<列队> 使用指定的列队;
            8. -f :后面加<文件> 从指定文件读入任务而不是从标准输入读入;
            9. -t :后面<时间参数> 以时间参数的形式提交要运行的任务;
          5. at权限控制文件;
            1. /etc/at.allow
            2. /etc/at.deny
            3. 控制文件使用规则;
              1. 先找寻 /etc/at.allow 这个文件,写在这个文件中的使用者才能使用 at ,没有在这个文件中的使用者则不能使用 at (即使没有写在 at.deny 当中);
              2. 如果 /etc/at.allow 不存在,就寻找 /etc/at.deny 这个文件,若写在这个 at.deny 的使用者则不能使用 at ,而没有在这个 at.deny 文件中的使用者就可以使用 at 命令。
              3. 如果两个文件都不存在,那么只有 root 可以使用 at 这个命令。
              4. 在一般的 distributions 当中,由于假设系统上的所有用户都是可信任的, 因此系统通常会保留一个空的 /etc/at.deny 文件,意思是允许所有人使用 at 命令的意思。
              5. 如果不希望有某些使用者使用 at 的话,将那个使用者的帐号写入 /etc/at.deny 即可! 一个帐号写一行。
          6. at注意事项;
            1. 如果at的指令输出的路径有误 则会把结果以邮件的形式发送给用户
            2. 当一个任务创建了会被分配到一个任务号,而且会在/var/spool/at里面排队。不建议使用vi编辑器去修改,容易出错。
        2. batch:跟at一样也是定期执行的命令,使用方法也跟at相同,但是不同的是batch不需要指定时间,因为它会自动在系统负载比较低的时候执行(平均负载小于0.8的时候);
      2. 周期性任务执行(crontab、anacron);
        1. crond简介;
          1. crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务;
          2. crontab任务调度;
            1. 系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。
              • /etc/crontab
              • 分钟  小时  天  月  周  用户  任务
            2. 用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。/var/spool/cron/USERNAME,其文件名与用户名一致;
              • /var/spool/cron/USERNAME
              • 分钟  小时  天  月  周  用户  任务
          3. cron使用者权限;
            1. /etc/cron.deny:     文件中所列用户不允许使用crontab命令;
            2. /etc/cron.allow:    文件中所列用户允许使用crontab命令;
            3. /var/spool/cron/:   所有用户crontab文件存放的目录,以用户名命名;
          4. cron时间有效取值;
            1. 分钟:0-59;
            2. 小时:0-23;
            3. 天:1-31;
            4. 月:1-12;
            5. 周:0-7,0和7都表示周日;
          5. cron时间通配表示;
            1. *: 对应时间的所有有效取值;
          6. ,: 离散时间点;
              1. 10,40 02 * * 2,5  周2和周5在2点10分和40分执行一次任务计划
            1. -:连续时间点;
              1. 10 02 * * 1-5 周一到周五2点10分执行一次任务计划
            2. /#: 对应取值范围内每多久一次
              1. */3 * * * *            每三分钟执行一次任务
              2. */3 * * * * /bin/cat /etc/fstab &> /dev/null    每三分钟查看一次/etc/fstab文件,执行结果不以邮件形式发送给管理员
        2. crontab:
          1. 命令格式:
            1. crontab [-u user] file
            2. crontab [-u user] [ -e | -l | -r ]
          2. 常用参数:
            1. -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件;
            2. -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容;
            3. -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件;
            4. -i:在删除用户的crontab文件时给确认提示;
            5. -u USERNAME: 管理其用户的cron任务
              • [root@template ~]# crontab -u hadoop -e
              • crontab: installing new crontab
              • [natasha@template ~]$ crontab -l
              • 30 14 1,3,5 * * /bin/echo hello
          3. 注意事项;
            1. 如果在crontab的用户命令中使用%,得转义为\%;
              •   5 3 * * * /bin/touch ~/testfile_`date +\%Y-\%m-\%d`.txt
            2. 在使用单引号后,%也可以不转义;
              •   5 3 * * * /bin/touch ~/testfile_`date +’%Y-%m-%d‘`.txt
        3. anacron:是crontab的补充,用于检查crontab中某任务在过去的一个周期内是否没有执行,如果没有执行,则在开机以后的某时间点让其执行一次,无论其周期是否到达;
  • 相关阅读:
    Android Studio 编译报错 AAPT2 error: check logsfor details
    pytest01--生成测试报告及allure的介绍
    三号坑——自动化测试用例前置conftest.py文件
    【pycharm】如何设置以pytest方式去运行用例!!!
    二号坑 —— 导出、安装依赖包
    一号坑 —— 数据比对时碰到的问题
    十六——reflect反射机制
    十五—— 装饰器
    十三 —— 文件读写
    十二 —— python的内置函数
  • 原文地址:https://www.cnblogs.com/Saviorsyang/p/393877a589920533297c966925dc0f63.html
Copyright © 2020-2023  润新知