1

如何在 Linux 中检查 Crontab 日志

 1 year ago
source link: https://www.51cto.com/article/721556.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

如何在 Linux 中检查 Crontab 日志

作者:刘光录 2022-10-28 16:42:04

作为 Linux 用户,你可能已经熟悉 crontab,其可以通过预定义的计划运行命令和脚本来自动化任务。实际的应用场景比如可以自动备份。

​作为 Linux 用户,你可能已经熟悉 crontab​,其可以通过预定义的计划运行命令和脚本来自动化任务。实际的应用场景比如可以自动备份。

我们今天不是要讨论 crontab 的用法,而是展示检查 crontab 日志的不同方法。查看日志也有助于检查 crontab 任务是否按计划运行。

方法1:检查 syslog 中的 crontab 日志

我们在 Linux系统目录结构​ 中介绍过,目录 /var/log 主要用来存储由系统、服务以及应用程序产生的日志。​

虽然 cron 日志也在这个目录中,但一般情况下这些日志没有标准文件,不同的 Linux 发行版将它们保存在不同的文件中。

在基于 Debian 的系统中,cron 的日志存放在文件 /var/log/syslog 中。要查看 cron 相关的日志,可以结合使用 grep 命令来过滤掉其他日志信息,如下命令:

cat /var/log/syslog | grep -w 'cron’
93445b0386ed62b5e0d525775408b9a4f532d5.png

在红帽系统中,cron 有一个专门的日志文件:/var/log/cron。

另外,检查 syslog 文件,需要有管理员权限。

方法2:使用自定义日志文件(推荐)

建议使用单独的自定义文件来记录 cron 作业。

为此,你可以将 “rsyslog” 配置为转发cron日志。Rsyslog是一个Linux服务,具有类似于Syslog日志记录的功能。

首先需要创建一个 cron.log 文件,将其放在 /var/log 目录下:

touch /var/log/cron.log

然后编辑 /etc/rsyslog.d/50-default.con 文件:

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

找到以 #cron.* 开头的行,将其前面的井号 # 删除。

d3359b0530710892d0b147387af31c5da0acc3.png

保存并关闭该文件,然后重启 rsyslog 服务并检查其状态:

sudo systemctl restart rsyslog
sudo systemctl status rsyslog

正常情况下,服务的状态应为突显的 active (running):

图片

现在,当需要查看 crontab 日志的时候,只需要查看自定义的日志文件即可:

less /var/log/cron.log

方法3:使用 Cronitor 等专用服务监控 cron 作业

Cronitor 是一个可以用来监视 cron 作业的服务。

许多 cron 版本会在计划任务开始执行的时候,或者出现问题的时候记录日志,但是其作业的输出以及退出不会记录在日志中。

Cronitor 是一个几乎完美的解决方案,可以满足所有 crontab 的需求。它捕获所有作业的日志、指标和状态,并在任务崩溃或无法启动时即时警报。

关于其使用方法,大家可以在其官网查看。

​对于安装在 Kubernetes 上的 Cronitor 或 CronitorCLI,单次执行可以捕获高达100MB的日志。大家可以在如下地址中查看 Linux 中安装 CronitorCLI 的详细步骤:

https://cronitor.io/docs/using-cronitor-cli%23installation

其他监控工具和服务(如Better Uptime)也提供了自动监控cron作业的功能。

系统日志文件对于故障排除和诊断系统相关问题非常重要,cron 日志也一样。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK