Я использовал SysV для моего сервиса.

Я имел:

service myservice restart

Сейчас переход на systemd, и мне это нравится больше. Единственным недостатком является то, что:

systemctl restart myservice

не показывает стандартный вывод моего сервиса, который указывает на прогресс.

Я знаю, что могу использовать:

journalctl -u myservice -f -b

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

Есть идеи по улучшению этого?

ОБНОВИТЬ

Моя цель - получить старое поведение SysV: при запуске службы показывать вывод консоли до завершения запуска службы. Таким образом, можно узнать, есть ли какие-либо проблемы с запуском или узнать о прогрессе. Это может иногда быть медленным для запуска.

1 ответ1

0

Это зависит от того, что вы хотите. Если вы просто хотите проверить active (running) статус, тогда systemctl status myservice достаточно. active (running) статус обычно означает, что сервис служит своей цели.

Если вам требуется более простой тест для обслуживания, вы можете использовать:

# systemctl is-active myservice
active
# echo $?
0

Неисправное состояние может быть:# systemctl is-active myservice неактивно # echo $? 3

Таким образом, вы можете использовать его в тесте.


Однако, если вам действительно требуется journalctl -f и вы хотите остановить его через некоторое время, вы можете использовать команду timeout . Смотрите пример:

timeout 20s journalctl -f

В этом примере процесс journalctl будет убит через 20 секунд. Если вы перенаправите вывод, вы можете проанализировать его тогда.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .