Crontab Linux

2024年8月29日 | 阅读 7 分钟

Linux Crontab 命令简介

Crontab 命令用于列出、编辑、删除或提交 cron 作业。cron 作业是 cron 守护程序定期在预定时间间隔执行的命令。我们需要指定命令,即 crontab,并带有标志,即 -e,来提交任何 cron 作业。crontab 命令会调出一个编辑会话,允许我们设置一个 crontab 文件。我们在该文件中为所有 cron 作业创建条目。所有条目都必须符合 cron 守护程序要求的格式。

当我们完成条目设置并退出文件时,crontab 命令会将条目复制到目录,即 /var/spool/cron/crontabs,并将其放入以我们当前用户名命名的文件中。我们也可以通过指定文件参数来设置 crontab 文件。如果文件存在,则必须符合 cron 守护程序期望的格式。如果文件不存在,crontab 命令会启动编辑器。如果 EDITOR 环境变量可用,该命令会调用指定的编辑器。否则,crontab 命令将使用 vi 编辑器。

  • 我们需要结合 -l 标志来描述 crontab 命令,以列出我们的 crontab 文件的内容。
  • 我们可以使用 -r 标志来删除现有文件。
  • Crontab 文件所有者或 root 用户可以应用用户名参数(可选),以验证、删除、列出或编辑指定用户的 cron 作业状态。
  • 如果用户名无效,将生成错误消息并退出程序。
  • 如果未指定用户名参数(可选),则 crontab 标志对当前用户和 root 用户有效。
  • Crontab 是我们希望按计划定期执行的一组命令。
  • 该命令的名称也用于组织该列表。

crontab 的完整形式是“cron table”,因为它使用作业调度程序 cron 来运行任务;cron 本身被称为“chronos”。Cron 是系统的一个进程,它会按照固定的计划自动为我们执行任务。这个计划称为 crontab,用于修改该计划的程序名称。

为什么我们使用 Cron 作业?

以下是使用 Linux cron 作业的一些原因:

  • Cron 作业用于自动化系统维护。
  • Crontab 是自动化 Unix 作业的理想选择。
  • 定期清理缓存数据。
  • 发送通知电子邮件,例如密码过期电子邮件、新闻通讯等。
  • 清除和归档数据库表。
  • 删除旧的日志文件。
  • 帮助操作系统获取数据库或日志文件的计划备份。

Cron 配置文件类型

以下是 cron 配置文件类型:

  • 用户 Crontab
    用户可以通过 crontab 命令安装自己的 cron 作业。所有用户都可以拥有自己的 crontab 文件,因此这些文件位于 /var/spool/cron/crontabs 目录中;它们通常不直接编辑。我们可以使用 crontab 命令来编辑和设置我们的 cron 作业。
  • Linux/Unix 系统 Crontab
    它需要 sudo 权限,因为它用于关键作业和系统服务。它提供了以用户身份执行命令到系统 crontab 的能力。

Crontab 唯一字符串

我们可以使用 crontab 提供的八个唯一字符串。这不仅可以节省我们的时间,还可以提高可读性。

唯一字符串说明
@reboot启动后,执行一次。
@yearly每年执行一次,即 0 0 1 1 *
@annually与 @yearly 相同。
@monthly每月执行一次,即 0 0 1 * *
@weekly每周执行一次,即 0 0 * * 0
@daily每天执行一次,即 0 0 * * *
@midnight与 @daily 相同。
@hourly每小时执行一次,即 0 * * * *

Crontab 唯一字符串示例

  • 安排每年一次的操作

我们可以运行上述命令发送新年问候。它还会在每年的第一分钟运行。

  • 安排每月运行一次的操作

我们可以运行上述命令在每个月开始时执行一些清理活动。类似地,我们可以使用其他 crontab 唯一字符串来实现每小时、每天和每周的目标。

Cron 目录

系统管理员可以利用系统范围内的 cron 计划,该计划位于下面显示的预定义 cron 目录中:

  • /etc/cron.weekly
  • /etc/cron.monthly
  • /etc/cron.hourly
  • /etc/cron.daily
  • /etc/cron.d

Linux 下 Cron 的用法

Linux 系统包包含一个有用的任务调度器,称为 crontab。Crontab 因其能够安排以 root 身份执行自动化开发而闻名。因此,以 root 身份运行自动化开发可以使系统修改更加容易。我们只需修改任务并等待它重新启动。

Linux Crontab 格式

Linux crontab 包含六个不同的字段。前五个字段指定执行的日期和时间,最后一个字段用于命令执行。

Crontab 语法

如何修改/添加 Crontab

  • 用户可以使用以下命令修改他们的 crontab 作业:

此命令会打开我们计算机系统的个人 crontab 配置,可以使用默认文本编辑器进行修改。

  • 我们不需要重新启动我们的 crontab,因为当我们使用以下命令时,它会自动拾取我们的修改:
  • 我们可以使用以下 crontab 命令删除我们的 crontab 任务:
  • 我们可以使用以下 crontab 命令在 crontab 中更新或添加作业:
  • 我们可以使用以下 crontab 命令来编辑其他用户的 crontab:

列出 Crontab

  • 我们可以使用以下 crontab 命令查看用户的 crontab 条目:
  • 我们可以使用以下 crontab 命令查看特定用户的 crontab 条目:

Crontab 的重要示例

我们将讨论一些重要的 crontab 命令及其描述如下:

  • 0 7, 17 * * * /scripts/script.sh
    这是一个 cron 命令,用于实现多个调度作业。此命令将每天在上午 7 点和下午 5 点运行。
  • * / 5 * * * * /scripts/script.sh
    上述命令将每 5 分钟运行一次 cron。
  • 0 5 * * mon /scripts/script.sh
    该命令是一个 cron 调度程序,它将帮助我们在每个星期一上午 5 点运行任务。这对于执行每周任务(如系统清理)很有用。
  • * / 3 * * * * /scripts/monitor.sh
    上述命令将每 3 分钟执行一次我们的脚本。
  • * * * feb, jun, sep * /script/script.sh
    上述命令可用于安排任何 cron 在特定月份运行。该命令用于在九月、六月和二月执行任务。我们有时需要安排任何任务来运行每月任务。
  • 0 17 * * mon, wed /script/script.sh
    此命令用于在特定日期运行。它将在每周一和周三下午 5 点执行。
  • 0 2 * * sat [ $(date +%d) -le 06 ] && /script/script.sh
    上述命令允许 cron 在每个月的第一个星期六运行。
  • 0 * / 6 * * * /scripts/script.sh
    此命令用于每 6 小时间隔执行一个脚本,因此可以按上述方式进行设置。
  • 0 4, 17 * * mon, tue /scripts/script.sh
    上述命令安排在周二和周一运行两次任务。我们可以使用上述设置来完成此操作。
  • * * * * * /scripts/script.sh * * * * * sleep 15; /scripts/script.sh
    上述命令安排 cron 每 15 秒运行一次。
  • @yearly /scripts/script.sh
    上述命令安排每年运行一次任务。@yearly 时间戳等于“0 0 5 1*”。它将在每年的第 5 分钟运行任务。我们可以用它来发送新年问候。
  • @monthly /scripts/script.sh
    上述命令安排每月运行一次任务。@monthly 时间戳与“0 0 1 * *”相同。命令表达式允许每月执行一次任务。
  • * * * * * /scripts/script.sh; /scripts/script2.sh
    上述命令用于使用一个 cron 运行多个任务。
  • @weekly /bin/script.sh
    此命令安排每周运行一次任务。@weekly 时间戳与“0 0 4 * sun”相同。它执行每周任务,如系统清理。
  • @daily /scripts/script.sh
    此命令用于安排每天运行的任务。@daily 时间戳与“0 2 * * *”相同。它在每天的第 2 分钟运行任务。
  • @hourly /scripts/script.sh
    它允许每小时运行一次任务。@hourly 时间戳与“0 * * * *”相同。它每小时运行一次任务。
  • @reboot /scripts/script.sh
    它允许在系统重新启动时运行任务。@reboot 表达式对于计算机系统希望在我们系统启动时执行的任务很有用。它有助于自动启动后台任务。