p;
解决问题
现在我们已经大致对 Linux 的服务有了一个初步了解
我们回到刚开始的问题:nginx 服务无法通过 systemctl 命令设置开机自启动,手动挂载软连接之后自启动状态不是 enable ,而是 static
既然是跟 systemctl 相关的,我们去看下 nginx 的服务启动脚本
可以看到,这台机器上 nginx 的服务启动脚本只有两个部分([Unit]、[Service]),并没有 [Install]
而 [Install] 部分往往是跟服务的开机自启动相关
我们加上 [Install]
其中 multi-user.target
表示命令行模式(即等效于系统运行级别为 3 )
而 WantedBy
表示该服务放在哪个 target 下,一般来讲 WantedBy
对应的 target 为指定系统的运行级别
然后重启一下 nginx 启动脚本文件
设置开机自启动,发现创建软连接成功了
看下状态
总结:
-
一般来讲,服务无法设置开机自启动首先考虑是不是服务启动脚本配置有问题(/usr/lib/systemd/system/
目录下),这种情况常见于编译安装的时候需要自己编写服务启动文件
-
服务能够开机自启动其实就是将 /usr/lib/systemd/system/
目录下的服务启动脚本挂载到了 /etc/systemd/system/
下,一般是挂载到 /etc/systemd/system/multi-user.target.wants/
-
systemctl status
命令显示的内容里面有一个 vendor preset: disabled
字段,这个表示该服务首次安装之后不会自启动,需要手动启动(systemctl enable
)
感谢阅读,喜欢作者就动动小手[一键三连],这是我写作最大的动力