如何让 systemd 调用我的“状态”命令?

如何让 systemd 调用我的“状态”命令?

我们正在用 Ubuntu 16.04 替换 Ubuntu 8.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 认为我想知道/看到的东西不感兴趣;我只希望它执行我的代码而不是它自己的代码。

“状态”的输出由某些 Web 管理控制台解析,我不想更改该应用程序以考虑在特定服务器上安装了哪个版本的 Linux。相同服务的“状态”应使用相同格式(IMO)输出,与特定的操作系统版本无关。

我如何告诉 systemd“尊重”我的状态命令,而不是忽略它?

搜索“systemd status”没有给我带来任何结果,只是我发现 systemd 看起来相当复杂。

答案1

systemd不支持自定义status命令。您有以下几种选择:

  1. 您可以保留自定义状态命令并通过 直接调用它systemd
  2. systemd通过 提供机器可解析的状态输出systemctl show your-service-name。如 所示man systemctl,您还可以使用systemctl set-property设置自定义属性,这些属性可在 中报告状态。您可以教您的 Web 管理控制台解析此输出。

相关内容