bug:
[root@localhost mysql-5.7]# systemctl enable mysql.service
Failed to execute operation: No such file or directory
出现bug原因:
①CentOS7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分:
/usr/lib/systemd/system (系统服务,开机不需要登录就能运行)
/usr/lib/systemd/user (用户服务,需要登录后才能运行)
②./usr/lib/systemd/system 和 /etc/systemd/system的区别:
对于那些支持 Systemd(YUM/DNF/RPM/APT/etc) 的软件,安装的时候,会自动在 /usr/lib/systemd/system 目录添加一个配置文件。
对于非软件包形式的临时软件安装,系统操作员应将文件手动放置在 /etc/systemd/system
注意: 设置开机自启动脚本可以在/etc/systemd/system或者/usr/lib/systemd/system目录下配置,当两个地方都配置了的情况下,/etc/systemd/system配置优先。
③.每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]、[Install]:
[Unit] 主要是对这个服务的说明,内容包括Description和After,Description用于描述服务,After用于描述服务类别。
[Service] 是服务的关键,是服务的一些具体运行参数的设置,
Type=forking是后台运行的形式
PIDFile 为存放PID的文件路径
ExecStart 为服务的具体运行命令
ExecReload 为重启命令
ExecStop 为停止命令
PrivateTmp=True 表示给服务分配独立的临时空间
注意:[Service] 部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错!
[Install] 是服务安装的相关设置,可设置为多用户的
解决bug操作步骤:
第一步.:进入/lib/systemd/system
cd /lib/systemd/system
第二步.:创建mysql.service
vi /lib/systemd/system/mysql.service
第三步.:mysql.service中添加配置信息,放到你刚刚创建的地方
[Unit]
Description=nginx
After=network.target[Service]
Type=forking
ExecStart=/usr/local/mysql/sbin/mysql #修改为自己系统对应的路径
ExecReload=/usr/local/mysql/sbin/mysql -s reload #修改为自己系统对应的路径
ExecStop=/usr/local/mysql/sbin/mysql -s quit #修改为自己系统对应的路径
PrivateTmp=true[Install]
WantedBy=multi-user.target
按i进入编辑模式,把配置放到里面去
按ESC,输入:wq,保存退出
第四步.:进入cd /usr/local/java/mysql-5.7/
systemctl enable mysql.service
效果演示