在我的 Linux 早期探索中,我开始欣赏操作系统的众多命令行实用程序以及它们简化日常任务的方式。例如,在我的 Windows 服务器上备份应用程序通常需要昂贵的附加软件包。相比之下,tar
命令使备份 Linux 变得相对容易,而且它功能强大且可靠。
然而,在备份我们学区的电子邮件系统时,我面临着不同的挑战。备份不能在工作日或傍晚进行,因为人们正在使用该系统。备份必须在午夜之后进行,并且需要可靠。我习惯了 Windows 任务管理器,但我在 Linux 上要用什么呢?那时我了解到了 cron。
在 Linux 上使用 cron 调度任务
Cron 是一个守护进程,用于自动执行计划的命令。学习如何使用 cron 需要一些阅读和实验,但很快我就开始使用 cron 来关闭我们的电子邮件服务器,将数据备份到压缩的 tar 文件中,然后在凌晨 3 点重启电子邮件服务。
cron 作业的命令存储在 Linux 系统上的 crontab 文件中,该文件通常位于 /etc/crontab。使用 $ crontab -l
显示 crontab 文件的内容。
使用 $ crontab -e
编辑 crontab 文件。
某些系统默认使用 Vi 编辑器 进行 cron 编辑。您可以使用 环境变量 覆盖此设置。
$ EDITOR=nano crontab -e
这允许您使用 nano 编辑器 编辑您的个人 crontab 文件(如果您还没有,系统会自动为您创建一个)。
所有 crontab 命令都有用星号表示的参数,直到您插入一个整数值。第一个代表分钟,然后是小时、月份中的日期、年份中的月份,最后是星期几。
注释以井号开头。Cron 会忽略注释,因此它们是为您自己留下关于命令做什么以及为什么重要的注释的好方法。
一个 cron 作业示例
假设您想每周一上午 10 点使用 clamscan 扫描您的主目录以查找病毒和恶意软件。您还想每周二上午 9 点备份您的主目录。使用 cron 和 crontab 文件可以确保您的系统维护每周都会进行,无论您是否记得运行这些实用程序。
编辑您的 crontab 文件以包含以下内容,使用您自己的用户名而不是 “don”(我的用户名)
# Scan my home directory for viruses
0 10 * * 1 clamscan -ir /home/don
# Backup my home directory
0 9 * * 2 tar -zcf /var/backups/home.tgz /home/don
如果您使用的是 nano 编辑器,请使用 Ctrl+O 保存您的工作以写出文件,并使用 Ctrl+X 退出编辑器。编辑文件后,使用 crontab -l
列出您的 cron 文件的内容,以确保它已正确保存。
您可以为您系统上需要的任何作业创建 crontab 作业。这充分利用了 cron 守护进程。
从 Linux 命令行进行调度
cron 最难的部分是为那些前导星号想出正确的值,这已不是什么秘密。有一些网站,例如 crontab.guru,可以将 cron 时间动态翻译成人类可读的翻译,Opensource.com 还有一个 cron 速查表,您可以下载它来帮助您理清思路。
此外,大多数现代 cron 系统都具有常用值的快捷方式,包括
@hourly
:每小时运行一次 (0 * * * *)@daily
:每天运行一次 (0 0 * * *)@weekly
:每周运行一次 (0 0 * * 0)@monthly
:每月运行一次 (0 0 1 * *)@reboot
:重启后运行一次
还有 cron 的替代方案,包括 anacron,用于您想要定期运行但不按照特定计划运行的作业,以及用于一次性作业的 at
命令。
Cron 是一个有用的任务调度系统,它像编辑文本一样容易使用。试试看!
2 条评论