Estamos substituindo um servidor Ubuntu 8.04 por um Ubuntu 16.04. O servidor executa um único serviço (não SO) que precisamos. (Eu sou o dev desse serviço, e não o sysadmin, que está de férias esta semana) O script de serviço é assim:
#!/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
Depois de atualizar o caminho para o Java, consegui que o serviço funcionasse. Mas chamando:
sudo service my_service status
retorna alguma parte "standard" do systemd, em vez do código na parte "status" do script. O mesmo resultado se eu fizer isso:
sudo /etc/init.d/my_service status
Eu não estou interessado no que o systemd pensa que eu quero saber / ver; Eu só quero que ele execute meu código em vez de seu próprio código.
A saída de "status" é analisada por algum console de gerenciamento da web, e eu não quero ter que alterar esse aplicativo para levar em conta qual versão do Linux está instalada em um servidor específico. "status" para o mesmo serviço deve sair usando o mesmo formato (IMO), independente da versão específica do SO.
Como eu digo ao systemd para "respeitar" meu comando status, em vez de ignorá-lo?
A pesquisa por "status do systemd" não me levou a nenhum lugar, além do fato de que aprendi que o systemd parece bastante complicado.