centos7 关于把安装的服务加入开机启动的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos7 关于把安装的服务加入开机启动的问题相关的知识,希望对你有一定的参考价值。

centos7中 把服务加入开机自动启,比如把mysql加入开机自启动,需要在/usr/lib/systemd/system/这个目录下编写mysqld.service文件,具体参照网上资料或之前整理的资料,其他服务也一样。但是mysqld.service 配置文件中 的PrivateTmp=true ,需要改成false,否则每次服务器重启后,虽然mysql服务起来了,进程也起来了,但是连不上 ,如果mysql的配置文件中指定的socket文件路径是/tmp/mysql.sock 的话 会提示找不到/tmp/mysql.sock 文件,原因就是这里设置PrivateTmp=true,在服务启动时会在/tmp目录下生成类似systemd-private-433ef27ba3d46d8aac286aeb1390e1b-apache.service-RedVyu的文件夹,用于存放mysql的临时文件,mysql.sock 文件也被放到这里了,才导致找不到 /tmp/mysql.sock 文件。但是做软连接也不行,因为 每次服务器重启 后 生成的类似systemd-private-433ef27ba3d46d8aac286aeb1390e1b-apache.service-RedVyu的文件夹也会变。

mysqld.service 配置文件如下:


[Unit]

Description=mysqld

After=network.target


[Service]

Type=forking

ExecStart=/etc/init.d/mysqld start

ExecReload=/etc/init.d/mysqld restart

ExecStop=/etc/init.d/mysqld  stop

PrivateTmp=false


[Install]

WantedBy=multi-user.target


如果之前有创建过mysqld.service 文件,当使用chkconfig --add mysqld 后 再使用 chkconfig --list 是查看不到有mysql的这一列的,当使用 chkcnfig mysqld on  命令时会提示如下:

[[email protected] ~]# chkconfig mysqld on

注意:正在将请求转发到“systemctl enable mysqld.service”。

Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.


这就是相当于转为centos7的方法将服务加入启动的。会在/etc/systemd/system/multi-user.target.wants 目录下创建一个软连接 ,链接到/usr/lib/systemd/system/mysqld.service。

如果不想使用centos7这种方法把服务加入自启的话,可以将之前创建的mysqld.service 删掉,然后再执行 chkconfig --add mysqld ,chkconfig mysqld on ,再使用chkconfig --list 查看就能看到mysql了


重启服务器后 mysql正常启动,正常生产/tmp/mysql.sock 文件。能够正常连接


以上是关于centos7 关于把安装的服务加入开机启动的问题的主要内容,如果未能解决你的问题,请参考以下文章

centos7案例实战——nginx服务安装及开机自启动

centos怎样将服务加入开机自动启动

怎样在centos把shell脚本加入开机启动

Centos7以普通用户启动zookeeper并加入开机自启动服务

Centos7配置BIND开机自启动

centos7源码编译安装httpd加入systemctl并设置开机自启动