我使用的是 Debian 10 Buster。
我不明白这个 init.d 脚本有什么问题?有时它不会在服务器关闭时运行。
当服务器error_log
因SIGHUP
.这是描述此行为的链接: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>