为什么 init.d 脚本中的命令被忽略?

为什么 init.d 脚本中的命令被忽略?

作为我工作的一部分,我管理一个由 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 中的脚本吗?

尽管集群似乎按预期工作,但我不喜欢计算机的不一致性......让我感觉好像发生了一些我不知道的事情。

在此先感谢您提供的任何帮助。

答案1

后者看起来像是从 systemd/upstart 启动的守护进程,没有 SysV 兼容层(init.d 脚本;init.d 脚本实际上已被弃用)。尝试检查 /etc/init/mysql* 文件。

相关内容