Crontab文件
存储 Linux 中的 Cron 计划。Cron 计划 (cron) 以固定的时间、日期和间隔定期运行。它在 Windows 中的等效项是计划任务。所有重复性任务都可以使用 cron 来安排。Crontab 文件是配置文件,其中包含有关要执行的时间和命令/脚本的信息。
之前有一篇文章介绍了
crontab的使用
,这里再补充下更多的例子来说明。
Crontab 语法
crontab 文件中的每一行代表一个计划。它包含
五个字段
,后跟要执行的
shell 命令
或脚本
。
* (Minute) *(Hour) * (Day of the Month) *(Month of the Year) *(Day of the Week) username
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 计划的示例。