• 一次性计划任务 at

    • 计划任务:让计算机在指定的时间运行程序

    • 计划任务分为:一次性计划任务 周期性计划任务

    • 一次性计划任务

      • at: 生成一次性提交任务
      • ctrl + d : 提交任务

      Untitled

      • 查看提交任务进度:atq
  • 周期性计划任务(出现任务叠加时使用锁)

    • cron
      • 配置方式

        • crontab -e
        • * * * * 1,5: 星期一或星期五
        • * * * * 1-5: 星期一到星期五
        • * * 7 7 1-5: 7月7日如果是在星期一至星期五里就每分钟执行一次该脚本
        • 0 3 * * 1:星期一3点整执行该脚本(如果分钟是*就会成 星期一3点整个时间段每分枝执行一次)
      • 查看现有的计划任务

        • crontab -l
      • 配置格式

        • 分钟 小时 日期 月份 星期 执行的命令
        • 注意命令的路径(一般绝对路径)和输出问题
      • 计划任务日志:/var/log/cron

      • 保存执行任务的实际目录是:/var/spool/cron/

        会创建用户同名文件,保存相关用户所增加的周期性脚本

  • 计划任务加锁 flock

    flock() 只能实现对整个文件进行加锁,而不能实现记录级的加锁。系统调用fcntl() 符合 POSIX 标准的文件锁实现,它也是非常强大的文件锁,fcntl() 可以实现对纪录进行加锁。

    • 如果计算机不能按照预期时间运行
      • anacrontab 延时计划任务

        所在位置:

        1. /etc/cron.d/0hourly

        Untitled

        • run-ports 标记一小时任务是否完成,没完成会继续完成(例如重启导致任务无法正常使用的情况)
        1. /etc/anacrontab: 延时计划任务文件(日 周 月)

          Untitled

          比如第一个延时计划任务:3:05 到 3:50 是它的执行时间

          [START_HOURS_RANGE]:[delay in minutes] - [START_HOURS_RANGE]:[delay in minutes] + [RANDOM_DELAY]

        2. /etc/cron.daily/logrotate: 日志拆分,引对某时间电脑重启,导致任务没有执行,所设计的延时任务工具

          linux 日志定时轮询流程详解(logrotate) - 生活费 - 博客园

      • flock 锁文件

        • flock -x : 排他锁(只运行一次)

          flock -xn “/tmp/f.lick” -c “/tmp/s.sh”

          -c 执行命令