使用 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 用户和/或管理员,此工具对你来说一定很有用。
作者:聆听音乐的鱼
本文为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。