
我正在運行 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
就指定特定日誌設施而言,這是不可配置的,但這應該不是問題,您只需確保系統日誌配置正確即可。