在本文中,我们将回顾并了解如何使用以下命令定期在后台自动安排和运行 Linux 任务:使用Crontab。
对于系统管理员来说,手动处理频繁的工作是一项艰巨的任务,而这些任务可以在 Linux 或类 Unix 操作系统中使用 cron 守护程序在后台自动安排和运行,而无需人工干预。
例如,您可以使用Cron守护程序来自动化Linux 系统备份、计划更新和文件同步等,该守护程序用于从命令行运行计划任务或使用在线工具生成 cron 作业。
Cron每分钟醒来并检查可数的计划任务 – Crontab ( CRON TABle ) 是一个表,我们可以在其中安排此类重复任务。
Tips:每个用户都可以有自己的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 作业
使用( User ) 和( List )选项列出名为example的特定用户的计划作业。-u
-l
# crontab -u 示例 -l 例如没有 crontab
注意:只有root用户拥有查看其他用户的 crontab 条目的完整权限。普通用户无法查看其他人。
4. 删除 crontab 条目
注意:带有该参数的 Crontab-r
将删除完整的计划作业,而无需 Crontab 确认。-i
在删除用户的 crontab 之前使用选项。
# crontab -r
5.删除crontab前提示
带有该选项的 crontab-i
会在删除用户的 crontab 之前提示您用户的确认。
# crontab -i -r crontab:真的删除root的crontab吗?
6. 允许的特殊字符(*、-、/、?、#)
- 星号 (*) – 匹配字段中的所有值或任何可能的值。
- 连字符 (-) – 定义范围。
- 斜杠 (/) – 第一个字段 /10 表示每十分钟或范围增量。
- 逗号(,) – 分隔项目。
7. 系统范围的 Cron 计划
系统管理员可以使用预定义的 cron 目录,如下所示。
- /etc/cron.d
- /etc/cron.daily
- /etc/cron.每小时
- /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。 |
@每周 | 每周一次。 |
@每年 | 每年一次。我们也可以使用@annally关键字。 |
如果您想使用相同的内容,则需要将 cron 命令的五个字段替换为关键字。
10. 带双&号(&&)的多个命令
在以下示例中,command1 和 command2 每天运行。
# crontab -e @daily <命令1> && <命令2>
11. 禁用电子邮件通知。
默认情况下,cron 会向执行 cronjob 的用户帐户发送邮件。如果您想禁用它,请添加类似于以下示例的 cron 作业。在文件末尾使用>/dev/null 2>&1选项将重定向/dev/null下 cron 结果的所有输出。
[root@example ~]# crontab -e * * * * * >/dev/null 2>&1
结论:任务自动化可以帮助我们以更好的方式、无差错且高效地执行任务。您可以通过在终端中输入“ man crontab ”命令来参考 crontab 的手册页以获取更多信息。