Ubuntu 8.04サーバーをUbuntu 16.04に置き換えます。サーバーは、必要な単一の(非OS)サービスを実行します。 (私はそのサービスの開発者であり、今週休日のsysadminではありません)サービススクリプトは次のようになります。
#!/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
スクリプトの "status)"部分のコードの代わりに、いくつかの "標準" systemd出力を返します。代わりにこれを行うと同じ結果:
Sudo /etc/init.d/my_service status
Systemdが私が知りたい、または見たいと思っていることには興味がありません。自分のコードではなく、自分のコードを実行したいだけです。
"status"の出力はWeb管理コンソールによって解析されます。特定のサーバーにインストールされているLinuxのバージョンを考慮するために、そのアプリケーションを変更する必要はありません。同じサービスの「ステータス」は、特定のOSバージョンに関係なく、同じ形式(IMO)を使用して出力する必要があります。
Systemdにステータスコマンドを無視するのではなく、「尊重」するように指示するにはどうすればよいですか?
「systemdステータス」を検索しても、systemdはかなり複雑に見えるという事実を超えて、どこにも行きませんでした。
systemd
は、カスタムstatus
コマンドをサポートしていません。あなたにはいくつかの選択肢があります:
systemd
を介して直接呼び出すことができます。systemd
は、systemctl show your-service-name
を介してマシンが解析可能なステータス出力を提供します。 man systemctl
にあるように、systemctl set-property
を使用して、ステータスで報告できるカスタムプロパティを設定することもできます。代わりに、この出力を解析するようにWeb管理コンソールに教えることができます。