简介
在这个实验中,你将学习如何通过检查配置 cron 任务的各个位置,来查看 Linux 系统上的定时备份任务。你将首先使用 crontab -l
列出当前用户的 cron 任务,查看是否设置了个人定时任务。
接下来,你将通过检查 /etc/cron.d
目录来查看系统范围的 cron 任务,该目录通常包含软件包安装的定时任务。最后,你将验证 /etc/cron.daily
目录的内容,查看是否配置了任何每日脚本(包括潜在的备份程序)以自动运行。
在这个实验中,你将学习如何通过检查配置 cron 任务的各个位置,来查看 Linux 系统上的定时备份任务。你将首先使用 crontab -l
列出当前用户的 cron 任务,查看是否设置了个人定时任务。
接下来,你将通过检查 /etc/cron.d
目录来查看系统范围的 cron 任务,该目录通常包含软件包安装的定时任务。最后,你将验证 /etc/cron.daily
目录的内容,查看是否配置了任何每日脚本(包括潜在的备份程序)以自动运行。
在这一步中,你将学习如何使用 crontab
命令查看当前用户的定时任务。
cron
是类 Unix 操作系统中基于时间的任务调度器。它允许你安排命令或脚本在指定的时间间隔自动运行。这些定时任务通常被称为“cron 任务”。
系统上的每个用户都可以有自己的一组 cron 任务。这些任务存储在一个名为“crontab”(cron 表)的特殊文件中。
要查看当前用户(labex
)的 cron 任务,你可以使用带有 -l
选项的 crontab
命令。-l
代表“list”(列出)。
如果你还没有打开终端,请打开它。输入以下命令并按回车键:
crontab -l
由于这是一个全新的环境,labex
用户可能还没有设置任何 cron 任务。如果是这种情况,你会看到类似这样的消息:
no crontab for labex
这条消息仅仅意味着 labex
用户没有配置任何定时任务。
如果配置了 cron 任务,输出将在新的一行显示每个定时任务,指定调度时间和要执行的命令。
了解用户的 cron 任务是管理 Linux 系统上定时任务的第一步。在接下来的步骤中,我们将探索系统范围的 cron 任务。
点击 继续 以继续操作。
在上一步中,你学习了如何查看特定用户的 cron 任务。现在,让我们来探索系统范围的 cron 任务。
系统范围的 cron 任务通常存储在 /etc/cron.d/
目录中。与使用 crontab
命令管理的用户 crontab 不同,系统范围的 cron 任务是在该目录下的各个文件中定义的。
这些文件通常由已安装的软件包创建,用于安排需要在整个系统上运行的任务,例如系统更新、日志轮转或清理脚本。
要查看 /etc/cron.d/
目录中的文件,你可以使用 ls
命令。由于该目录由 root 用户拥有,你需要使用 sudo
来列出其内容。
在终端中输入以下命令并按回车键:
sudo ls /etc/cron.d/
你可能会看到类似以下的输出,列出各种文件:
anacron e2scrub_all phpsessionclean
你看到的具体文件可能会因系统上安装的软件而异。该目录中的每个文件都代表一个系统范围的 cron 任务配置。
要查看其中一个文件(例如 phpsessionclean
)的内容,你可以使用 cat
命令。同样,你需要使用 sudo
,因为该文件由 root 用户拥有。
输入以下命令并按回车键:
sudo cat /etc/cron.d/phpsessionclean
你将看到该文件的内容,其中定义了 phpsessionclean
脚本的执行时间和方式。其格式与用户 crontab 类似,但还包括一个用户字段,用于指定应该运行该命令的用户(通常是 root
)。
## This file is installed by the php-common package
#
## The script will clean up old session files.
#
## See /usr/lib/php/sessionclean for details.
09,39 * * * * root [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi
此输出显示,phpsessionclean
脚本计划在每天每小时的第 09 分钟和第 39 分钟运行,并且将由 root
用户执行。
探索 /etc/cron.d/
目录中的文件有助于你了解系统级别的自动化任务。
点击 继续 进入下一步。
除了 /etc/cron.d/
中的各个文件外,Linux 系统通常还会使用 /etc/cron.daily/
、/etc/cron.weekly/
和 /etc/cron.monthly/
等目录来安排脚本在特定时间间隔运行。
任何放在 /etc/cron.daily/
中的可执行脚本都会每天执行一次。同样,/etc/cron.weekly/
中的脚本每周执行一次,/etc/cron.monthly/
中的脚本每月执行一次。
这些目录通常由一个系统范围的 cron 任务管理,该任务会运行像 run-parts
这样的脚本,以执行在这些目录中找到的所有脚本。
让我们查看 /etc/cron.daily/
目录的内容。这个目录包含计划每天运行的脚本。
使用带有 sudo
的 ls
命令列出该目录中的文件:
sudo ls /etc/cron.daily/
你可能会看到一个脚本列表,例如:
apt-compat dpkg logrotate man-db passwd update-notifier-common
这些是在系统上执行日常维护任务的脚本,例如更新软件包列表(apt-compat
)、轮转日志文件(logrotate
)以及更新手册页数据库(man-db
)。
要了解其中一个脚本的作用,你可以使用 sudo cat
查看其内容。例如,让我们查看 logrotate
脚本:
sudo cat /etc/cron.daily/logrotate
输出将显示该脚本的代码,该代码负责轮转系统日志文件,以防止它们变得过大。
#!/bin/sh
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf
exit 0
这个脚本只是检查 logrotate
命令是否存在且可执行,如果是,则使用配置文件 /etc/logrotate.conf
运行 logrotate
。
了解 /etc/cron.daily/
及类似目录中的脚本,能让你深入了解使系统平稳运行的自动化维护任务。
你现在已经探索了用户 cron 任务、/etc/cron.d/
中的系统范围 cron 任务以及 /etc/cron.daily/
中的每日 cron 脚本。这些知识是管理 Linux 系统上定时任务的基础。
点击 继续 完成实验。
在这个实验中,你学习了如何通过检查 cron 任务来查看 Linux 中已安排的备份任务。你首先使用 crontab -l
列出当前用户的 cron 任务,了解到该命令会显示特定用户的定时任务。
接下来,你通过检查 /etc/cron.d/
目录探索了系统范围的 cron 任务,该目录包含定义整个系统定时任务的文件,这些任务通常由软件包安装。最后,你验证了位于 /etc/cron.daily
目录中的每日 cron 任务,该目录通常包含计划每天运行一次的脚本。通过检查这些位置,你可以确定 Linux 系统上是否配置了备份计划。