检查 cron 是否在 Linux 上运行的 4 种方法

cron 是一款在 Linux 和类 Unix 操作系统中使用的任务调度工具。它预装在所有 Linux 发行版中,非常适合自动化重复性任务。

为了确保 cron 正常运作,必须定期检查该实用程序是否在您的系统中正确运行。您可以使用四种不同的方法来完成此操作:检查 cron 服务状态、检查 cron 日志、运行测试 cron 任务以及列出系统上正在运行的进程。

什么是 cron

cron 是一种后台作业处理程序,它可以自动执行和安排系统任务。配置和维护软件环境的用户利用 cron 来安排命令或 shell 脚本等作业(也称为 cron 作业)在固定的时间或间隔定期运行。

cron 可以自动化您可能需要经常执行的系统维护或管理任务。

在 Linux 上有多种可用的 cron 实现版本。您所拥有的版本取决于您的 Linux 发行版。”Vixie cron” 以其原始开发者 Paul Vixie 的名字命名,是一种常见的版本,也是 Debian 和 Ubuntu 上的默认版本。然而,Arch Linux 默认不包含任何 cron 版本,而是使用 systemd 计时器。

cronie 是 Vixie cron 的一个分支,可以作为标准的 Arch 软件包使用。要安装它,请使用 pacman:

sudo pacman -S cronie

然后启动并启用它:

sudo systemctl start cronie.service
sudo systemctl enable cronie.service

您可以通过查找其在线帮助页面来查看系统上安装的是哪个版本的 cron

man cron

如何检查 cron 是否在 Linux 上运行?

以下是一些检查 cron 是否正常工作的方法:

1. 检查 Linux 上的 cron 服务状态

检查 cron 是否正常工作的一种方法是通过运行基本的 Linux 命令来检查 cron 服务的状态。按 Ctrl + Alt + T 打开 Linux 终端,然后使用 systemctl 命令检查 cron 的状态:

sudo systemctl status cron

如果看到以下输出,则表示 cron 处于活动状态并且在您的系统上运行良好。

但是,如果 cron 处于非活动状态(如下所示)怎么办?

您可以像这样启动服务:

sudo systemctl start cron.service

启动 cron 服务后,启用它,以便它在每次系统重新启动时启动:

sudo systemctl enable cron.service

2. 检查 Linux 上的 cron 日志

检查 cron 是否正常工作的另一种方法是检查日志文件。Linux 上的 cron 日志存储在 /var/log/syslog 目录中。

syslog 是 Linux 系统用来集中事件数据日志的协议。然后访问日志以执行审核、监控、故障排除、报告和其他必要的 IT 操作任务。

您可以通过执行以下命令在 syslog 文件中查看 cron 作业日志:

grep 'cron' /var/log/syslog

您将看到类似的输出,表明 cron 运行良好,并且其日志存储在日志文件中:

由于 syslog 文件夹包含其他系统日志以及 cron 日志,因此仅检查文件中与 cron 相关的日志可能会有点棘手。您可以通过创建一个单独的日志文件来解决此问题,该日志文件仅存储 syslog 文件中出现的 cron 条目。

在此示例中,我们将使用 nano 编辑器,但您可以使用您觉得合适的任何编辑器。

使用 nano 打开以下文件:

nano /etc/rsyslog.d/50-default.conf

找到以以下内容开头的行:

#cron.*

通过删除井号 (#) 取消注释此行。然后,按 Ctrl + X 保存并退出文件,然后按 Y 并按 Enter 键。

通过发出以下命令重新启动 rsyslog 服务:

sudo service rsyslog restart

您现在将在位于 /var/log 目录中的 cron.log 文件中收到日志。

如果您的终端无法获取任何日志,则可能意味着 cron 未运行。在这种情况下,请使用其他方法确认 cron 是否正常工作。

3. 在 Linux 上运行 cron 作业

您还可以通过简单地创建一个测试 cron 作业并执行它来检查 cron 是否正常工作。如果作业成功执行任务,则意味着它运行良好。

您首先需要创建一个 Bash 脚本。Bash 脚本允许您在 Linux 上自动执行日常任务。

让我们创建一个 Bash 脚本来打印“我的 cron 任务正在工作!”到 TXT 文件中。要创建该文件,首先,使用以下命令找出当前的工作目录:

pwd

使用 touch 命令在当前目录中创建文件:

touch file.txt

之后,使用 nano 创建一个 Bash 文件:

nano script.sh

将以下内容添加到文件中:

#! /usr/bin/bash
echo "my cronjob is working!" >> /home/username/file.txt

确保提供您创建的文本文件的正确位置。按 Ctrl + X,然后按 Y,然后按 Enter 键保存并退出文件。

授予 Bash 脚本执行权限:

chmod +x script.sh

现在创建一个 cron 作业来执行该脚本。为此,请使用以下命令打开 crontab 文件:

crontab -e

在文件末尾输入以下行。

* * * * * /path/to/script.sh

五个星号与执行时间匹配,其中第一个星号代表分钟(0-59),第二个星号代表小时(24小时制,所以下午1:00是13,午夜从0开始),第三个星号表示日期(0-7,0 和 7 是星期日),第四个星号表示月份,最后一个星号表示年份。

文件中还提到了可执行文件的名称及其路径。

保存并关闭文件后,您将在终端上看到“crontab:安装新的 crontab”消息。

要检查 cron 作业是否有效,请转到 file.txt 目录并使用 cat 在终端上打印其内容:

cat file.txt

这表明 cron 工作正常。

4. 检查 Linux 上正在运行的进程

检查 cron 守护进程是否正常工作的另一种方法是列出系统上正在运行的进程。您可以使用 ps 命令来实现此目的。cron 守护进程将在输出中显示为 crond

ps aux | grep cron

这确认 cron 进程正在您的 Linux 系统上运行。

使用 cron 自动执行和安排系统任务

cron 是 Linux 上最重要的实用程序之一,它使系统能够高效运行。有时,在排除系统问题时必须检查 cron 是否正常工作。

您可以通过检查 cron 日志或查看系统上正在运行的进程来实现此目的。您还可以使用 systemctl 实用程序检查 cron 状态。除此之外,运行测试 cron 作业还可以告诉您服务是否正在运行。

cron 的顺利工作使您可以自动化和安排日常系统作业。大多数 cron 作业都是由已安装的应用程序自动创建的。自动化和调度任务可以提高整体系统性能并保持其健康运行。