Debian

為什麼這個 init.d 腳本有時在關機時不執行?

  • March 15, 2022

我在 Debian 10 Buster 上。

我不知道這個 init.d 腳本有什麼問題?有時它不會在伺服器關閉時執行。

error_log伺服器因SIGHUP. 這是描述此行為的連結:MySQL Server response to SIGHUP signals

我正在使用的這個 init.d 腳本/etc/init.d/mysql直接取自MySQL 官方發行版 deb,我自己做了一些小的修改,這些修改記錄在文件中。

這是init.d 腳本引用的源 mysql-helpers 文件。

在執行時停止/啟動/重新啟動 MySQL永遠不會產生 SIGHUP,但有時腳本會因為沒有日誌資訊而阻塞。.pid 消失了,但 MySQL 默默地無法啟動。

令人沮喪的部分是它有時在關機時執行,有時不執行。它是隨機的;75% 不執行,25% 執行。

這個問題的另一部分可能是,有誰知道在哪裡可以找到 Debian 10 上 MySQL 5.7.37 的有效 init.d 腳本?

為什麼你不嘗試使用 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>

引用自:https://unix.stackexchange.com/questions/694412