首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Systemd引导顺序:等待mysql.sock

Systemd引导顺序:等待mysql.sock
EN

Server Fault用户
提问于 2017-12-14 21:00:32
回答 2查看 1.5K关注 0票数 0

我有一个openvpn隧道,它运行一个--up脚本,它查询本地mysql数据库中的IP路由信息,然后应用这些路由。但是,由于openvpn和mysql systemd服务都配置了After=network.target指令,所以我有一个竞争条件: /var/run/mysqld/mysqld.sock可能在运行--up脚本时存在,也可能不存在。如果sock文件不存在,那么我的脚本就会死,系统也不会正确初始化。

我认为将我的openvpn.service指令更改为After=network.target mysql.service并运行systemctl daemon-reload就可以了。但是,我在我的ls -lh /var/run/mysqld/mysqld.sock脚本的开头添加了--up,它有时仍然会报告ls: cannot access '/var/run/mysqld/mysqld.sock': No such file or directory

我的猜测是,systemd不是使用sock文件来确定mysqld是否已经完成加载,而是使用一些在创建sock文件之前发生的条件。

是否有一种方法可以告诉systemd在创建sock文件之前不承认mysql.service已经启动?

EN

回答 2

Server Fault用户

发布于 2019-07-16 12:07:32

我也有同样的问题,在mysql启动后再开始一些其他服务。

首先我禁用了我的服务

代码语言:javascript
复制
systemctl disable rfid-server

之后,我修改了我的rfid-server.service文件

代码语言:javascript
复制
[Unit]
Description=rfid server
After=mysql.service

[Service]
ExecStart=/opt/rfid-server-service/deploy/start.sh

[Install]
WantedBy=multi-user.target mysql.service

我重新启用我的服务

代码语言:javascript
复制
systemctl enable /complete/path/to/service

Created symlink from /etc/systemd/system/multi-user.target.wants/rfid-server.service to /opt/rfid-server-service/rfid-server.service.
Created symlink from /etc/systemd/system/mysql.service.wants/rfid-server.service to /opt/rfid-server-service/rfid-server.service.
Created symlink from /etc/systemd/system/rfid-server.service to /opt/rfid-server-service/rfid-server.service.

如您所见,它创建了指向mysql.service.wants的符号链接。

票数 1
EN

Server Fault用户

发布于 2017-12-17 20:02:55

也许您应该在您的服务文件中添加ConditionPathExists检查?

有来自systemd 文档的引用:

使用ConditionPathExists=,在单元启动之前检查文件的存在情况。如果指定的绝对路径名称不存在,则条件将失败。如果传递给ConditionPathExists=的绝对路径名以感叹号("!")作为前缀,则测试将被否定,并且只有当路径不存在时才启动该单元。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/888211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档