如何检查 Linux 中是否设置了备份计划

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何通过检查配置 cron 任务的各个位置,来查看 Linux 系统上的定时备份任务。你将首先使用 crontab -l 列出当前用户的 cron 任务,查看是否设置了个人定时任务。

接下来,你将通过检查 /etc/cron.d 目录来查看系统范围的 cron 任务,该目录通常包含软件包安装的定时任务。最后,你将验证 /etc/cron.daily 目录的内容,查看是否配置了任何每日脚本(包括潜在的备份程序)以自动运行。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/SystemInformationandMonitoringGroup -.-> linux/crontab("Job Scheduling") subgraph Lab Skills linux/ls -.-> lab-558699{{"如何检查 Linux 中是否设置了备份计划"}} linux/cat -.-> lab-558699{{"如何检查 Linux 中是否设置了备份计划"}} linux/crontab -.-> lab-558699{{"如何检查 Linux 中是否设置了备份计划"}} end

使用 crontab -l 列出用户的 cron 任务

在这一步中,你将学习如何使用 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 任务。

点击 继续 以继续操作。

检查 /etc/cron.d 中的系统 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.daily 中的每日 cron 任务

除了 /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/ 目录的内容。这个目录包含计划每天运行的脚本。

使用带有 sudols 命令列出该目录中的文件:

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 系统上是否配置了备份计划。