• Linux 系统服务


    Linux 系统服务

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

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



    1 创建系统服务

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

    1.1 创建服务文件

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

    • 编写 demo.service
    vim /usr/lib/systemd/system/demo.service
    
    • 1

    demo.service 增加以下内容:

    [Unit]
    Description=My Service
    After=network.target
    
    [Service]
    ExecStart=/path/to/demo
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 具体内容解释
      [Unit]:定义服务的描述和依赖关系。
      [Service]:定义服务的执行方式和行为。
      ExecStart:指定服务启动时执行的命令或程序路径。
      Restart:指定服务在异常退出时自动重启。
      [Install]:定义服务的启动级别和依赖关系。
      注意替换/path/to/demo为实际的服务执行路径或命令。

    1.2 设置服务运行方式

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

    sudo systemctl daemon-reload
    
    • 1
    • 启动服务:
    sudo systemctl start demo
    
    • 1
    • 设置开机自启用服务:
    sudo systemctl enable demo
    
    • 1

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

    • 停止服务:
    sudo systemctl stop demo
    
    • 1
    • 重启服务:
    sudo systemctl restart demo
    
    • 1
    • 查看服务状态:
    sudo systemctl status demo
    
    • 1
    • 禁用服务:
    sudo systemctl disable demo
    
    • 1

    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
    systemd-analyze plot > timeline.svg
    
    • 1

    某些服务持续运行,可能引起生成失败。直接简单解决方法:查找到进程强制关闭后即可生成。
    执行以上步骤后,会生成显示了各个服务按照启动顺序的时间线的图表。

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

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

    结语

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

  • 相关阅读:
    【MindSpore易点通】数据处理经验总结
    上海亚商投顾:沪指高开低走 钠离子电池、储能概念崛起
    多传感器融合定位技术
    Linux安装redis5.0.14版本详细步骤
    安防监控用品经营商城小程序搭建
    计算机毕业设计Java仓库管理系统设计与实现(源码+系统+mysql数据库+lw文档)
    [Shell详解-5]:test命令与判断符号[]
    Aptos 生态 18 个精选项目最新梳理(附交互策略)
    (二十七)大数据实战——hbase高可用集群安装与部署
    【C++】双指针算法:和为s的两个数字
  • 原文地址:https://blog.csdn.net/weixin_35723192/article/details/132762885