Crontab Linux2024年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 表达式对于计算机系统希望在我们系统启动时执行的任务很有用。它有助于自动启动后台任务。
|