Debian
為什麼這個 init.d 腳本有時在關機時不執行?
我在 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>