资深 Linux 系统管理员常用的 15 个很好用的 Cron 工作示例
摘要:LinuxCron 实用程序是一种在特定时间和/或日期持续调度例行后台作业的有效方法。这篇文章讲述了 15 个很好用的 crontab 工作调度示例。
本文分享自华为云社区《Linux Crontab:15 个很好用的 Cron 工作示例》,作者:Tiamo_T。
经验丰富的 Linux 系统管理员知道在后台自动运行日常维护作业的重要性。
Linux Cron 实用程序是一种在特定时间和/或日期持续调度例行后台作业的有效方法。
这篇文章讲述了 15 个很好用的 crontab 工作调度示例。
Linux Crontab 格式
1. 为特定时间安排作业
cron 的基本用法是在特定的时间执行一个作业,如下所示。这将在 6 月 10 日上午 08:30 执行完整备份 shell 脚本(完整备份)。请注意,时间字段使用 24 小时格式。因此,对于上午 8 点使用 8,对于晚上 8 点使用 20。
30 – 30 分钟
08 – 08 上午
10 – 第 10 天
06 – 第 6 个月(六月)
* – 一周中的每一天
2. 为多个实例安排作业(例如,一天两次)
以下脚本每天进行两次增量备份。本示例在每天的 11:00 和 16:00 执行指定的增量备份 shell 脚本(incremental-backup)。字段中的逗号分隔值指定该命令需要在所有提到的时间内执行。
00 – 第 0 分钟(一小时的顶部)
上午 11,16 – 11 点和下午 4 点
* – 每天
* – 每个月
* – 一周中的每一天
3. 安排特定时间范围的工作(例如仅在工作日)
如果您希望在特定时间范围内每小时安排一次作业,请使用以下内容。
每天工作时间的 Cron Job
本示例在每天上午 9 点至下午 6 点的工作时间内(包括周末)检查数据库的状态
00 – 第 0 分钟(一小时的顶部)
09-18 – 9 am, 10 am,11 am, 12 am, 1 pm, 2 pm, 3 pm, 4 pm, 5 pm, 6 pm
* – 每天
* – 每个月
* – 一周中的每一天
Cron Job 每个工作日的工作时间
本示例在每个工作日(即不包括周六和周日)的工作时间上午 9 点至下午 6 点检查数据库的状态
00 – 第 0 分钟(一小时的顶部)
09-18 – 9 am, 10 am,11 am, 12 am, 1 pm, 2 pm, 3 pm, 4 pm, 5 pm, 6 pm
* – 每天
* – 每个月
1-5 -周一、周二、周三、周四和周五(每个工作日)
4. 如何查看 Crontab 条目?
查看当前登录用户的 Crontab 条目
要查看您的 crontab 条目,请从您的 unix 帐户键入 crontab -l,如下所示。
查看根 Crontab 条目
以 root 用户 (su – root) 登录并执行 crontab -l ,如下所示。
Crontab HowTo:查看其他 Linux 用户的 Crontab 条目
要查看其他 Linux 用户的 crontab 条目,请登录到 root 并使用-u{username} -l,如下所示。
5. 如何编辑 Crontab 条目?
编辑当前登录用户的 Crontab 条目
要编辑 crontab 条目,请使用 crontab -e,如下所示。默认情况下,这将编辑当前登录的用户 crontab。
当你用 :wq 保存上述临时文件时,它会保存 crontab 并显示以下消息,表明 crontab 修改成功。
编辑根 Crontab 条目
以 root 用户 (su – root) 登录并执行 crontab -e,如下所示。
编辑其他 Linux 用户的 Crontab 文件条目
要编辑其他 Linux 用户的 crontab 条目,请登录到 root 并使用-u{username} -e,如下所示。
6. 使用 Cron 每分钟安排一个作业。
理想情况下,您可能不需要每分钟安排一次作业。但是理解这个例子将帮助你理解本文下面提到的其他例子。
* 表示所有可能的单位——即全年每小时的每一分钟。除了直接使用这个 *,您会发现它在以下情况下非常有用。
当您在分钟字段中指定 */5 时,表示每 5 分钟一次。
当您在分钟字段中指定 0-10/2 时,意味着在前 10 分钟内每 2 分钟一次。
因此,上述约定可用于所有其他 4 个字段。
7. 每 10 分钟安排一个后台 Cron 作业。
如果您想每 10 分钟检查一次磁盘空间,请使用以下方法。
它全年每 10 分钟执行一次指定的命令 check-disk-space。但是您可能需要仅在办公时间执行命令,反之亦然。上面的例子展示了如何做这些事情。我们可以使用单个关键字来指定它,而不是在 5 个字段中指定值,如下所述。在某些特殊情况下,您可以使用 @ 后跟关键字来代替上述 5 个字段,例如重新启动、午夜、每年、每小时。
8. 使用 @yearly 在每年的第一分钟安排工作
如果您希望在每年的第一分钟执行一项工作,那么您可以使用 @yearly cron 关键字,如下所示。这将在每年 1 月 1 日的 00:00 使用年度维护 shell 脚本执行系统年度维护。
9. 使用 @monthly 安排每个月开始的 Cron 作业
它与上面的 @yearly 相似。但是使用 @monthly cron 关键字每月执行一次命令。这将在每月 1 日的 00:00 执行 shell 脚本磁带备份。
10. 每天使用 @daily 安排后台作业
使用 @daily cron 关键字,这将在每天 00:00 使用 cleanup-logs shell 脚本执行每日日志文件清理。
11. 如何在每次重启后使用 @reboot 执行 Linux 命令?
使用 @reboot cron 关键字,这将在机器每次启动后执行一次指定的命令。
12. 如何使用 MAIL 关键字禁用/重定向 Crontab 邮件输出?
默认情况下,crontab 将作业输出发送给安排作业的用户。如果要将输出重定向到特定用户,请在 crontab 中添加或更新 MAIL 变量,如下所示。
如果您不希望将邮件发送到任何地方,即停止通过电子邮件发送 crontab 输出,请在 crontab 中添加或更新 MAIL 变量,如下所示。
13. 如何使用 Crontab 每秒执行一次 Linux Cron 作业。
您不能安排每秒一次的 cronjob。因为在 cron 中,您可以指定的最小单位是分钟。在典型的场景中,我们大多数人没有理由每秒在系统中运行任何作业。
14.在 Crontab 中指定 PATH 变量
以上所有例子我们都指定了需要执行的 Linux 命令或 shell-script 的绝对路径。例如,如果您只想指定 tape-backup,而不是指定/home/ramesh/tape-backup,则将路径/home/ramesh 添加到 crontab 中的 PATH 变量中,如下所示。
15. 从 Cron 文件安装 Crontab
除了直接编辑 crontab 文件之外,您还可以先将所有条目添加到 cron 文件中。在文件中包含所有这些条目后,您可以将它们上传或安装到 cron,如下所示。
注意:这会将 cron-file.txt 安装到您的 crontab,这也将删除您的旧 cron 条目。因此,从 cron-file.txt 上传 cron 条目时请注意。
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/088e07b8d0dedfb72fbde46c9】。文章转载请联系作者。
评论