crontab命令:定时任务,周期执行
侧边栏壁纸
  • 累计撰写 64 篇文章
  • 累计收到 1 条评论

crontab命令:定时任务,周期执行

soulio
2024-09-12 / 0 评论 / 4 阅读 / 正在检测是否收录...

一、crontab 命令简介

crontab​ 是 Linux 系统中用于调度任务的工具,它允许用户按照预定的时间自动运行脚本或命令。通过 crontab​ 命令可以添加、修改、列出和删除用户的(周期性)定时任务。

守护进程:corn

● cron.service - Regular background program processing daemon
     Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2024-08-14 15:09:39 UTC; 4 weeks 0 days ago
       Docs: man:cron(8)
   Main PID: 593 (cron)
      Tasks: 1 (limit: 2219)
     Memory: 3.0M
        CPU: 31.463s
     CGroup: /system.slice/cron.service
             └─593 /usr/sbin/cron -f -P

二、crontab 命令参数

crontab [选项] [文件]


  • 选项:

    crontab [-u user] -e      # 编辑 crontab
    crontab [-u user] -l      # 列出 crontab
    crontab [-u user] -r      # 删除 crontab
    crontab [-u user] -i -r   # 删除前提示确认
    
  • 参数:


    • file​:指定 crontab 文件。

crontab 表位置:/var/spool/cron/crontabs

root@ubuntu:/var/spool/cron/crontabs# ls
soulio

每个设置了 cron 任务的用户在此目录下拥有一个同名文件。

查看用户 soulio 的 cron 任务:

root@ubuntu:/var/spool/cron/crontabs# cat soulio
0 5 * * 1 tar -zcf /var/backups/home.tgz /home/

编辑文件:使用 crontab -e​ 编辑当前用户的 crontab。你也可以切换到 root 用户,使用 vim​ ​编辑任意用户的 crontab。

格式:文件每行代表一个 cron 作业,每行的格式为 分钟 小时 天 月 星期 命令​,例如:

0 5 * * 1 tar -zcf /var/backups/home.tar.gz /home/

含义:每个星期一的凌晨 5 点 0 分,将 /home/​ 目录打包并压缩成名为 home.tar.gz​ 的文件,并将该文件存储在 /var/backups/​ 目录下。

时间调度可以用[0-9]表示具体的时间,也可以用符号表示范围:

  • *​:匹配该字段的所有值。
  • ,​:用于指定值的列表,例如,1,2,3 ​代表第 1、2、3 分钟。
  • -​:用于指定值的范围,例如,1-5 ​代表第 1 到第 5 分钟。
  • /​:用于指定值的步长,例如,*/2 ​代表每两分钟。

星号 * ​处在不同位置时的含义:

  • 分钟(0-59)
  • 小时(0-23)
  • 日(1-31)
  • 月(1-12)
  • 星期几(0-7,其中 0 和 7 都代表星期天)

更多细节(不用记,先收藏,用时查)

  • 计划任务可以包含多个命令,用 ;​ 分割。
  • 计划任务可以使用 环境变量​,例如 HOME 和 PATH。
  • 计划任务可以使用 username ​ 和 password ​ 来指定执行计划任务的用户和密码。
  • 计划任务可以使用 output​ 和 error​ 来指定输出和错误文件。
  • 计划任务可以使用 env​ 命令来设置环境变量。
  • 计划任务可以使用 nice​ 命令来设置执行优先级。
  • 计划任务可以使用 ionice 命令来 nice I/O 设置 input/output 优先级。

三、crontab 命令示例

1.编辑 crontab 表

crontab -e

2.编辑任务


* * * * * /usr/bin/command

# 每小时执行一次命令
0 * * * * /usr/bin/command

# 每天凌晨1点执行命令
0 1 * * * /usr/bin/command

# 每周一凌晨1点执行命令
0 1 * * 1 /usr/bin/command

# 每月的第一天凌晨1点执行命令
0 1 1 * * /usr/bin/command

# 每季度的第一天凌晨1点执行命令
0 1 1 */3 * /usr/bin/command

# 每个工作日的上午9点执行命令
0 9 * * 1-5 /usr/bin/command

# 每5分钟执行一次命令
*/5 * * * * /usr/bin/command

# 每两小时执行一次命令
0 */2 * * * /usr/bin/command

# 每星期六和星期日的凌晨1点执行命令
0 1 * * 6,0 /usr/bin/command

# 每小时的第5分钟和第10分钟执行命令
5,10 * * * * /usr/bin/command

# 每天的凌晨2点到早上6点,每半小时执行一次命令
*/30 2-6 * * * /usr/bin/command

3. 查看当前用户的 crontab

crontab -l

4. 删除当前用户的 crontab

crontab -r

serv00 保活案例

serv00 是一个公益虚拟主机,我们希望主机重启后能够自动执行脚本,启用我们的程序。

1.进入 crontab 表

crontab -e

2.添加用户任务:系统重启后自动执行指定脚本

@reboot ~/script.sh

在脚本中启动你的程序。

结尾 tips

crontab 有个兄弟命令 at :执行一次性定时任务。


本文详解介绍crontab命令的用法

本文共 738 个字数,平均阅读时长 ≈ 2分钟
0

海报

正在生成.....

评论 (0)

取消