克龙, 短缺 命令在线运行,是类 Unix 操作系统中功能强大的基于时间的作业调度程序。 期限 cron的 是一个文字游戏 克罗诺斯 or CHRONOS,在希腊神话中代表时间。 基于时间的作业调度程序的名称 cron 反映了其在特定时间或间隔调度和执行任务的功能,使其适合参考神话中的时间概念。
Cron 允许您自动执行重复任务、按特定时间间隔执行脚本并保持系统效率。 这份综合指南将引导您了解有关 cron 的所有信息,从安装到使用、关键词汇和实际代码示例。
目录
什么是Cron?
Cron 是一个在基于 Unix 的系统(包括 Linux 和 macOS)上运行的守护进程(后台进程)。 其主要目的是自动执行计划任务。 这些任务的范围从简单的脚本到系统维护和备份。
安装计划任务
在大多数类 Unix 系统中,cron 是预先安装的。 您可以通过打开终端并输入以下内容来检查其可用性:
crontab -e
如果此命令打开 cron 表编辑器,则表明您已安装 cron。 如果没有,您可以使用系统的包管理器安装它。 例如,在 Ubuntu 上,您可以使用:
sudo apt-get install cron
Cron 概念和术语
在深入了解 cron 的用法之前,让我们先了解一些基本概念和术语:
- crontab中: 短缺 cron 表,它是一个包含用户计划任务列表的文件。
- 的cronjob:计划在特定时间运行的单个任务或命令。
- 字段:每个 cronjob 有五个字段定义作业何时运行:
- 分钟(0-59)
- 小时 (0-23)
- 每月的某天 (1-31)
- 月 (1-12)
- 星期几(0-7,其中 0 和 7 都代表星期日)
定时语法
理解 crontab 条目的语法至关重要。 它遵循以下模式:
* * * * * command-to-be-executed
以下是您可以插入到 cron 作业中的注释说明:
# +---------------- minute (0 - 59)
# | +------------- hour (0 - 23)
# | | +---------- day of month (1 - 31)
# | | | +------- month (1 - 12)
# | | | | +---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
* * * * * /var/www/html/myscript.php
每个星号 (*) 代表 cron 表达式中的一个字段。 例如,要在每天下午 3:30 安排作业,您可以使用:
30 15 * * * command-to-be-executed
Cron 示例和用例
让我们探讨一些实际示例来说明 cron 的用法:
- 每天运行脚本: 要每天午夜执行脚本,您可以使用:
0 0 * * * /path/to/script.sh
- 每小时运行一个脚本: 对于每小时任务,请使用:
0 * * * * /path/to/script.sh
- 每周备份: 要安排每周日凌晨 2 点进行备份,请使用:
0 2 * * 0 /path/to/backup-script.sh
- 在特定月份运行任务: 要仅在一月和七月的上午 8:30 运行作业:
30 8 * 1,7 * /path/to/script.sh
Cron 陷阱和最佳实践
- 环境变量:确保您的 cron 作业设置了必要的环境变量,因为 cron 作业不会继承 shell 的环境变量。
- 权限: 确保将脚本文件的权限设置为可执行。 每次我重新保存脚本时,我都会发现需要重新设置我的权限!
- 路径变量:在 cron 作业中指定可执行文件和脚本的完整路径,以避免相对路径出现问题。
- 测试:在设置关键的 cron 作业之前,在安全的环境中对其进行测试,以确保它们按预期工作。
- 记录:将 cron 作业的输出重定向到日志文件,以跟踪其执行情况和任何潜在错误。
0 0 * * * /path/to/script.sh >> /path/to/cron.log 2>&1
这个 cron 作业运行一个脚本 /path/to/script.sh
每天午夜,脚本生成的输出(stdout 和 stderr)会附加到日志文件中
/path/to/cron.log
。 这是捕获并记录 cron 作业的输出以进行监控和故障排除的常见做法。 让我们分解一下这个特定的 cron 作业语法:
- *0 0 * * *: 这部分定义了 cron 作业何时运行的时间表。 在本例中,它计划在每天午夜(0 点过 0 分钟)运行。
- /path/to/script.sh:这是 cron 作业运行时要执行的命令或脚本。 此示例显示的脚本位于
/path/to/script.sh
. - >> /path/to/cron.log:这部分将 cron 作业的标准输出(stdout)重定向到名为的日志文件
cron.log
位于/path/to/
。 该>>
运算符将输出附加到日志文件,因此如果该文件不存在,则会创建该文件;如果该文件已存在,则输出将添加到文件末尾。 - 2>&1:这用于将标准输出(stdout)和标准错误(stderr)重定向到同一日志文件。 这
2
代表 stderr,并且1
代表标准输出。 所以,2>&1
意味着 stdout 和 stderr 都被重定向到之前指定的同一日志文件。
Cron 是在基于 Unix 的系统上自动执行任务的重要工具。 凭借其灵活的调度选项,它可以简化系统管理并提高效率。 通过了解其语法并遵循最佳实践,您可以利用 cron 的强大功能来有效地自动执行日常任务。
其他 Cron 资源
- Unix守护程序 –院长威尔逊