如何在 Ubuntu 16.04 LTS 中控制 cron?

SDs*_*lar 6 cron 16.04

gnome-schedule从 Ubuntu 14.04 LTS 开始,旧程序(在 Raspbian Jessie 下运行良好)在 Ubuntu 中已被弃用。

那么我们如何在 Ubuntu 16.04 中控制 cron 作业呢?

SDs*_*lar 7

由于目前还没有cron可用于 Ubuntu 16.04的基于 GUI 的控制器,我们必须回到始终有效的老式方法 - 从命令行执行:

官方 Ubuntu 文档:CronHowto

节选:

作为指导,您可以随时使用

man crontab
Run Code Online (Sandbox Code Playgroud)

要编辑您的 cron 程序,请使用以下命令:

 crontab -e
Run Code Online (Sandbox Code Playgroud)

从手册页:

Crontab 行

每行有五个时间和日期字段,后跟一个命令,后跟一个换行符 ('\n')。字段由空格分隔。五个时间和日期字段不能包含空格。五个时间和日期字段如下:分钟 (0-59)、小时 (0-23, 0 = 午夜)、日 (1-31)、月 (1-12)、工作日 (0-6, 0 = 星期日)。

01 04 1 1 1 /usr/bin/somedirectory/somecommand
Run Code Online (Sandbox Code Playgroud)

上面的示例将在 1 月 1 日凌晨 4:01 以及 1 月的每个星期一运行 /usr/bin/somedirectory/somecommand。

可以使用星号 (*),以便使用时间段的每个实例(每小时、每个工作日、每个月等)。

01 04 * * * /usr/bin/somedirectory/somecommand
Run Code Online (Sandbox Code Playgroud)

上面的示例将在每个月的每天凌晨 4:01 运行 /usr/bin/somedirectory/somecommand。

逗号分隔值可用于在一段时间内运行多个特定命令的实例。破折号分隔值可用于连续运行命令。

01,31 04,05 1-15 1,6 * /usr/bin/somedirectory/somecommand
Run Code Online (Sandbox Code Playgroud)

上面的示例将在每年一月和六月的 1 日至 15 日凌晨 4:00 和凌晨 5:00 之后的 01 和 31 运行 /usr/bin/somedirectory/somecommand。

上述示例中的“/usr/bin/somedirectory/somecommand”文本表示将在指定时间运行的任务。建议您使用所需命令的完整路径,如上述示例所示。在终端中输入 which somecommand 以查找 somecommand 的完整路径。crontab 将在正确编辑和保存后立即开始运行。

您可能希望在每个时间单位多次运行脚本。例如,如果您想每 10 分钟运行一次,请使用以下 crontab 条目(在可被 10 整除的分钟数上运行:0、10、20、30 等)

*/10 * * * * /usr/bin/somedirectory/somecommand
Run Code Online (Sandbox Code Playgroud)

这也相当于更麻烦

0,10,20,30,40,50 * * * * /usr/bin/somedirectory/somecommand
Run Code Online (Sandbox Code Playgroud)

Cron 还提供了一些特殊的字符串,可以用来代替五个时间和日期字段:

@reboot - 在启动时运行一次。

@yearly - 每年运行一次,"0 0 1 1 *"

@annually - (同@yearly

@monthly - 每月运行一次,"0 0 1 * *"

@weekly - 每周运行一次,"0 0 * * 0"

@daily - 每天运行一次,"0 0 * * *"

@midnight - (同@daily

@hourly - 每小时运行一次,"0 * * * *"


请注意,所有cron作业都在用户$HOME目录中开始,因此建议在cron程序和脚本中都使用完全限定的路径名。