Linux 中的 11 个 Cron 命令示例 [安排 Cron 作业]
在本文中,我们将回顾并了解如何使用Crontab命令定期自动在后台安排和运行 Linux 任务。
手动处理频繁作业对于系统管理员来说是一项艰巨的任务,可以使用 Linux 或类 Unix 操作系统中的 cron 守护程序来安排此类任务并在后台自动运行,无需人工干预。
例如,您可以使用Cron守护进程自动执行Linux 系统备份、计划更新和文件同步等操作,该守护进程用于从命令行运行计划任务或使用在线工具生成 cron 作业。
Cron每分钟唤醒一次,并检查可数的计划任务 - Crontab(CRON TABle)是一个表,我们可以在其中安排此类重复任务。
提示:每个用户都可以有自己的 crontab 来创建、修改和删除任务。默认情况下,用户启用cron ,但是,我们可以通过在/etc/cron.deny文件中添加条目来限制用户。
Linux 中的 Crontab
Crontab文件每行由多个命令组成,实际上有六个字段,字段之间用空格或制表符分隔。前五个字段表示运行任务的时间,最后一个字段表示命令。
- 分钟(保持值在0-59之间)
- 小时(保持0-23之间的值)
- 月份中的日期(保留1 至 31之间的值)
- 一年中的月份(保留1-12或Jan-Dec之间的值,您可以使用每个月名称的前三个字母,即Jan 或 Jun。)
- 星期几(保留0-6或周日至周六之间的值,这里您也可以使用每一天名称的前三个字母,即周日或周三。)
- 命令 – 您想要安排的 /path/to/command 或脚本。
1. 列出 Crontab 条目
-l
使用带有当前用户选项的crontab 命令列出或管理任务。
# crontab -l 00 10 * * * /bin/ls >/ls.txt
2. 编辑 Crontab 条目
要编辑 crontab 条目,请使用-e
下面显示的选项。以下示例将在VI编辑器中打开计划作业。进行必要的更改并退出:wq
自动保存设置的键。
# crontab -e
3.列出用户的计划任务
列出特定用户的计划作业(例如,使用选项为-u
(用户)和-l
(列表)。
# crontab -u example -l no crontab for example
注意:只有root用户才有完整权限查看其他用户的 crontab 条目。普通用户无法查看其他用户。
4. 删除 Crontab 条目
警告:-r
带有参数的 Crontab将删除完整的计划作业,而无需 Crontab 确认。-i
删除用户的 crontab 之前请使用选项。
# crontab -r
5. 删除 Crontab 前提示
带有该选项的 crontab-i
将在删除用户的 crontab 之前提示您用户的确认。
# crontab -i -r crontab: really delete root's crontab?
6. 允许的特殊字符(*、-、/、?、#)
- 星号 (*) – 匹配字段中的所有值或任何可能的值。
- 连字符 (-) – 定义范围。
- 斜线 (/) – 第一个字段 /10 表示每十分钟或范围增量。
- 逗号(,) ——用于分隔项目。
7. 系统范围的 Cron 计划
系统管理员可以使用预定义的 cron 目录,如下所示。
- /etc/cron.d
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
- /etc/cron.weekly
8. 在特定时间安排工作
以下作业每天凌晨 12:30 从 /tmp 中删除空文件和目录。您需要输入用户名才能执行 crontab 命令。在下面的示例中,root用户正在执行 cron 作业。
# crontab -e 30 0 * * * root find /tmp -type f -empty -delete
9. 常用时间表的特殊字符串
字符串 | 含义 |
---|---|
@重启 | 该命令将在系统重启时运行。 |
@日常的 | 每天一次或可以使用@midnight。 |
@每周 | 每周一次。 |
@每年 | 每年一次。我们也可以使用@annually 关键字。 |
如果要使用相同的功能,需要将 cron 命令的五个字段替换为关键字。
10. 使用双 && 符号的多个命令
在下面的例子中,command1 和 command2 每天运行。
# crontab -e @daily <command1> && <command2>
11.禁用电子邮件通知。
默认情况下,cron 会向执行 cronjob 的用户帐户发送邮件。如果要禁用它,请添加类似于以下示例的 cron 作业。在文件末尾使用>/dev/null 2>&1选项会将 cron 结果的所有输出重定向到/dev/null下。
[root@example ~]# crontab -e * * * * * >/dev/null 2>&1
结论:任务自动化可以帮助我们以更好的方式、无错误和高效地执行任务。您可以在终端中输入“ man crontab ”命令来参考 crontab 的手册页以获取更多信息。