Вопрос или проблема
Я целенаправленно монтирую копию каталога с возможностью записи поверх его версии только для чтения.
Это генерирует сообщение в журнале, например:
27 авг 14:31:02 svelte systemd[1]: mnt-btrfs\x2dvol-rootfs.mount: Каталог /mnt/btrfs-vol/rootfs, на который монтируется, не пуст, монтирование будет продолжено.
Есть ли способ подавить это сообщение, чтобы уменьшить шум в журнале?
Ваше монтирование всегда может перенаправить stdout или stderr на /dev/null
, как вам такое?
Существует флаг -q
для mount.btrfs
, но он:
Выводит только сообщения об ошибках или предупреждениях. Опции –features или –help не затрагиваются.
Согласно руководству, я бы ожидал, что оно все равно будет выдавать предупреждение.
Я не точно знаю, какой уровень журналирования соответствует этому сообщению, однако вы можете изменить MaxLevelConsole=
или MaxLevelStore=
в journald.conf
, чтобы потенциально подавить эти сообщения (конечно, это также подавит другие сообщения того же уровня, что может быть обоюдоострым мечом, если вы сделаете это для чего угодно, кроме MaxLevelConsole
).
Дополнительная информация:
https://www.freedesktop.org/software/systemd/man/journald.conf.html
Ответ или решение
С suppression системы systemd: Как устранить сообщения о монтировании не пустого каталога
Когда вы работаете с системой монтирования, иногда возникают предупреждения в журналах. Одним из таких случаев является предупреждение, которое появляется при попытке смонтировать каталог, не будучи уверенным в том, что он пуст:
Aug 27 14:31:02 svelte systemd[1]: mnt-btrfs\x2dvol-rootfs.mount: Directory /mnt/btrfs-vol/rootfs to mount over is not empty, mounting anyway.
Этот текст говорит о том, что каталог, который вы хотите смонтировать, не пуст, и, несмотря на это, он все равно будет смонтирован. Ниже предложены несколько методов для подавления этого сообщения и снижения шума в журналах.
1. Использование параметра монтирования
Хотя вы упомянули, что флаг -q
для mount.btrfs
может не подавлять это предупреждение, важно отметить, что данный флаг ограничивает вывод только ошибками или предупреждениями. Однако для вашего конкретного случая этот метод не является оптимальным, поскольку предупреждение всё равно будет отображаться, если оно не считается критическим.
2. Настройки конфигурации journald
Вы можете изменить уровень логирования в конфигурации journald
, чтобы контролировать, какие сообщения будут записываться в журнал. Для этого вам необходимо отредактировать файл /etc/systemd/journald.conf
и изменить параметры MaxLevelConsole=
или MaxLevelStore=
на более высокий уровень. Например:
[Journal]
MaxLevelConsole=warning
MaxLevelStore=warning
Это подавит не только предупреждения о монтировании, но и другие сообщения указанного уровня. Таким образом, будьте осторожны, чтобы не пропустить более важные уведомления.
3. Перенаправление вывода
Хотя это и не самый идеальный вариант, вы можете перенаправить стандартный вывод и стандартный поток ошибок на /dev/null
. Этот метод потребует изменить команду монтирования в вашем скрипте или службе, добавив:
mount ... &> /dev/null
Однако, следует помнить, что данный подход может скрыть важные ошибки, что является риском.
4. Использование кастомных скриптов
Если вы хотите более избирательно подходить к подавлению сообщений, вы можете создать собственный скрипт для монтирования, который будет выполнять команду монтирования и в случае успеха, будет подавлять нежелательные сообщения, а в случае ошибки — выводить их в журнал.
Заключение
Подавление журналов в systemd
возможно, но требует осторожного подхода, чтобы избежать скрытия критически важных сообщений. Каждый из предложенных методов имеет свои плюсы и минусы. Рекомендуется тестировать каждое решение в безопасной среде, прежде чем внедрять изменения в продуктивную систему.