我正在运行CentOS 5.3,并希望logging来自“at”守护进程的所有消息。 我的syslog.conf包含以下条目:
cron.* /var/log/cron
我假定系统日志中的cron行指向“cron,anacron,at和batch”的整个系列。 然而,虽然cron和anacron动作似乎被圈套起来,但“at”动作并没有被logging下来。 如何loginatd操作?
感谢您的关注
(已添加)我想添加我的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
从查看“at”程序( 来自CentOS 5.3源代码库 )的源代码看来,它确实正在logging到系统日志,但是只有关于守护进程本身的致命错误才被logging(例如,如果尝试运行2在同时守护进程)。
但是,stream程执行,返回码和标准错误/输出不会logging到系统日志中。 即使打开debugging(需要重新编译),日志消息也不是很有用(对于最终用户),并写下如下内容:
atd[24116]: pid 24121 exited with status 0.
这对于识别哪个命令运行,哪个用户或其标准输出/错误是什么都无济于事。
atd 不会发送电子邮件通知给请求命令的用户,以防命令失败,或者产生任何标准输出/错误。 但对于没有任何输出成功的命令,不会发送邮件。 你可以使用-m标志来改变它。
从(1) :
-m即使没有输出,作业完成时也向用户发送邮件。
对于这样的情况,我将使用一个包装器来logging到syslog的命令。 例如:
#!/bin/bash logger -i -t mycmd Starting /bin/somecommand logger -i -t mycmd Completed exit 0
然后从cron,at,等我将调用包装脚本。
我知道这是一个解决scheme,而不是解决scheme,但它完成了工作。
在/ var /日志/安全(RHEL)
通过PAM的atd日志,检查你的syslog.conf找出pamlogging到哪里。
根据atd(8) ,它已经logging到系统日志,你只需要确保你没有任何错误的系统日志规则。
也许先把你的syslog.conf文件放在这里。
还要注意atd是不能configuration的,只要指定一个特定的日志工具,但这不应该是一个问题,你只需要确保你的系统日志configuration是正确的。