如何在 Linux 中檢查 Crontab 日志
?作為 Linux 用戶,你可能已經(jīng)熟悉 crontab?,其可以通過預(yù)定義的計劃運行命令和腳本來自動化任務(wù)。實際的應(yīng)用場景比如可以自動備份。
我們今天不是要討論 crontab 的用法,而是展示檢查 crontab 日志的不同方法。查看日志也有助于檢查 crontab 任務(wù)是否按計劃運行。
方法1:檢查 syslog 中的 crontab 日志
我們在 Linux系統(tǒng)目錄結(jié)構(gòu)? 中介紹過,目錄 /var/log 主要用來存儲由系統(tǒng)、服務(wù)以及應(yīng)用程序產(chǎn)生的日志。?
雖然 cron 日志也在這個目錄中,但一般情況下這些日志沒有標準文件,不同的 Linux 發(fā)行版將它們保存在不同的文件中。
在基于 Debian 的系統(tǒng)中,cron 的日志存放在文件 /var/log/syslog 中。要查看 cron 相關(guān)的日志,可以結(jié)合使用 grep 命令來過濾掉其他日志信息,如下命令:
在紅帽系統(tǒng)中,cron 有一個專門的日志文件:/var/log/cron。
另外,檢查 syslog 文件,需要有管理員權(quán)限。
方法2:使用自定義日志文件(推薦)
建議使用單獨的自定義文件來記錄 cron 作業(yè)。
為此,你可以將 “rsyslog” 配置為轉(zhuǎn)發(fā)cron日志。Rsyslog是一個Linux服務(wù),具有類似于Syslog日志記錄的功能。
首先需要創(chuàng)建一個 cron.log 文件,將其放在 /var/log 目錄下:
然后編輯 /etc/rsyslog.d/50-default.con 文件:
找到以 #cron.* 開頭的行,將其前面的井號 # 刪除。
保存并關(guān)閉該文件,然后重啟 rsyslog 服務(wù)并檢查其狀態(tài):
正常情況下,服務(wù)的狀態(tài)應(yīng)為突顯的 active (running):
現(xiàn)在,當需要查看 crontab 日志的時候,只需要查看自定義的日志文件即可:
方法3:使用 Cronitor 等專用服務(wù)監(jiān)控 cron 作業(yè)
Cronitor 是一個可以用來監(jiān)視 cron 作業(yè)的服務(wù)。
許多 cron 版本會在計劃任務(wù)開始執(zhí)行的時候,或者出現(xiàn)問題的時候記錄日志,但是其作業(yè)的輸出以及退出不會記錄在日志中。
Cronitor 是一個幾乎完美的解決方案,可以滿足所有 crontab 的需求。它捕獲所有作業(yè)的日志、指標和狀態(tài),并在任務(wù)崩潰或無法啟動時即時警報。
關(guān)于其使用方法,大家可以在其官網(wǎng)查看。
?對于安裝在 Kubernetes 上的 Cronitor 或 CronitorCLI,單次執(zhí)行可以捕獲高達100MB的日志。大家可以在如下地址中查看 Linux 中安裝 CronitorCLI 的詳細步驟:
https://cronitor.io/docs/using-cronitor-cli%23installation
其他監(jiān)控工具和服務(wù)(如Better Uptime)也提供了自動監(jiān)控cron作業(yè)的功能。
系統(tǒng)日志文件對于故障排除和診斷系統(tǒng)相關(guān)問題非常重要,cron 日志也一樣。