有效管理 crontab

Jak*_*e N 1 cron

我的 crontab 看起来像这样;

1 * * * * /var/www/cron/site1.sh > /dev/null 2>&1

0 * * * * /var/www/cron/site2.sh > /dev/null 2>&1

3 * * * * /var/www/cron/site3.sh > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

这很好用,让我将所有讨厌的小脚本调用放在一个地方,而不是让 crontab 比现在更难阅读。

但是,当 site2.sh需要一个脚本每天运行一次,另一个脚本每周运行一次,另一个脚本每 5 分钟运行一次。当然,随着新脚本的添加时间不同,情况会变得更糟。

有没有更好的办法?

编辑

更好我的意思是让它更易于管理,拥有一个大的 crontab 是不可管理的,但也不是到处都有脚本。

不一定是 GUI。

小智 6

使 crontab 更易于管理,这是我多次梦想的事情。不过,归根结底,如果您需要安排 20 个脚本运行 - 好吧 - 您需要安排 20 个脚本运行。

至少对我而言,主要问题一直是在/etc/crontab(或在用户的crontab -e)中创建一个新条目。特别是当这些新条目设置为与现有条目(甚至条目列表)同时运行时。

例如,您需要 5 个不同的脚本来每小时运行一次。您可以为此在 crontab 中创建 5 个不同的条目 -或者- 您可以利用run-parts. run-parts允许您像任何其他条目一样指定 crontab 条目,但“命令”实际上是一个目录。当执行命令时,它将执行给定目录中的每个脚本。

以下是 linux 系统常见的列表:

01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
Run Code Online (Sandbox Code Playgroud)

在第一行中,/etc/cron.hourly声明每小时 1-minute-past-the-hour ( 01 * * * *),/etc/cron.hourly将执行位于目录中的所有脚本。同样的概念也适用于其他线路。您也不限于这些时间和目录 - 您可以完全自定义它们以满足您作为标准 crontab 条目的需要。

除了按目录使用 批处理脚本之外run-parts,您还可以通过将它们按“用户”分隔并通过crontab -u username -e. 举例来说,您有一些特定于报告的脚本,您可以创建一个“reportRunner”用户并将所有与报告相关的 cron 分配给该用户。这样做,您将轻松实现列表分隔,并且可以轻松管理不同类别的脚本/计划(在我看来)。它不会使 cron 的总列表更短,但它应该有助于使您正在查看的任何给定列表更短(并进行分类)。