Linux 中的 Crontab:任务调度示例
什么是 crontab?
Cron 源自希腊语“Chronos”,意为时间。它是一个系统进程,可以根据特定计划自动执行任务。它是一组用于执行常规计划任务的命令。Crontab 是“cron table”的缩写。它允许使用一个称为 cron 的作业调度程序来执行任务。
Crontab 也是用于编辑该计划的程序名称。它由 crontab 文件驱动,这是一个配置文件,指示要为特定计划定期运行的 shell 命令。
为什么使用 Cronjobs?
以下是在 Linux 中使用 Cronjobs 的原因
- 帮助操作系统对日志文件或数据库进行计划备份。
- 删除旧的日志文件
- 归档和清理数据库表
- 发送任何通知电子邮件,例如新闻通讯、密码过期电子邮件
- 定期清理缓存数据
- Crontab 是自动化 Unix 作业的理想选择。
- 它用于自动化系统维护
如何在 Linux 中使用 cron?
Linux 系统包中有一个有用的任务调度程序,名为 crontab。Crontab 很受欢迎,因为它可以在计划下作为 root 运行自动化进程。因此,运行 root 自动化进程可以使系统更改更加容易。您只需更改任务,然后等待任务重新启动。
Linux Crontab 格式
Linux 的 Crontab 有六个字段。前五个字段定义了执行的时间和日期,第六个字段用于命令执行。
Crontab 语法
[Minute] [hour] [Day_of_the_Month] [Month_of_the_Year] [Day_of_the_Week] [command]
- 星号 (*): 用于匹配
- 定义范围: 允许您使用连字符定义范围,例如 1-10 或 30-40 或 jan-mar、mon-wed。
- 定义多个范围: 允许您使用逗号分隔的命令定义各种范围,例如 apr-jun,oct-dec。
如何添加/修改 Crontab
用户可以使用以下 crontab 命令编辑他们的 crontab 作业
$ crontab -u -e
上面的命令将打开您计算机系统的个人 crontab 配置,可以使用您默认的文本编辑器进行编辑。
无需重新启动 crontab,当您使用以下命令时,它会自动拾取您的更改。
$ crontab -l
要删除您的 crontab 任务,请使用以下命令。
$ crontab -r
要添加或更新 crontab 中的作业,请使用下面给出的命令。
crontab -e
编辑其他用户 crontab 的命令
crontab -u username -e
如何列出 Crontab
查看当前用户 crontab 条目的命令
crontab -l
查看特定用户 crontab 条目的命令
crontab -u username -l
重要的 Crontab 示例
以下是一些重要的 Crontab 示例
描述 | 命令 |
---|---|
用于执行各种计划作业的 Cron 命令。 以下命令每天在上午 7 点和下午 5 点执行。 |
0 7,17 * * * /scripts/script.sh |
每 5 分钟执行一次 cron 的命令。 |
*/5* * * * * /scripts/script.sh |
Cron 调度程序命令帮助您在每周一早上 5 点执行任务。此命令有助于执行每周任务,如系统清理。 |
0 5 * * mon /scripts/script.sh |
命令每 3 分钟运行一次脚本。 |
*/3 * * * * /scripts/monitor.sh |
用于将 cron 计划为在特定月份执行的命令。 此命令用于在 2 月、6 月和 9 月运行任务。有时我们需要计划执行选定的月度任务。 |
* * * feb,jun,sep * /script/script.sh |
在选定日期执行的命令。此示例将在每周一和周三下午 5 点运行。 |
0 17 * * mon,wed /script/script.sh |
此命令允许 cron 在每个月的第一个星期六执行。 |
0 2 * * sat [ $(date +%d) -le 06 ] && /script/script.sh |
每 6 小时间隔运行脚本的命令,可以按如下方式配置。 |
0 */6 * * * /scripts/script.sh |
此命令计划在星期一和星期二执行任务两次。使用以下设置完成此操作。 |
0 4,17 * * mon,tue /scripts/script.sh |
命令计划 cron 每 15 秒执行一次。 |
* * * * * /scripts/script.sh * * * * * sleep 15; /scripts/script.sh |
用于每年安排任务的命令。 @yearly 时间戳为“0 0 5 1 *”。它在每年第五分钟执行任务。您可以使用它来发送新年祝福。 |
@yearly /scripts/script.sh |
每月执行任务的命令。 @monthly 时间戳类似于“0 0 1 * *”。此命令表达式允许在每月第一分钟执行任务。 |
@monthly /scripts/script.sh |
使用单个 cron 执行多个任务的命令。 |
* * * * * /scripts/script.sh; /scripts/scrit2.sh |
用于安排每周执行任务的命令。 @weekly 时间戳类似于“0 0 4 * sun”。它用于执行每周任务,如系统清理等。 |
@weekly /bin/script.sh |
任务将被安排为每天执行。 @daily 时间戳类似于“0 2 * * *”。它在每天第二分钟执行任务。 |
@daily /scripts/script.sh |
允许每小时执行任务。 @hourly 时间戳类似于“0 * * * *”。此命令在每小时的第一分钟执行任务。 |
@hourly /scripts/script.sh |
允许在系统重启时执行任务。 @reboot 表达式对于系统希望在系统启动时运行的任务很有用。这有助于自动开始后台任务。 |
@reboot /scripts/script.sh |
摘要
- Cron 源自希腊语“Chronos”,意为时间。
- Cronjobs 帮助操作系统对日志文件或数据库进行计划备份。
- Linux 系统包中有一个有用的任务调度程序,名为 crontab,可以计划作为 root 运行自动化进程。
- Linux 的 Crontab 有六个字段。前五个字段定义了执行的时间和日期,第六个字段用于命令执行。