介绍
在这个实验中,你将学习如何检查 Linux 系统上的定时任务(cron jobs)。你将首先使用 crontab -l 命令查看特定用户的定时任务。
接下来,你将通过检查 /etc/crontab 文件并查看 /etc/cron.* 目录中定义的调度,来探索系统范围的定时任务配置。通过这个实践经验,你将掌握识别和理解在 Linux 系统上如何自动调度任务运行的必要技能。
使用 crontab -l 查看用户定时任务
在这一步中,你将学习如何使用 crontab 命令查看当前用户的定时任务。
Cron 是类 Unix 操作系统中基于时间的任务调度器。它允许用户安排命令或脚本在指定的时间或日期自动运行。这些预定的任务通常被称为“定时任务(cron jobs)”。
系统上的每个用户都可以有自己的一组定时任务。这些任务存储在一个名为“crontab”(cron 表)的特殊文件中。
要查看当前用户(labex)的定时任务,你将使用带有 -l 选项的 crontab 命令。-l 代表“列出(list)”。
如果你还没有打开终端,请打开它。记住,你可以在桌面左侧找到 Xfce 终端 图标。
在终端中输入以下命令并按回车键:
crontab -l
如果你还没有为 labex 用户设置任何定时任务,你可能会看到一条消息,表明没有 crontab 条目。对于全新的用户环境,这是正常的。
no crontab for labex
此输出确认 labex 用户目前没有安排个人定时任务。
如果 labex 用户有任何预定任务,它们将在此处列出,显示调度时间和要执行的命令。
了解如何查看现有的定时任务是管理 Linux 系统上预定任务的第一步。在接下来的步骤中,你将探索系统范围的 cron 配置。
点击 继续 进入下一步。
检查 /etc/crontab 中的系统定时任务表
在上一步中,你学习了如何查看特定用户的定时任务。现在,让我们来探索系统范围的定时任务,这些任务通常在 /etc/crontab 文件中进行配置。
与通过 crontab 命令管理的用户定时任务表不同,/etc/crontab 文件是一个系统范围的配置文件,系统管理员(或具有 sudo 权限的用户)可以直接对其进行编辑。该文件通常包含对系统运行至关重要的定时任务。
要查看 /etc/crontab 文件的内容,你可以使用像 cat 或 less 这样的命令行文本查看器。由于 /etc/crontab 是一个系统文件,你可能需要使用 sudo 来读取它,不过在这个 LabEx 环境中,你通常可以不使用 sudo 来读取它。让我们使用 cat 直接在终端中显示其内容。
输入以下命令并按回车键:
cat /etc/crontab
你将看到系统定时任务表文件的内容。它可能看起来像这样:
## /etc/crontab: system-wide crontab
## Unlike any other crontab you might learn about, this file has a fifth field
## which is the user that the command will run as.
#
## min hour day month wday user command
## ---- ---- --- ----- ---- ---- -------
#
## Example of job execution:
## .---------------- minute (0 - 59)
## | .------------- hour (0 - 23)
## | | .---------- day of month (1 - 31)
## | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
## | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
## | | | | | .- user to run job as
## | | | | | | . command to be executed
## | | | | | | |
## * * * * * user command
#
... (other entries)
注意这个文件的结构。它包含解释格式的注释,并且与用户定时任务表相比,代表每个定时任务的行多了一个字段:user 字段。这个字段指定命令应该以哪个用户的身份执行。
系统定时任务表通常用于诸如系统更新、日志轮转以及其他需要以提升的权限或特定系统用户身份运行的维护活动。
通过检查 /etc/crontab,你可以了解系统级别的自动化任务调度情况。
点击 继续 进入下一步,在那里你将探索系统定时任务的其他存储位置。
检查 /etc/cron.* 中的定时任务计划
除了主 /etc/crontab 文件外,许多 Linux 发行版还使用 /etc/cron.d/、/etc/cron.hourly/、/etc/cron.daily/、/etc/cron.weekly/ 和 /etc/cron.monthly/ 等目录来组织系统范围的定时任务。
这些目录提供了一种更结构化的方式来管理定时任务。放在 /etc/cron.hourly/ 中的脚本每小时执行一次,放在 /etc/cron.daily/ 中的脚本每天执行一次,依此类推。具体的执行时间通常由 /etc/crontab 中的一个脚本控制,该脚本会定期运行这些目录中的任务。
让我们检查这些目录的内容,看看系统安排了哪些任务。
首先,让我们列出 /etc/cron.d/ 目录的内容。这个目录通常包含已安装软件包放置的文件,这些文件定义了特定的定时任务。
输入以下命令并按回车键:
ls /etc/cron.d/
你可能会看到类似以下的输出,列出了目录中的文件:
anacron e2scrub_all phpsessionclean
这些文件包含定时任务定义,格式与 /etc/crontab 类似(包括用户字段)。你可以使用 cat 查看这些文件的内容。例如,要查看 anacron 文件:
cat /etc/cron.d/anacron
接下来,让我们看看每小时、每天、每周和每月执行任务的目录。我们可以使用 ls 列出这些目录的内容。
逐个输入以下命令,并在每个命令后按回车键:
ls /etc/cron.hourly/
ls /etc/cron.daily/
ls /etc/cron.weekly/
ls /etc/cron.monthly/
你可能会看到这些目录中列出了各种脚本或文件。例如,/etc/cron.daily/ 通常包含用于更新软件包列表、清理临时文件或轮转日志等任务的脚本。
ls /etc/cron.daily/
apt-compat dpkg google-chrome man-db mlocate passwd update-notifier-common
这些脚本会由 cron 系统按指定的时间间隔(每小时、每天、每周、每月)自动执行。
通过检查 /etc/crontab 文件和 /etc/cron.* 下的目录,你可以全面了解系统上运行的自动化任务。这对于系统管理和故障排除至关重要。
你现在已经探索了查看用户和系统范围定时任务的主要位置。
点击 继续 完成本次实验。
总结
在本次实验中,你学习了如何检查 Linux 中的定时任务。你首先使用 crontab -l 命令查看特定用户的定时任务,了解到每个用户都可以在其定时任务表文件中存储自己的一组定时任务。你还学会了如何解读输出内容,包括当前用户没有现有定时任务的提示信息。
接着,你开始探索系统范围的定时任务配置,特别关注了 /etc/crontab 文件。该文件用于系统级别的定时任务,由系统管理员直接管理,这与用户定时任务表不同。了解用户和系统范围的定时任务存储位置,对于全面检查 Linux 系统上的定时任务至关重要。



