在这篇文章中,我们将回顾并看看如何使用Crontab命令在Linux任务后台自动定期运行。
对于系统管理员来说,手动处理频繁的任务是一项艰巨的任务,这样的任务可以在Linux或类Unix操作系统中使用cron守护进程自动调度和后台运行,而无需人工干预。
例如,您可以使用 Linux 系统备份,安排更新 和 文件同步 等功能来自动化,使用 Cron 守护进程,该进程用于从命令行运行计划任务或使用 在线工具生成 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或Sun-Sat之间,这里您也可以使用每天名称的前三个字母,例如Sun或Wed。)
- 命令 – 要安排的 /path/to/command 或脚本。
1. 列出 Crontab 条目
使用 -l
选项列出或管理当前用户的 crontab 命令任务。
# crontab -l 00 10 * * * /bin/ls >/ls.txt
2. 编辑 Crontab 条目
要编辑 crontab 条目,请使用下面显示的 -e
选项。下面的示例将在 VI 编辑器中打开预定的作业。进行必要的更改并按下 :wq
键保存设置并退出。
# crontab -e
3. 列出用户的预定 Cron 作业
使用选项 -u
(用户)和 -l
(列表)来列出名为 tecmint 的特定用户的预定作业。
# crontab -u tecmint -l no crontab for tecmint
注意: 只有 root 用户具有完全权限查看其他用户的 crontab 条目。普通用户无法查看其他用户的条目。
4. 删除 Crontab 条目
注意: 使用参数 -r
的 Crontab 将不经确认地删除所有预定的作业。在删除用户的 crontab 之前使用 -i
选项。
# crontab -r
5. 删除 Crontab 之前提示
crontab使用-i
选项将在删除用户的crontab之前提示用户确认。
# crontab -i -r crontab: really delete root's crontab?
6. 允许的特殊字符(*,-,/,?,#)
- 星号(*) – 匹配字段中的所有值或任何可能的值。
- 连字符(-) – 定义范围。
- 斜杠(/) – 第一个字段 /10 表示每十分钟或范围的增量。
- 逗号(,) – 分隔项。
7. 系统范围的Cron计划
A system administrator can use the predefined cron directory as shown below.
- /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. 用于常见计划的特殊字符串
Strings | Meanings |
---|---|
@reboot | The command will run when the system reboots. |
@daily | Once per day or may use @midnight. |
@weekly | Once per week. |
@yearly | Once per year. we can use the @annually keyword also. |
如果要使用相同的计划,需要用关键字替换cron命令的五个字段。
10. 使用双和号(&&)的多个命令
在下面的示例中,command1和command2每天运行。
# crontab -e @daily <command1> && <command2>
11. 禁用电子邮件通知。
默认情况下,cron会将邮件发送到执行cron作业的用户帐户。如果您想禁用它,请按照以下示例添加您的cron作业。在文件末尾使用>/dev/null 2>&1选项将会将cron结果的所有输出重定向到/dev/null。
[root@tecmint ~]# crontab -e * * * * * >/dev/null 2>&1
结论:自动化任务可以帮助我们以更好、无错误和高效的方式执行任务。您可以在终端中键入“man crontab”命令来查看更多有关crontab的信息。
Source:
https://www.tecmint.com/11-cron-scheduling-task-examples-in-linux/