网站搜索

Linux 中的 11 个 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-12Jan-Dec 之间的值,您可以使用每个月份名称的前三个字母,即 Jan 或 Jun 。)
  • 星期几(保持 0-6Sun-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 作业

使用 -uUser)和 -l 选项列出名为 howtoing 的特定用户的计划作业(列表)。

crontab -u tecmint -l

no crontab for tecmint

注意:只有root用户拥有查看其他用户的 crontab 条目的完整权限。普通用户无法查看其他人。

4. 删除 crontab 条目

警告: 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 计划

系统管理员可以使用预定义的 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. 通用时间表的特殊字符串

@reboot

该命令将在系统重新启动时运行。

@daily

每天一次或可以使用@midnight。

@weekly

每周一次。

@yearly

每年一次。我们也可以使用@annally关键字。

如果您想使用相同的内容,则需要将 cron 命令的五个字段替换为关键字。

10. 带双&号(&&)的多个命令

在以下示例中,command1 和 command2 每天运行。

crontab -e

@daily <command1> && <command2>

11. 禁用电子邮件通知。

默认情况下,cron 会向执行 cronjob 的用户帐户发送邮件。如果您想禁用它,请添加类似于以下示例的 cron 作业。在文件末尾使用 >/dev/null 2>&1 选项将重定向 /dev/null 下 cron 结果的所有输出。

[root@tecmint ~]# crontab -e
* * * * * >/dev/null 2>&1

结论:任务自动化可以帮助我们以更好的方式、无差错且高效地执行任务。您可以通过在终端中输入“man crontab”命令来参考 crontab 的手册页以获取更多信息。