Не так давно я опубликовал этот вопрос и получил ответ, который отлично работает в Ubuntu 10.10 и Linux Mint 10. Что он сделал, так это отправил сообщения ядра в момент их появления в сценарии. В моем случае он был перенаправлен на скрипт, который отправлял сообщения ядра на OLED-экран моего ноутбука. Я сделал это, добавив следующие строки в мой файл /etc/rsyslog.conf:
$template OLEDformat,"%msg%0
kern.* ^/opt/asusg50oled/utils/notify.sh;OLEDformat
Позже я восстановил файл rsyslog.conf до нормального состояния и переместил вышеуказанные строки в новый файл в /etc/rsyslog.d/00-asusg50oled.conf, чтобы упростить его настройку при необходимости. Так как /etc/rsyslog.conf загружает все из /etc/rsyslog.d в любом случае, это работает так же хорошо.
Проблема, однако, в том, что это больше не работает в Ubuntu 11.04 и Linux Mint 11 RC. Независимо от того, помещаю ли я строки в /etc/rsyslog.conf или в файл в /etc/rsyslog.d/, я получаю только одно сообщение, перенаправленное прямо при запуске rsyslog. Проверка файлов, уже указанных в /etc/rsyslog.conf, показывает, что система регистрирует события ядра и dmesg
работает нормально.
Что-то изменилось в rsyslog между Ubuntu 10.10 и 11.04, и есть ли обходной путь?
редактировать
Вот вывод команды rsyslogd -v
в Linux Mint 11 RC и Ubuntu 11.04, где вышеуказанное решение не работает:
rsyslogd 4.6.4, compiled with:
FEATURE_REGEXP: Yes
FEATURE_LARGEFILE: No
FEATURE_NETZIP (message compression): Yes
GSSAPI Kerberos 6 support: Yes
FEATURE_DEBUG (debug build, slow code): No
Atomic operations supported: Yes
Runtime Instrumentation (slow code): No
Это вывод команды rsyslogd -v
в Linux Mint 10 и Ubuntu 10.10, где вышеуказанное решение отлично работает:
rsyslogd 4.2.0, compiled with:
FEATURE_REGEXP: Yes
FEATURE_LARGEFILE: Yes
FEATURE_NETZIP (message compression): Yes
GSSAPI Kerberos 5 support: Yes
FEATURE_DEBUG (debug build, slow code): No
Atomic operations supported: Yes
Runtime Instrumentation (slow code): No
Согласно www.rsyslog.com, последняя стабильная версия rsyslogd на самом деле 5.8.1, которая в настоящее время недоступна в качестве обновления для Ubuntu 11.04 или Linux Mint 11RC.
Редактировать 2
Я только что проверил, что openSUSE 11.4 правильно следует моим добавленным строкам для rsyslogd. В openSUSE 11.4 вывод команды rsyslogd -v
:
rsyslogd 5.6.5, compiled with:
FEATURE_REGEXP: Yes
FEATURE_LARGEFILE: No
FEATURE_NETZIP (message compression): Yes
GSSAPI Kerberos 5 support: Yes
FEATURE_DEBUG (debug build, slow code): No
Atomic operations supported: Yes
Runtime Instrumentation (slow code): No
К сожалению, я обнаружил, что я не без ума от openSUSE, и поэтому я вернусь к Linux Mint, где у меня все еще есть проблемы. Теперь мне интересно, может ли быть что-то другое в ядре (назовите это догадкой). Есть идеи?
Обновить
Я только что собрал из исходного кода и установил rsyslogd 5.8.1 (последняя стабильная версия). Я могу подтвердить, что он установлен правильно, потому что одно-единственное сообщение, которое пересылается, отражает новый номер версии. Кроме того, rsyslogd -v выводит:
rsyslogd 5.8.1, compiled with:
FEATURE_REGEXP: Yes
FEATURE_LARGEFILE: No
GSSAPI Kerberos 5 support: No
FEATURE_DEBUG (debug build, slow code): No
32bit Atomic operations supported: Yes
64bit Atomic operations supported: No
Runtime Instrumentation (slow code): No