Linux中crontab的用法和配置

Crontab文件存储 Linux 中的 Cron 计划。Cron 计划 (cron) 以固定的时间、日期和间隔定期运行。它在 Windows 中的等效项是计划任务。所有重复性任务都可以使用 cron 来安排。Crontab 文件是配置文件,其中包含有关要执行的时间和命令/脚本的信息。
cront
ab的使用

之前有一篇文章介绍了crontab的使用,这里再补充下更多的例子来说明。

Crontab 语法

crontab 文件中的每一行代表一个计划。它包含五个字段,后跟要执行的shell 命令或脚本

句法:

* (Minute) *(Hour) * (Day of the Month) *(Month of the Year) *(Day of the Week) username 
* 字段 取值范围
* Minute 字段值范围 0 - 59
* Hour 字段值范围0 - 23
* Day of the month 字段值范围1 - 31
* Month of the year 字段值范围1 - 12
* Day of the week 字段值范围 0 - 7

crontab 字段

crontab 字段
crontab 文件 - 代表一个工作

定义多个值或范围

要定义多个值和范围,请使用逗号 (,) 和连字符 (-)。星号 (*) 匹配任何内容。例如,要显示多个值,请使用 1,2,3 或 mon,tue,wed,范围可以使用 1-3 或 mon-wed。

如何使用 Crotab

crontab命令用于打开和编辑/添加 cron 计划。在 Linux 上运行的 cron 守护程序在 crontab(cron 表)中定义的时间执行计划计划。主要的系统范围的 crontab 文件是 /etc/crontab。

Cron默认安装在大多数 Linux 发行版中。Linux 系统中的每个用户都可以管理自己的 cron 计划。每个用户 cron 都存储在 /var/spool/cron/crontabs/ 下。cron 守护进程同时运行用户和系统 crontab。

Cron 守护程序定义了一些默认的 $PATH,您可以在 /etc/crontab 中找到它。如果未定义使用绝对路径或添加到 cron $PATH 变量。

默认情况下,Cron 邮件通知会发送给 crontab 的所有者。要更改此设置,请编辑MAILTO环境变量。

Cron 日志存储在Ubuntu/Debian 系统上的/var/log/syslog和Redhat/Rocky Linux 上的/var/log/cron中。您可以使用 grep 命令过滤日志文件以验证 cron 计划是否成功运行。

编辑/添加 Crontab

要编辑(现有计划)或添加新的 cron,请使用 crontab -e 命令。这将为当前用户打开一个编辑器。

$ crontab -e

要编辑另一个用户 crontab 文件,请键入:

$ crotab -u username -e

或者只需以该用户身份登录运行 crontab -e 命令。

列出 Cron 计划

要列出当前用户的所有计划,请键入:

$ crontab -l

要列出指定用户的所有 cron 计划,请键入:

$ crontab -u -l 

删除cron计划

要删除当前用户的所有 cron 计划,请执行以下命令:

# crontab -r

注意:这将删除所有 cron 计划而不要求确认。

如果要交互删除,需要使用以下命令:

# crontab -ir

Crontab 计划示例

让我们检查一些用于安排 cron 计划的 crontab 示例。

每 12 小时运行一次 cron 计划

这有助于定期进行系统检查或备份。要安排任务每 12 小时运行一次,请键入:

0 */12 * * * /scripts/test.sh

每5分钟运行一次cron计划

有时您需要每 n 分钟监控一次系统。使用以下表达式每 5 分钟运行一次任务。

*/5 * * * * /scripts/test.sh

每天凌晨2点运行cron计划

每天的备份可以安排在特定的时间。以下表达式每天凌晨 2 点运行 cron 计划。

0 2 * * * /script/test.sh

要在每天下午 2 点安排 cron 计划,cron 使用 24 小时制。

0 14 * * * /script/test.sh

每天12:30运行cron计划

30 12 * * * /script/test.sh

每分钟运行一次cron计划

例如,您有一个脚本需要每分钟运行一次,请使用以下表达式。

* * * * * /scripts/test.sh

在特定分钟运行cron计划

使用以下 cron 表达式在第 2、15 和 30 分钟运行脚本。

2,15,30 * * * * /scripts/test.sh

运行cron计划,每周六凌晨1点运行

这有助于您在周六的特定时间运行备份。以下表达式有助于在每个星期六凌晨 1 点执行 cron 计划。

0 1 * * sat /scripts/test.sh

运行 cron 计划以在特定月份运行

在 1 月、4 月和 6 月的第 1 天的 01:00 运行 cron 计划。

0 1 1 jan,apr,jun *  /script/test.sh 

在选定的日期运行 cron 计划

要在选定的日子(例如周六和周日)运行 cron 计划,请使用:

0 4 * * sat,sun  /script/test.sh

在一天中的特定时间运行 cron 计划

从 9 点到 17 点,每小时的第 0 分钟

0 9-17 * * * /script/test.sh

每周六周日运行两次cron计划

Cron 计划允许在特定日期的特定时间运行任务

0 2,23 * * sat,sun /scripts/test.sh

在周一到周五的范围内运行 cron 计划

从周一到周五,每周的每一天的 02:00。

0 2 * * mon-fri /scripts/test.sh

每月运行cron计划

您可以使用 @monthly 来使用快捷方式,而不是使用 0 0 1 * *。它在每月的第一天 00:00 运行。或者,您可以将脚本放在 /etc/cron.monthly/ 下。

@monthly /scripts/test.sh

每周运行cron计划

除了使用 0 0 * * mon,您还可以使用 @weekly 的快捷方式。它在星期一的 00:00 运行。或者,您可以将脚本放在 /etc/cron.weekly/ 下。

@weekly /scripts/test.sh

每天运行cron计划

您可以使用@daily 的快捷方式,而不是使用 0 0 * * *。它每天00:00运行。或者,您可以将脚本放在 /etc/cron.daily/ 下。

@daily /scripts/test.sh

每小时运行一次cron计划

除了使用 0 */1 * * *,您可以使用 @hourly 的快捷方式。它在每小时的 0 分钟后运行。或者,您可以将脚本放在 /etc/cron.hourly/ 下。

@hourly /scripts/test.sh

重启时运行 cron 计划

要在每次系统重新启动时运行任务,请使用 @reboot 字符串。该脚本将在重新启动后执行。

@reboot /scripts/test.sh

每30秒运行一次cron计划

Cron 只允许运行至少 60 秒。没有直接的方法来安排计划每 30 秒运行一次。

但是我们可以通过将延迟增加 30 秒来解决问题。

* * * * /scripts/run.sh * * * * 睡眠 30;/scripts/run.sh

运行一个cron计划并重定向输出

这将每 3 分钟运行一次 php 脚本并将输出重定向到一个文件。

*/3 * * * * /usr/bin/php /script/run.php >> /var/log/run.log

运行cron计划执行多条命令

要运行 cron 来执行多个命令,请在命令之间使用运算符 &&。

0 */12 * * Sun command1 && command2

备份 cron 计划

要备份 cron,请使用以下命令

# crontab -l > /backup/cron/root-bckup

要备份特定用户的 cron,请键入:

# crontab -u userName -l > /backup/cron/user-bckup.txt

要从备份文件中恢复 cron,只需使用:

# crontab /backup/cron/root-backup.txt

结论

我们了解了 Linux 中的 crontab 以及安排 cron 计划的示例。

linux命令行杀死进程
Linux 中检查内存使用情况
标签:

发表我的评论

电子邮件地址不会被公开。 必填项已用*标注

ajax-loader