我有一个自定义服务,需要在 mysql 上线后启动。我尝试使用 systemd/systemctl 在启动时启动该服务。我已After=network.target mysqld.service
在自定义配置文件中设置。问题似乎是 systemctl 认为 mysql 已完成启动,因此继续启动我的自定义服务,但在查看日志后,自定义服务无法连接到数据库。检查 mysql 日志上的时间戳显示我的自定义服务在 mysql 准备启动之前启动。我查看了 systemctl 的文档,似乎没有任何“启动前等待超时”或“等待套接字监听连接”。如何确保 mysql 在我的自定义服务启动之前准备就绪?
答案1
systemd.service 文件中有一个选项,可以明确检查套接字是否存在。
在 systemd 文档中,Lennart Pöttering 详细描述了大多数服务不需要启动实际的守护进程,而只需要绑定套接字。
Systemd 可以创建这些套接字,并在第一次访问时启动 mysql!这是创建 systemd 的主要原因之一。