Я использую CentOS 5.3 и хочу регистрировать все сообщения от демона «at». Мой syslog.conf содержит следующую запись:
cron.* /var/log/cron
Я предположил, что строка 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
Взглянув на источник программы "at" (из исходного репозитория CentOS 5.3), похоже, что он действительно записывается в системный журнал, но регистрируются только фатальные ошибки, касающиеся самого демона at (например, если вы пытаетесь запустить 2 демона одновременно).
Однако выполнение процесса, результирующий код возврата и стандартная ошибка / вывод вообще не регистрируются в системном журнале. Даже при включении отладки (что требует перекомпиляции) сообщения журнала не очень информативны (для конечных пользователей) и пишут что-то вроде:
atd[24116]: pid 24121 exited with status 0.
Это не очень поможет вам в определении того, какая команда была запущена, каким пользователем или каким был стандартный вывод / ошибка.
atd делает отправить уведомление по электронной почте пользователю, который запросил команду, в случае, если команда не удалась или произвела что-либо в своем стандартном выводе / ошибке. Но для команд, которые завершаются успешно без какого-либо вывода, почта не отправляется. Вы можете изменить это, используя флаг -m.
Из в (1):
-m Отправить письмо пользователю после завершения задания, даже если не было вывода.
Для подобных случаев я использую оболочку для команды, которая записывается в системный журнал. Например:
#!/bin/bash
logger -i -t mycmd Starting
/bin/somecommand
logger -i -t mycmd Completed
exit 0
Затем из cron, at и т. Д. Я вызову сценарий оболочки.
Я знаю, что это скорее работа, чем решение, но она выполняет свою работу.
/ var / log / secure (RHEL)
atd регистрирует через PAM, проверьте свой syslog.conf, чтобы узнать, куда входит pam.
В соответствии с atd(8)
, он уже записывается в системный журнал, вам просто нужно убедиться, что у вас нет плохих правил системного журнала.
Может опубликуйте свой syslog.conf
файл здесь первым.
Также обратите внимание, что atd
не настраивается в том, что касается обозначения конкретного объекта журнала, но это не должно быть проблемой, вам просто нужно убедиться, что вы правильно настроили системный журнал.