📜  Linux 中的“crontab”示例

📅  最后修改于: 2022-05-13 01:56:11.276000             🧑  作者: Mango

Linux 中的“crontab”示例

crontab是您要定期运行的命令列表,也是用于管理该列表的命令的名称。 crontab 代表“cron table”,因为它使用作业调度程序cron来执行任务; cron本身以“chronos”命名,这是希腊语中的时间词。 cron是系统进程,它会根据设定的时间表自动为您执行任务。该计划称为 crontab,它也是用于编辑该计划的程序的名称。

Linux Crontab 格式

MIN HOUR DOM MON DOW CMD

Crontab 字段和允许范围(Linux Crontab 语法)

Field    Description    Allowed Value
MIN      Minute field    0 to 59
HOUR     Hour field      0 to 23
DOM      Day of Month    1-31
MON      Month field     1-12
DOW      Day Of Week     0-6
CMD      Command         Any command to be executed.

Cron 作业示例
1. 为特定时间安排作业

cron 的基本用法是在特定的时间执行一个作业,如下所示。这将在 6 月 10 日上午 08:30 执行完整备份 shell 脚本(完整备份)。



时间字段使用 24 小时格式。因此,对于上午 8 点使用 8,对于晚上 8 点使用 20。

30 08 10 06 * /home/maverick/full-backup

30 – 30 分钟
08 – 08 上午
10 – 第 10 天
06 – 第 6 个月(六月)
* - 一周的每一天

2.查看Crontab条目

  • 查看当前登录用户的 Crontab 条目:要查看您的 crontab 条目,请从您的 unix 帐户键入 crontab -l。
  • 查看根 Crontab 条目:以 root 用户(su – root)登录并执行 crontab -l。

  • 查看其他 Linux 用户的 crontab 条目:登录到 root 并使用 -u {username} -l。

3.编辑Crontab条目
编辑当前登录用户的 Crontab 条目。要编辑 crontab 条目,请使用 crontab -e。默认情况下,这将编辑当前登录的用户 crontab。

4. 使用 Cron 每分钟安排一个作业。
理想情况下,您可能不需要每分钟安排一次作业。但是理解这个例子将帮助你理解其他的例子。

* * * * * CMD

* 表示所有可能的单位——即全年每小时的每一分钟。除了直接使用这个 *,您会发现它在以下情况下非常有用。

当您在分钟字段中指定 */5 时,表示每 5 分钟一次。
当您在分钟字段中指定 0-10/2 时,意味着在前 10 分钟内每 2 分钟一次。
因此,上述约定可用于所有其他 4 个字段。
5. 安排一次以上的工作(例如一天两次)

以下脚本每天进行两次增量备份。

本示例在每天的 11:00 和 16:00 执行指定的增量备份 shell 脚本(incremental-backup)。字段中的逗号分隔值指定该命令需要在所有提到的时间内执行。



00 11, 16 * * * /home/maverick/bin/incremental-backup

00 – 第 0 分钟(一小时的顶部)
上午 11、16-11 点和下午 4 点
* - 每天
* - 每个月
* - 一周的每一天

6.在特定时间范围内安排工作(例如仅在工作日)

如果您希望在特定时间范围内每小时安排一次作业,请使用以下内容。

  • Cron Job 每天工作时间:
    本示例在每天上午 9 点至下午 6 点的工作时间内(包括周末)检查数据库的状态
    00 09-18 * * * /home/maverick/bin/check-db-status
    

    00 – 第 0 分钟(一小时的顶部)
    09-18 – 9 am, 10 am, 11 am, 12 am, 1 pm, 2 pm, 3 pm, 4 pm, 5 pm, 6 pm
    * - 每天
    * - 每个月
    * - 一周的每一天

  • Cron Job 每个工作日的工作时间:
    本示例在每个工作日(即不包括周六和周日)的工作时间上午 9 点至下午 6 点检查数据库的状态
    00 09-18 * * 1-5 /home/maverick/bin/check-db-status
    

    00 – 第 0 分钟(一小时的顶部)
    09-18 – 9 am, 10 am, 11 am, 12 am, 1 pm, 2 pm, 3 pm, 4 pm, 5 pm, 6 pm
    * - 每天
    * - 每个月
    1-5 - 周一、周二、周三、周四和周五(每个工作日)

7.每 10 分钟安排一次后台 Cron 作业。
如果您想每 10 分钟检查一次磁盘空间,请使用以下方法。

*/10 * * * * /home/maverick/check-disk-space

它全年每 10 分钟执行一次指定的命令 check-disk-space。但是您可能需要仅在特定时间执行命令,反之亦然。上面的例子展示了如何做这些事情。我们可以使用下面提到的单个关键字来指定它,而不是在 5 个字段中指定值。

在某些特殊情况下,您可以使用 @ 后跟关键字来代替上述 5 个字段,例如重新启动、午夜、每年、每小时。

Cron 特殊关键字及其含义

Keyword    Equivalent
@yearly    0 0 1 1 *
@daily     0 0 * * *
@hourly    0 * * * *
@reboot    Run at startup.

8.使用@yearly在每年的第一分钟安排工作
如果您希望在每年的第一分钟执行作业,那么您可以使用@yearly cron 关键字,如下所示。这将在 1 月 1 日的 00:00 使用 yearly-maintenance shell 脚本执行系统年度维护每年。



@yearly /home/maverick/bin/annual-maintenance

9. 使用@monthly 在每个月开始安排 Cron 作业
它与上面的@yearly 相似。但是使用@monthly cron 关键字每月执行一次命令。这将在每个月的1 号00:00 执行shell 脚本tape-backup。

@monthly /home/maverick/bin/tape-backup

10.使用@daily每天安排一个后台工作
使用 @daily cron 关键字,这将在每天 00:00 使用 cleanup-logs shell 脚本执行每日日志文件清理。

@daily /home/maverick/bin/cleanup-logs "day started"

11.使用@reboot在每次重启后执行linux命令
使用@reboot cron 关键字,这将在机器每次启动后执行一次指定的命令。

@reboot CMD