我们正在用Ubuntu 16.04取代Ubuntu 8.04服务器。 服务器运行我们需要的单个(非OS)服务。 (我是该服务的开发人员,而不是系统pipe理员,这周休假)服务脚本看起来像这样:
#!/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的path后…我得到的服务工作。 但是打电话:
sudo service my_service status
返回一些“标准”系统输出,而不是脚本的“状态”部分的代码。 相同的结果,如果我这样做:
sudo /etc/init.d/my_service status
我对什么systemd认为我想知道/看到不感兴趣; 我只是想要它执行我的代码,而不是它自己的。
“状态”的输出由一些networkingpipe理控制台parsing,我不想更改该应用程序来考虑在特定服务器上安装哪个版本的Linux。 相同服务的“状态”应该使用相同的格式(IMO)输出,与特定的操作系统版本无关。
我如何告诉systemd“尊重”我的状态命令,而不是忽略它?
search“系统状态”并没有让我感到任何地方,除了我了解到systemd似乎相当复杂。
systemd不支持自定义status命令。 你有几个select:
systemd调用它。 systemd通过systemctl show your-service-name提供机器可分析的状态输出。 正如在man systemctl看到的那样,你也可以使用systemctl set-property来设置可以在状态中报告的自定义属性。 你可以教你的networkingpipe理控制台来parsing这个输出。