为什么这个 init.d 脚本有时在关机时不运行?

为什么这个 init.d 脚本有时在关机时不运行?

我使用的是 Debian 10 Buster。

我不明白这个 init.d 脚本有什么问题?有时它不会在服务器关闭时运行。

当服务器error_logSIGHUP.这是描述此行为的链接:MySQL 服务器对 SIGHUP 信号的响应

这个 init.d 脚本/etc/init.d/mysql我正在使用的是直接从MySQL 官方发布 deb我自己做了一些小的修改,这些修改记录在文件中。

这是来源 mysql-helpers 文件由 init.d 脚本引用。

在运行时停止/启动/重新启动 MySQL绝不产生 SIGHUP,但有时脚本会因没有日志信息而阻塞。 .pid 消失了,但 MySQL 却默默地无法启动。

令人沮丧的部分是有时关机时运行,有时不运行。它是随机的; 75% 不运行,25% 运行。

这个问题的另一部分可能是,有谁知道在哪里可以找到 Debian 10 上 MySQL 5.7.37 的工作 init.d 脚本?

答案1

为什么你不尝试使用 systemd 来管理守护进程,自 debian Jessie 以来它更容易且可用。 /etc/systemd/system/servicemysql.service

[Unit]
Description=MySQL task
DefaultDependencies=no
Conflicts=reboot.target
Before=poweroff.target halt.target shutdown.target
Requires=poweroff.target

[Service]
Type=oneshot
ExecStart=/path/to/your/script.sh
ExecReload=/usr/bin/kill -HUP $MAINPID
RemainAfterExit=yes

[Install]
WantedBy=shutdown.target

不要忘记授予该文件 0644 权限,并在每次修改后运行:

systemctl daemon-reload

然后启用守护进程运行:

systemctl enable <name of the service>

并开始运行:

systemctl start <name of the service>

要检查服务是否正在运行,请执行:

systemctl status <name of the service>

相关内容