web-dev-qa-db-ja.com

systemdで「ステータス」コマンドを呼び出す方法は?

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はかなり複雑に見えるという事実を超えて、どこにも行きませんでした。

7
monster

systemdは、カスタムstatusコマンドをサポートしていません。あなたにはいくつかの選択肢があります:

  1. カスタムステータスコマンドを保持し、代わりにsystemdを介して直接呼び出すことができます。
  2. systemdは、systemctl show your-service-nameを介してマシンが解析可能なステータス出力を提供します。 man systemctlにあるように、systemctl set-propertyを使用して、ステータスで報告できるカスタムプロパティを設定することもできます。代わりに、この出力を解析するようにWeb管理コンソールに教えることができます。
4
Mark Stosberg