systemctl 命令设置开机自启动失败
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
Linux服务开机自启动问题及其解决方法摘要
作者咸鱼在本篇文章中分享了一个关于Linux服务自启动的案例。他在之前的文章中提到了如何使用shell脚本一键安装Nginx,并尝试设置其开机自启动。但是,他发现使用systemctl enable nginx.service
命令并未生效,Nginx服务并没有出现在/etc/systemd/system/multi-user.target.wants/
目录下。为了解决这个问题,咸鱼手动创建了一个软链接,并成功设置了Nginx的开机自启。
服务和daemon的区别
文章中提到,在Linux中,服务(service)是一个个实现特定功能的程序,而这些程序的运作被称为daemon。对于用户来说,不必区分daemon和service,因为没有运作的daemon,就不会有service。
Linux服务的启动和管理
Linux服务的启动和管理在CentOS 7之后改用systemd替代了SystemV。systemd通过unit和target来管理服务,并使用systemctl
命令进行服务管理,相较于SystemV的多个命令,systemd更为简单。
服务的状态和启动文件
服务可以有不同的状态,如正在运行(active running)、已结束(active exited)、等待其他事件(active waiting)或关闭(inactive)。服务的预设状态包括自启动(enable)、不自启动(disable)、有依赖性自启动(static)或被强制注销(mask)。
服务的启动脚本存放在/usr/lib/systemd/system/
目录下,启动脚本包含[Unit]、[Service]和[Install]三部分,它们分别定义了服务的说明和依赖性、启动方式以及服务的安装目标。
解决开机自启动问题
通过检查nginx的服务启动脚本,发现缺少了[Install]部分,这部分通常与开机自启动相关。咸鱼补充了该部分,并将其设置为multi-user.target,表示命令行模式。之后,他重新启动了nginx服务,设置开机自启动,成功创建了软连接。
总结来说,当服务无法设置开机自启动时,应首先检查服务启动脚本配置。通过systemctl命令设置的服务开机自启动实际上是将服务启动脚本从/usr/lib/systemd/system/
挂载到/etc/systemd/system/multi-user.target.wants/
目录下。如果服务首次安装后不会自启动,需要手动启动。
文章最后,作者感谢读者阅读并鼓励[一键三连]以支持他的写作。
想要了解更多内容?