任务调度

任务调度

Cron任务调度

  • cron 是 Linux 中最常用的任务调度工具,允许用户按固定的时间间隔(如每分钟、每小时、每天等)执行任务。

  • cron 的工作原理

    • cron 是一个守护进程(crond),在后台运行并检查是否有需要执行的任务。
    • 用户通过编辑 crontab 文件来定义任务。
    • cron 根据 crontab 文件中的时间规则执行任务。
  • crontab 文件格式

    • crontab 文件的每一行代表一个任务,格式如下:

    • * * * * * command-to-be-executed
      
    • 五个 * 分别表示:

      • 分钟(0-59)
      • 小时(0-23)
      • 日期(1-31)
      • 月份(1-12)
      • 星期(0-7,0 和 7 都表示星期日)
    • command-to-be-executed:要执行的命令或脚本。

    • 注意执行的命令或者脚本要有权限执行

  • 时间和字段的取值

    • 字段 取值范围 特殊字符说明
      分钟 0-59 *(每), ,(列表), -(范围), /(间隔)
      小时 0-23 同上
      日期 1-31 同上
      月份 1-12 同上
      星期 0-7(0 和 7 都是星期日) 同上
    • 特殊字符

      • *:匹配所有值。
        • 示例:* * * * * 表示每分钟执行一次。
      • ,:指定多个值。
        • 示例:0,15,30,45 * * * * 表示每小时的 0、15、30、45 分钟执行。
      • -:指定范围。
        • 示例:0 9-17 * * * 表示每天 9 点到 17 点每小时执行一次。
      • /:指定间隔。
        • 示例:*/5 * * * * 表示每 5 分钟执行一次。
  • 管理crontab 文件

    • 查看当前用户的 crontab 文件

      • crontab -l
        
    • 编辑当前用户的 crontab 文件

      • crontab -e
        
        • 这会打开默认的文本编辑器(如 vinano),允许用户编辑任务。
    • 删除当前用户的 crontab 文件

      • crontab -r
        
        • 这会删除当前用户的所有 cron 任务。
    • 指定用户管理 crontab 文件

      • 管理员可以使用 -u 选项管理其他用户的 crontab 文件。

      • crontab -u username -e  # 编辑指定用户的 crontab 文件
        crontab -u username -l  # 查看指定用户的 crontab 文件
        crontab -u username -r  # 删除指定用户的 crontab 文件
        

at任务调度

  • at 是 Linux 中用于调度一次性任务的命令。与 cron 不同,at 用于在指定时间执行一次任务,而不是周期性任务。

  • 首先确保 atd 服务已启动(at 任务依赖此服务)

    • systemctl status atd
      
    • at [选项] 时间
      at 14:30
      
    • 输入命令后,按 Ctrl+D 结束输入

  • 指定时间的方式

    • at 支持多种时间格式:
    • 具体时间
      • at 14:30:在今天的 14:30 执行。
      • at 2:30 PM:同上,使用 12 小时制。
    • 相对时间
      • at now + 10 minutes:10 分钟后执行。
      • at now + 2 hours:2 小时后执行。
      • at now + 3 days:3 天后执行。
    • 日期和时间
      • at 14:30 tomorrow:明天 14:30 执行。
      • at 14:30 2023-12-25:在 2023 年 12 月 25 日 14:30 执行。
    • at 命令后,会进入交互式输入模式,可以输入要执行的命令。输入完成后,按 Ctrl+D 保存并退出。
  • 查看 at 任务

    • atq
      1   Mon Oct 30 14:30:00 2023 a username
      
    • 第一列是任务 ID。

    • 第二列是任务的执行时间。

    • 最后一列是任务所属用户。

  • 删除 at 任务

    • atrm 任务ID
      atrm 1
      
  • at 任务的工作目录

    • at 任务默认在用户的主目录下执行。如果需要指定工作目录,可以在任务中显式切换目录:

    • at now + 1 hour
      at> cd /path/to/directory
      at> ./script.sh
      at> <EOT>
      
posted @ 2025-03-26 20:22  QAQ001  阅读(11)  评论(0)    收藏  举报