Linux中的11个Cron命令示例[调度Cron作业]

在这篇文章中,我们将回顾并看看如何使用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-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 作业

使用选项 -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/