在我的服务配置中,TimeoutStartSec == 100s。 根据手册页..我的应用程序需要在<100s内通知systemD sd_notify(READY = 1)。如果没有,服务将进入失败状态。 https://www.freedesktop.org/software/systemd/man/systemd.service.html 但是,如果我想做点什么(例如,只打印出一些日志说:启动没有及时完成)。在我的服务实际设置为失败状态之前。 是否有任何更改可做... 我的想法是创建一个与TimeoutStartSec == xx s具有相同值的计时器 那么我可以设法在计时器过期之前做点什么。 但是问题是TimeoutStartSec == xx由用户动态配置-在我的项目中。 所以我希望有一些Dbus接口可以从我的应用程序读取TimeoutStartSec ... 我检查了 https://www.freedesktop.org/wiki/Software/systemd/dbus/ 但没有找到相应的属性。
我正在Linux上使用systemD,它可以自由使用systemD Dbus接口。
答案 0 :(得分:0)
我找到了解决方法。 SystemD实际上提供了该信息
dbus-send --system --dest=org.freedesktop.systemd1 --print-reply /org/freedesktop/systemd1/unit/ServiceName_2eservice \
org.freedesktop.DBus.Properties.Get string:org.freedesktop.systemd1.Service string:TimeoutStartUSec
注意:您的服务名称需要修改,以准确获取对象路径ServiceName.service以适应ServiceName_2eservice