系统:ubuntu 16.04.1(用于启动服务systemd
)。
我们有:一个依赖于mongodb
. 应用程序和mongodb在ubuntu启动时自动启动。.service
依赖写在应用程序文件中:
After=network.target mongod.service
同时,可能是由于mongodb
启动后尚未准备好接受连接,应用程序崩溃并出现“无法连接到数据库”错误。
延迟到 mongodb 完全启动的最佳方法是什么,或者以其他方式确定mongodb
使用功能的准备情况systemd
?
在这种情况下,使用 ExecStartPost 和 netcat:
其中host port是mongodb的地址和端口。
systemd 将在启动相关服务之前等待所有命令完成。
如果开始时间可以“浮动”将有助于:
until 会调用 sleep 直到 netcat 返回 -1。
ExecStartPre 和 ExecStartPost 是 unita 启动生命周期的一部分
如果在单元之间指定了Before 或 After依赖关系,systemd 会延迟依赖服务的启动,直到另一个服务启动: