systemctl After 似乎不起作用

systemctl After 似乎不起作用

我有一个自定义服务,需要在 mysql 上线后启动。我尝试使用 systemd/systemctl 在启动时启动该服务。我已After=network.target mysqld.service在自定义配置文件中设置。问题似乎是 systemctl 认为 mysql 已完成启动,因此继续启动我的自定义服务,但在查看日志后,自定义服务无法连接到数据库。检查 mysql 日志上的时间戳显示我的自定义服务在 mysql 准备启动之前启动。我查看了 systemctl 的文档,似乎没有任何“启动前等待超时”或“等待套接字监听连接”。如何确保 mysql 在我的自定义服务启动之前准备就绪?

答案1

systemd.service 文件中有一个选项,可以明确检查套接字是否存在。

在 systemd 文档中,Lennart Pöttering 详细描述了大多数服务不需要启动实际的守护进程,而只需要绑定套接字。

Systemd 可以创建这些套接字,并在第一次访问时启动 mysql!这是创建 systemd 的主要原因之一。

http://0pointer.de/blog/projects/socket-activation.html

相关内容