📜  linux 检查 cronjob 日志 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:02:44.677000             🧑  作者: Mango

Linux 检查 Cronjob 日志 - Shell/Bash

在 Linux 系统的 Cronjob 中,经常需要检查作业(job)的日志来确定它们是否成功运行。本文将介绍如何检查 Cronjob 日志以及一些有用的技巧和策略。

完整路径

当你在脚本中使用相对路径运行命令时,可能会引起一些问题。比如:

0 * * * * /path/to/script.sh >/dev/null 2>&1

上述 Cronjob 将每小时执行 script.sh,并将所有输出重定向到 /dev/null 中。问题在于,这里使用的是相对路径,并且 Cronjob 是在某个不同的环境中运行的。因此,你应该使用完整的绝对路径,以便 Cronjob 正确地找到脚本:

0 * * * * /home/user/scripts/script.sh >/dev/null 2>&1
打印输出

在 Cronjob 日志中打印输出可以很有用。如果 Cronjob 失败,这可以帮助你确定出错的原因。使用以下命令来在脚本中打印输出:

#!/bin/bash
echo "Starting Cronjob..."
# Your script code here
echo "Cronjob completed."
查看日志

要查看 Cronjob 日志,你可以使用以下命令:

grep CRON /var/log/syslog

该命令会搜索 /var/log/syslog 中的所有 Cronjob 日志,并显示它们的输出。你也可以将日志选项添加到 Cronjob 中,以便将输出写入文件中:

0 * * * * /home/user/scripts/script.sh >> /home/user/logs/script.log 2>&1

这将将脚本中的所有输出写入 /home/user/logs/script.log 中,包括错误信息。你可以使用以下命令查看日志:

tail -f /home/user/logs/script.log

该命令会显示日志文件中的最后 10 行,并实时更新。你也可以使用其他命令,如 grepless 等来查看日志。

定期删除旧日志

如果你想要定期清理 Cronjob 中生成的日志文件,可以使用以下命令:

0 0 * * * find /home/user/logs -type f -name '*.log' -mtime +7 -delete

该 Cronjob 会每天午夜执行,查找所有位于 /home/user/logs 目录中且修改时间超过 7 天的 .log 文件,并将其删除。

确认 Cronjob 是否已执行

如果你想要检查 Cronjob 是否已成功运行,可以使用以下命令:

grep "Starting Cronjob" /home/user/logs/script.log

该命令会搜索 script.log 文件中的所有“Starting Cronjob”行,并将其输出。如果输出为空,则 Cronjob 未成功运行。

结论

本文介绍了一些有用的技巧和策略,可以让你更有效地管理 Cronjob 日志。了解这些技能可以帮助你避免一些潜在的错误和问题,并更好地理解和控制 Cronjob 的行为。