slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
Linux:如何使用 Cron 安排常规作业
17611538698
webmaster@21cto.com

Linux:如何使用 Cron 安排常规作业

运维 0 634 2025-01-07 08:03:58

图片

使用 Cron,你可以安排 Linux 上几乎任何类型的作业,例如将特定目录备份到外部驱动器。

当我们使用Linux时,你可以随意创建一个强大、灵活且自动化的环境来满足你的任何目的。

可用于自动化的工具之一便是Cron。使用 Cron,你可以在 Linux 上安排几乎任何类型的作业。例如,你可以编写一个 bash 脚本来将特定目录备份到外部驱动器。如果想让该备份脚本自动运行,就需要创建所谓的 cronjob,这样它就会在你想要的时候准确运行。

几乎每个Linux 发行版都默认安装了 Cron ,因此您无需添加任何内容即可自动执行任务。

但是 Cron 如何使用呢?本文就来告诉你。

Cron 是如何工作的?

Cron 依赖于 crontab 文件,这些文件保存在 /var/spool/cron 中。但是,重要的是要明白,您不要手动编辑这些文件。为什么?因为 Cron 有一个可用于编辑 crontab 文件的工具。

这又引出了另一点。Linux 系统上的每个用户都有自己的 crontab 文件。任何用户都可以创建 crontab 文件,甚至可以使用以下命令查看其当前的 cron 任务:

crontab -l

该命令的输出将显示包含您创建的任何自定义 cron 作业的 crontab 文件的内容。

大多数人对 Cron 感到困惑的一件事是时间格式。Cron 有五个时间和日期条目,分别是:

  • 分钟 (0-59)

  • 小时 (0-23)

  • 月份日期 (1-31)

  • 月份 (1-12)


星期几(0-6,可以使用Sunday, Monday, Tuesday等,其中星期日可以用 0、7 或 Sunday 表示)

时间/日期格式配置如下:

M H D MO DW

其中 M 表示分钟,H 表示小时,Day 表示月份中的天数,MO 表示月份,DW 表示星期几。

例如,如果你创建了一个备份脚本并且希望它每周日晚上 11:00 运行,则时间/日期格式为:

0 23 * * 0


在任何时候在 Cron 中看到星号,它就知道你希望它在该时间/日期条目的每个实例期间运行。在上面的示例中,月份的日期和月份条目都有星号,这意味着它们将在每个月的每一天和每个月运行。

如果你希望该作业每周六晚上 11:59 运行,则输入内容为:

59 23 * * 6

或者你也可以这样表述:

59 23 * * Saturday


添加 Cronjob

让我们创建一个备份脚本,然后创建一个 cron 作业,以便它每周日晚上 11 点运行。

我们的备份脚本,内容如下所示:

#!/bin/bash
# What you want to backup.
backup_files="/home/$USER/Documents"
# Where you want to backup to.
dest="/backup"
# Create an archive filename.
day=$(date +%A)
hostname=$(hostname -s)
archive_file="$hostname-$day.tgz"
# Backup the files using tar.
tar czf $dest/$archive_file $backup_files


将该文件另存为sat_backup.sh。还需要使用以下命令创建 /backup 目录:

sudo mkdir /backup


更改权限,以便你的用户可以使用。以下命令进行写入:

sudo chmod -R u+w /data


还需要确保目录所有权正确,例如:

sudo chown -R $USER:$USER /data


保存备份脚本后,使用以下命令将其移动到 /usr/local/bin:

sudo mv sat_backup.sh /usr/local/bin

授予脚本可执行权限:

sudo chmod u+x /usr/local/bin/sat_backup.sh


继续之前,请通过发出以下命令确保脚本按预期运行:

sat_backup.sh


现在,让我们创建 cronjob。为此,使用以下命令:

crontab -e


如果这是您第一次运行上述命令,系统将提示您选择默认编辑器。我强烈建议选择 Nano,因为它非常易于使用。

在文件底部,添加以下内容:

0 23 * * 0 /usr/local/bin/sat_backup.sh > /dev/null 2>&1


需要做一点解释。

我们已经知道 0 23 * * 0 是什么意思,/usr/local/bin/sat_backup.sh 是创建的脚本。但是 /dev/null 2>&1 呢?

这是一个关键元素,因为如果脚本产生任何输出(甚至是错误),它就会失败,而不知道将错误发送到哪里。在上述情况下,/dev/null 2>&1 本质上是一个垃圾桶。如果没有这个谜题,如果发现任何错误,cron 作业将无法运行。更具体地说:

  • 2 是标准错误的文件描述符

  • > 用于重定向

  • & 是文件描述符的符号

  • 1 是标准输出的文件描述符


这意味着所有标准错误都被重定向到标准输出并被发送到称为 /dev/null 的黑洞。

使用 Ctrl+x 键盘快捷键保存 cronjob。然后,你可以使用以下命令查看 cronjob:

crontab -l

你应该会看到列出的新 cronjob,下周日晚上 11 点,该作业将自动运行,并且将在 /data 中找到一个新的备份文件。

这就是 Linux cronjobs 的全部功能。作为 Linux 用户和/或管理员,此工具对你来说一定很有用。

作者:聆听音乐的鱼

评论