透過 syslog 記錄 atd 訊息

透過 syslog 記錄 atd 訊息

我正在運行 CentOS 5.3,並且想要記錄來自“at”守護程序的所有訊息。我的 syslog.conf 包含以下條目:

cron.* /var/log/cron

我假設 syslog 中的 cron 行指的是「cron、anacron、at 和 batch」的整個系列。然而,雖然 cron 和 anacron 操作似乎會被記錄,但「at」操作不會被記錄。如何記錄 atd 操作?

感謝您的關注

(已新增)我想新增 syslog.conf 的內容,以防出現錯誤:

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                         /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none        /var/log/messages

# The authpriv file has restricted access.
authpriv.*                      /var/log/secure

# Log all the mail messages in one place.
mail.*                          -/var/log/maillog


# Log cron stuff
cron.*                          /var/log/cron

# Everybody gets emergency messages
*.emerg                         *

# Save news errors of level crit and higher in a special file.
uucp,news.crit                      /var/log/spooler

# Save boot messages also to boot.log
local7.*                        /var/log/boot.log

答案1

從查看“at”程式的原始碼(來自 CentOS 5.3 原始碼儲存庫) ,看起來它確實記錄到 syslog,但只記錄有關 at 守護程序本身的致命錯誤(例如,如果您嘗試同時運行 2 個 at 守護程序)。

但是,進程執行、產生的回傳代碼和標準錯誤/輸出根本不會記錄到系統日誌中。即使打開偵錯(需要重新編譯),日誌訊息也不是很有資訊(對於最終用戶),並且寫入如下內容:

atd[24116]: pid 24121 exited with status 0.

這對您識別要執行哪個命令、由哪個使用者執行或其標準輸出/錯誤是什麼沒有太大幫助。

抗憂鬱藥向請求該命令的使用者發送電子郵件通知,以防命令失敗或在標準輸出/錯誤中產生任何內容。但對於成功但沒有任何輸出的命令,不會發送任何郵件。您可以使用 -m 標誌來更改它。

在(1):

-m 當作業完成時,即使沒有輸出,也要傳送郵件給使用者。

答案2

對於這樣的情況,我將使用記錄到系統日誌的命令的包裝器。例如:

#!/bin/bash
logger -i -t mycmd Starting
/bin/somecommand
logger -i -t mycmd Completed
exit 0

然後從 cron、at 等我將調用包裝腳本。

我知道這更多的是一種解決方法而不是解決方案,但它可以完成工作。

答案3

/var/log/secure(RHEL)

atd 透過 PAM 進行記錄,請檢查您的 syslog.conf 以找出 pam 記錄到的位置。

答案4

根據atd(8),它已經記錄到系統日誌,您只需要確保沒有任何不良的系統日誌規則。

也許先在這裡發布你的syslog.conf文件。

另請注意,atd就指定特定日誌設施而言,這是不可配置的,但這應該不是問題,您只需確保系統日誌配置正確即可。

相關內容