Ubuntu

為什麼忽略 init.d 腳本中的命令?

  • January 20, 2016

作為我工作的一部分,我管理一個由 3 台 Ubuntu 14.04 機器組成的 mySQL 集群。所有 3 台機器應該是相同的。

在機器 1 和 2 上,當我執行時sudo service mysql status,我會收到一份包含正常執行時間等的狀態報告,相當於執行/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf version。此行為與 /etc/init.d/mysql 文件一致,該文件具有以下條目:

'status')
   if mysqld_status check_alive nowarn; then
     log_action_msg "$($MYADMIN version)"
   else
     log_action_msg "MySQL (Percona Server) is stopped."
     exit 3
   fi
   ;;

( $MYADMIN 變數解析為我之前發布的那個命令)。

但是,3 號機器的行為並非如此。執行sudo service mysql status時,我得到標準的 Ubuntu 狀態響應,mysql start/running, process 2234.

機器 3 上的 /etc/init.d/mysql 文件與機器 1 和 2 上的文件相同(使用 vimdiff 檢查)。如果我mysqladmin手動執行命令,它會返回預期的輸出。

是什麼賦予了?有什麼東西會覆蓋 init.d 中的腳本嗎?

儘管集群似乎按預期工作,但我不喜歡電腦中的不一致……讓我覺得發生了一些我不知道的事情。

提前感謝您提供的任何幫助。

後者看起來像是從 systemd/upstart 啟動的守護程序,沒有 SysV 兼容層(init.d 腳本;init.d 腳本實際上已被貶值)。嘗試檢查 /etc/init/mysql* 文件。

引用自:https://serverfault.com/questions/750348