简答
systemd有一个本机(基于套接字)的healthcheck方法,但它不是基于HTTP的.但是,您可以编写一个通过HTTP轮询状态并将其转发到本机机制的填充程序.
答案很长
systemd世界中的正确方法是使用sd_notify套接字机制在应用程序完全可用时通知init系统.对您的服务使用Type = notify以启用此功能.
您可以使用sd_notify()调用直接写入此套接字,或者您可以检查NOTIFY_SOCKET环境变量以获取名称,并在应用程序返回200秒时让您自己的代码将READY = 1写入该套接字.
如果要将其关闭到一个单独的进程,该进程通过HTTP轮询您的进程然后写入套接字,您可以这样做 – 确保NotifyAccess设置正确(默认情况下,只允许服务的主进程写入套接字).
因为您有兴趣检测应用程序在完全初始化后失败并触发重启的情况,所以sd_notify套接字在这种情况下也是合适的:
发送WATCHDOG_USEC = …设置成功测试之间允许的时间量,然后每当您成功进行自检时,WATCHDOG = 1;只要在配置的时间段内没有看到成功的测试,您的服务就会重新启动.