在Linux上添加系统服务主要是使用Systemd进行管理。通过systemd服务管理器的加载流程,可以实现对Linux系统服务的统一管理和控制。通过配置和管理服务单元文件,可以方便地添加、启动和停止各种系统服务。
作者:炭烤毛蛋 ,点击博主了解更多。
系统服务文件以.service为后缀名,存放在/etc/systemd/system/、/usr/lib/systemd/system/等目录中。
系统服务通常以服务单元文件(Service Unit File)形式出现,通常每个服务至少包含一个文件。接下来以构建 demo 服务为例,
demo.service。vim /usr/lib/systemd/system/demo.service
demo.service 增加以下内容:
[Unit]
Description=My Service
After=network.target
[Service]
ExecStart=/path/to/demo
Restart=always
[Install]
WantedBy=multi-user.target
[Unit]:定义服务的描述和依赖关系。[Service]:定义服务的执行方式和行为。ExecStart:指定服务启动时执行的命令或程序路径。Restart:指定服务在异常退出时自动重启。[Install]:定义服务的启动级别和依赖关系。/path/to/demo为实际的服务执行路径或命令。-重加载各项服务,需要更新Systemd配置
sudo systemctl daemon-reload
sudo systemctl start demo
sudo systemctl enable demo
如下命令可以进一步管理服务:
sudo systemctl stop demo
sudo systemctl restart demo
sudo systemctl status demo
sudo systemctl disable demo
在Linux上加载service的过程涉及到systemd服务管理器。
Systemd检测和加载系统服务单元文件的目录
Systemd会检查/lib/systemd/system/目录和/etc/systemd/system/目录下的服务单元文件。前者包含系统安装的服务,后者包含管理员自定义的服务。
解析和加载服务单元文件
Systemd会解析服务单元文件,其中包含服务的描述、依赖关系、执行路径等信息。
创建服务对象
Systemd会根据服务单元文件的内容,创建对应的服务对象,该对象包含了服务的各种属性。
管理服务状态
Systemd通过管理服务的状态来控制服务的生命周期,包括启动、停止、重启等操作。管理员可以使用systemctl命令管理服务的状态,比如:
sudo systemctl start service_namesudo systemctl stop service_namesudo systemctl restart service_namesudo systemctl status service_name在 Linux 中,可以使用 systemd-analyze 命令生成系统启动时间线图表。这个命令提供了关于系统启动过程的详细信息,包括各个服务的启动时间和顺序。要生成系统启动顺序图表,可以按照以下步骤操作:
timeline.svg。systemd-analyze plot > timeline.svg
某些服务持续运行,可能引起生成失败。直接简单解决方法:查找到进程强制关闭后即可生成。
执行以上步骤后,会生成显示了各个服务按照启动顺序的时间线的图表。
xdg-open timeline.svg
gnome-open timeline.svg
也可以使用浏览器来打开该文件。
不枉博主详细讲解,欢迎订阅博主–炭烤毛蛋 。