编辑/etc/init.d/mysql以自动删除mysql.sock

编辑/etc/init.d/mysql以自动删除mysql.sock

我在 CentOS 版本 6.5(最终版)虚拟机上运行 MySQL。它用于测试 Joomla。

物理主机经常重启,这很好。但是,VM 不会执行干净关闭。当它重新启动时,这里会出现一个锁定文件:/var/lib/mysql/mysql.sock

我构建了一个 shell 脚本,它将为我删除当前手动执行的它。这工作得很好,但需要我运行它。

#!/bin/bash
sudo mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
sudo service mysqld restart

有人建议我编辑 /etc/init.d/mysql 以自动删除锁定文件。虽然这似乎是一个好主意,但锁定文件确实执行了一个有价值的目的,并且篡改该 im mysqld 可能弊大于利。

如何在重启后自动删除锁定文件?

答案1

套接字文件是进程与正在运行的服务器进行通信的一种方式。当服务器死机时,就不需要套接字了。正如您所说,如果服务器有机会正常关闭,它就会被删除。如果套接字已经存在,MySQL 将无法启动;因此出现错误消息。当服务器不运行时删除它就可以了。

编辑/etc/init.d/mysql并找到该行:

start(){

在其下方插入以下内容:

if [ -S /var/lib/mysql/mysql.sock ] ; then
    rm /var/lib/mysql/mysql.sock
fi

使其看起来像下面这样:

start(){
        if [ -S /var/lib/mysql/mysql.sock ] ; then
            rm /var/lib/mysql/mysql.sock
        fi

答案2

我会将这些行添加到 /etc/inittab

该文件在每次启动时运行。

你可以放弃 sudo 并重新启动。

“非常确定”/etc/inittab 返回 0

相关内容