Мы заменяем сервер Ubuntu 8.04 на Ubuntu 16.04. На сервере работает единственная (не относящаяся к ОС) служба, которая нам нужна. (Я разработчик этой службы, а не системный администратор, который на этой неделе в отпуске). Сценарий службы выглядит примерно так:
#!/bin/sh
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
# ...
case "$1" in
start)
umask 002
#...
exit $?
;;
stop)
# ...
exit $?
;;
restart)
stop || exit $?
start
exit $?
;;
status)
# ...
exit $?
;;
*)
echo "Usage my_service (start|stop|restart|status)"
exit 1;;
esac
После обновления пути на Java ... у меня сервис заработал. Но звоню:
sudo service my_service status
возвращает некоторый "стандартный" вывод systemd вместо кода в части сценария "status)". Тот же результат, если я сделаю это вместо этого:
sudo /etc/init.d/my_service status
Меня не интересует, что думает systemd, я хочу знать / видеть; Я просто хочу, чтобы он выполнял мой код вместо своего собственного.
Вывод «status» анализируется какой-то консолью веб-управления, и я не хочу, чтобы мне приходилось изменять это приложение, чтобы учесть, какая версия Linux установлена на конкретном сервере. «статус» для той же службы должен выводиться в том же формате (IMO), независимо от конкретной версии ОС.
Как мне сказать systemd "уважать" мою команду status вместо того, чтобы игнорировать ее?
Поиск «systemd status» ни к чему не привел, кроме того факта, что я узнал, что systemd кажется довольно сложным.
systemd
не поддерживает заказ status
команды. У вас есть пара альтернатив:
systemd
.systemd
обеспечивает машинный анализ вывода состояния через systemctl show your-service-name
. Как видно на man systemctl
, вы также можете использовать systemctl set-property
для установки настраиваемых свойств, о которых можно сообщить в статусе. Вместо этого вы можете научить свою консоль веб-управления анализировать этот вывод.