Linux 系统服务

Linux 系统服务

在Linux上添加系统服务主要是使用Systemd进行管理。通过systemd服务管理器的加载流程,可以实现对Linux系统服务的统一管理和控制。通过配置和管理服务单元文件,可以方便地添加、启动和停止各种系统服务。

作者:炭烤毛蛋 ,点击博主了解更多。


文章目录

  • [Linux 系统服务](#Linux 系统服务)
  • [1 创建系统服务](#1 创建系统服务)
    • [1.1 创建服务文件](#1.1 创建服务文件)
  • [1.2 设置服务运行方式](#1.2 设置服务运行方式)
  • [2 服务加载流程](#2 服务加载流程)
  • [3 服务启动顺序](#3 服务启动顺序)
  • 结语

1 创建系统服务

系统服务文件以.service为后缀名,存放在/etc/systemd/system//usr/lib/systemd/system/等目录中。

1.1 创建服务文件

系统服务通常以服务单元文件(Service Unit File)形式出现,通常每个服务至少包含一个文件。接下来以构建 demo 服务为例,

  • 编写 demo.service
bash 复制代码
vim /usr/lib/systemd/system/demo.service

demo.service 增加以下内容:

bash 复制代码
[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为实际的服务执行路径或命令。

1.2 设置服务运行方式

-重加载各项服务,需要更新Systemd配置

bash 复制代码
sudo systemctl daemon-reload
  • 启动服务:

    sudo systemctl start demo

  • 设置开机自启用服务:

bash 复制代码
sudo systemctl enable demo

如下命令可以进一步管理服务:

  • 停止服务:
bash 复制代码
sudo systemctl stop demo
  • 重启服务:
bash 复制代码
sudo systemctl restart demo
  • 查看服务状态:
bash 复制代码
sudo systemctl status demo
  • 禁用服务:
bash 复制代码
sudo systemctl disable demo

2 服务加载流程

在Linux上加载service的过程涉及到systemd服务管理器。

  1. Systemd检测和加载系统服务单元文件的目录

    Systemd会检查/lib/systemd/system/目录和/etc/systemd/system/目录下的服务单元文件。前者包含系统安装的服务,后者包含管理员自定义的服务。

  2. 解析和加载服务单元文件

    Systemd会解析服务单元文件,其中包含服务的描述、依赖关系、执行路径等信息。

  3. 创建服务对象

    Systemd会根据服务单元文件的内容,创建对应的服务对象,该对象包含了服务的各种属性。

  4. 管理服务状态

    Systemd通过管理服务的状态来控制服务的生命周期,包括启动、停止、重启等操作。管理员可以使用systemctl命令管理服务的状态,比如:

  • 启动服务:sudo systemctl start service_name
  • 停止服务:sudo systemctl stop service_name
  • 重启服务:sudo systemctl restart service_name
  • 查看服务状态:sudo systemctl status service_name
  1. 处理依赖关系
    Systemd会根据依赖关系来按正确的顺序启动或停止服务。比如,如果一个服务依赖于其他服务,在启动该服务之前,Systemd会先启动所依赖的服务。
  2. 并行启动服务
    Systemd利用系统资源,可以同时启动多个服务,以提高启动效率。
  3. 监控服务状态
    Systemd会不断监控服务的状态,如果服务异常退出,Systemd可以自动尝试重启服务。

3 服务启动顺序

在 Linux 中,可以使用 systemd-analyze 命令生成系统启动时间线图表。这个命令提供了关于系统启动过程的详细信息,包括各个服务的启动时间和顺序。要生成系统启动顺序图表,可以按照以下步骤操作:

  1. systemd-analyze 生成系统启动过程的图表
    打开终端运行一下命令,将系统启动时间线保存名为 timeline.svg
bash 复制代码
systemd-analyze plot > timeline.svg

某些服务持续运行,可能引起生成失败。直接简单解决方法:查找到进程强制关闭后即可生成。

执行以上步骤后,会生成显示了各个服务按照启动顺序的时间线的图表。

  1. 查看生成系统启动时间线图表
    图表更好地了解系统启动过程中各个服务的时间分布和顺序。
  • xdg-open
bash 复制代码
xdg-open timeline.svg
  • gnome-oepn
bash 复制代码
gnome-open timeline.svg

也可以使用浏览器来打开该文件。

结语

不枉博主详细讲解,欢迎订阅博主--炭烤毛蛋

相关推荐
Star Learning Python3 分钟前
Linux系统-文本处理三剑客-grep命令、sed命令、awk命令
linux
facaixxx20248 分钟前
应用镜像是什么?轻量应用服务器的镜像大全
linux·运维·服务器
火龙谷36 分钟前
【hadoop】master一键启动hadoop集群(高可用)
linux·hadoop
noravinsc1 小时前
Linux 下 Module 工具的介绍与使用
linux·运维·服务器
Sunlight_7771 小时前
第五章 SQLite数据库:1、SQLite 基础语法及使用案例
java·linux·服务器·jvm·数据库·tcp/ip·sqlite
Silence4Allen1 小时前
Ubuntu 安装WPS Office
linux·ubuntu·wps
程序员JerrySUN2 小时前
驱动开发硬核特训 · Day 11(下篇):从 virtio_blk 看虚拟总线驱动模型的真实落地
linux·驱动开发·嵌入式硬件
半兽先生2 小时前
CentOS 中安装 vim
linux·centos·vim
长流小哥4 小时前
Linux网络编程实战:从字节序到UDP协议栈的深度解析与开发指南
linux·c语言·开发语言·网络·udp
极小狐4 小时前
极狐GitLab 功能标志详解
linux·运维·服务器·elasticsearch·gitlab·极狐gitlab