Linux 中的 Cron 作业是什么?
在我们的 Linux Jargon Buster 的这一部分中,您将了解 Linux 中的 cron。您还将了解通过编辑 crontab 创建 cron 作业的基础知识。
在我们的 Linux Jargon Buster 系列的这一部分中,您将了解 Linux 中的 cron。您还将了解通过编辑 crontab 创建 cron 作业的基础知识。
Linux 中的 cron 作业是什么?
Cron 是一个命令行实用程序,用于按计划运行小而快速的命令。这是一个方便、经典的系统管理工具,可通过与其他工具结合来自动执行各种任务。例如,有些人结合 rsync 和 cron 在特定时间自动创建每日或每周备份。有些人用它来分析服务器日志,并将其与邮件功能结合起来,如果日志中检测到某种错误,则发送电子邮件。
Cron 就像瑞士军刀。它可用于各种用例。它的用途完全取决于您的想象力。
cron 的入门非常简单,只需几秒钟即可开始。但在向您展示之前,我将讨论一些经常让 Linux 用户感到困惑的事情。
Cron、cron 作业、crontab
您可能会遇到三个听起来相似的术语:cron、cron job 和 crontab。让我快速告诉你那些是什么:
cron:这是您安装在系统上并作为守护进程运行的实际程序。
cron 作业:Linux 中的作业是一个启动并运行的程序。 Cron 可以处理多个任务并在预定的时间运行它们。这些任务中的每一个都称为“cron 作业”。
crontab:这是您定义要运行的任务以及运行频率的文件(和命令)。一个 crontab 可以以表格形式包含多个 cron 作业,其中每一行都是一个 cron 作业。
让我分享一个示例 cron 作业示例,该示例每小时运行一次并打印“Linux 很酷! ” 到文件名 crontab_log.txt。
0 * * * * echo "Linux is Cool!" >> ~/crontab_log.txt
即使是最简单的 cron 工作也可能看起来很可怕。这是因为您需要知道如何正确读取 cron 作业。
我将在下一节中将 cron 的理论知识提升到一个新的水平。
开始使用 Cron
让我们从(另一个)Cron 工作原理的简单示例开始。
要创建 Cron 作业或 cron 将执行的命令,您只需运行:
crontab -e
它将拉出一个文件来编辑 cron 作业:
所有以 #
开头的行(即所有行)仅用于帮助指导您如何使用 cron,如果您不需要它们,可以将其删除。
不过,我们将使用以下内容作为我们的第一个 Cron 作业:
* * * * * touch ~/crontab_test
让我们快速了解一下它会做什么:
Cron 作业的形式为分钟、小时、日、月、周命令
。
在这种情况下,分钟仅表示作业将运行一小时中的分钟数。因此,指定
0
将在一小时的一开始运行,而指定5
将在一小时的第五分钟运行。接下来,hour 声明指定作业可以运行的时间,范围为 0-23。这里没有 24 小时选项的原因是
23
会到达 11:59 的末尾,此时是午夜,即0
> 第二天。同样的逻辑也适用于前面提到的分钟声明。day 指定作业可以在一个月中的哪一天运行,即 1-31(与之前从
0
开始的示例不同)。month 指定作业可以在一年中的哪些月份运行,取值范围为 1-12。
最后,week 指定作业在一周中的哪几天运行,从周日开始,其值介于 0 到 6 之间,与前两者不同。
然后指定command,这正是您要运行的命令。
如果您需要更多帮助来理解分钟、小时、日、月、周部分,我强烈推荐 Crontab guru 网站,它可以极大地帮助您了解到底发生了什么:
不过,按照前面的 * * * * * touch ~/crontab_test 示例,您只需每分钟运行一次 touch ~/crontab_test 即可。
让我们将其放入 crontab 中,然后查看它的运行情况:
如果您等到下一分钟,您将看到位于主目录中的 crontab_test 文件:
这就是使用 cron 的基础知识!
cron 作业的有用示例
这太简单了(可能也没什么用)。
假设您想做一些更复杂的事情,比如一个备份脚本需要将文件从系统上的多个目录复制到单个文件夹中,然后将该备份存档到单个文件中。
只需将我们的命令放入脚本中即可轻松完成,然后该脚本可由 cron 调用。
让我们使用以下脚本作为示例:
#!/usr/bin/bash
echo "Backing up..."
mkdir -p ~/.local/tmp/
tar -Pc ~/Documents/ -f ~/.local/tmp/backup.gz
该脚本执行以下操作:
确保系统上存在 ~/.local/tmp/backup_dir 目录。
将 ~/Documents/ 中的所有内容放入位于 ~/.local/tmp/backup.gz 的存档中。
让我们先手动运行脚本,以便我们可以看到它确实有效。
首先,让我们将脚本放在 ~/backup_script 中,如下所示:
然后只需将上面显示的脚本内容复制到文件中即可。
然后,您需要告诉系统我们的脚本可以通过简单地运行 chmod +x ~/backup_script 来执行:
然后,您可以通过运行 ~/backup_script.sh 来测试运行我们的脚本,它只是告诉我们的系统脚本的路径:
然后,您可以通过运行 tar -xf ~/.local/tmp/backup.gz -C output_dir 来恢复此备份,其中 output_dir 是保存文件的目录。
该脚本现在可以使用 Cron 按计划运行!
例如,如果您希望脚本每天凌晨 3 点运行,您可以在 cron 中使用以下语法:
0 3 * * * ~/backup_script
然后您每天都会创建备份。
包起来
这只是 cron 作业的介绍。尽管我不确定桌面 Linux 用户的许多用例,但它被系统管理员广泛使用。如果有的话,请在评论区推荐一些。