Назад | Перейти на главную страницу

Регистрация сообщений atd через системный журнал

Я использую 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 не настраивается в том, что касается обозначения конкретного объекта журнала, но это не должно быть проблемой, вам просто нужно убедиться, что вы правильно настроили системный журнал.