Как перенаправить вывод журнала из пользовательской службы systemctl --в файл?

на самом деле такого механизма в rpmbuild нет. Однако, поскольку rpmbuildавтоматически определяет ваши зависимости; и если вы правильно используете версию библиотеки (с использованием SONAME ); затем rpmbuildавтоматически определит, зависите ли вы от libfoo.so.1 или от libfoo.so.2. Так что он не определит точную минорную версию, но должен помочь вам на уровне API (критических изменений ).

0
06.10.2021, 20:21
1 ответ

Если вы хотите перенаправить только то, что ваше приложение записывает в stdout/stderr, вы можете использовать параметры выполненияStandardOutputи StandardError, чтобы добавить эти выходные данные в файл, например.%h/userunit.log(где %hбудет расширяться до домашнего каталога пользователя ).

Однако при этом будут пропущены сообщения, записанные непосредственно в журнал с помощью вызова syslog.

[Unit]
Description=My user unit

[Service]
Type=oneshot
ExecStart=/usr/bin/echo Hello World
StandardOutput=append:%h/userunit.log
StandardError=append:%h/userunit.log

Конечно, того же можно добиться, запустив программу в оболочке и используя канал.

[Unit]
Description=My user unit

[Service]
Type=oneshot
ExecStart=/bin/bash -c '/usr/bin/echo Hello World |& tee -a %h/userunit.log'

Обратите внимание, что |&является «башизмом»:https://www.gnu.org/software/bash/manual/html_node/Pipelines.html

0
07.10.2021, 12:30

Теги

Похожие вопросы