linRichielinRichie
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
  • Ansible

    • Ansible: 基本操作
    • Ansible: 安装
    • Ansible: 简介
    • YAML: 文件格式
    • Playbook

      • Playbook: 介绍
      • Playbook: 操作
    • 模块

      • Yum模块常用参数
    • 实战

      • Ansible 实战
  • Anaconda

    • Anaconda命令
  • Iptables

    • Iptable: 防火墙
    • iptables 用法
  • Systemd

    • 系统服务配置
    • 系统服务启动文件
    • 性能优化

      • Linux 系统监控
      • Linux 系统性能优化
      • Linux 系统故障诊断
      • Linux 系统日志管理
  • Network

    • 用一张图解释 8 种流行的网络协议
    • 反子网掩码
    • 交换机端口模式
    • eNSP 软件
    • 华为交换机配置命令
    • eNSP静态路由实验
  • Commands

    • 命令别名:alias
    • 多类型资源统计工具: dstat
    • history配置
    • unzip命令
    • Linux用户到期登录时间和随机密码
    • 常用 Command
    • ssh

      • ssh-keygen
      • linux ssh命令
  • CI/CD

    • Jenkins CI/CD 管道
  • Kubernetes

    • Docker系列学习

      • 01. 什么是Docker
      • 02. Docker安装
      • 03. 使用Docker镜像
      • 04. 利用commit理解镜像构成
      • 05. 操作Docker容器
      • 06. 使用Dockerfile定制镜像
      • 07. Dockerfile指令详解
      • 08. Dockerfile多阶段创建
      • 09. 访问仓库
      • 10. 修改docker的启动项
      • 11. Nexus3.x的私有仓库
      • 12. docker-hub加速器
      • 13. 数据管理
      • 14. 使用网络
  • Shell编程

    • Shell 编程基础
    • Shell 脚本执行消耗的时间
    • Shell 自动生成简介

系统服务启动文件

  • 服务文件详解
    • 文件位置
    • 配置文件结构
    • Unit部分
    • Service部分
    • Install部分
  • 完整示例

服务文件详解

文件位置

  • 系统服务目录: /usr/lib/systemd/system/xxx.service
  • 用户服务目录: /etc/systemd/system/xxx.service

配置文件结构

服务文件由三个主要部分组成:

  1. [Unit] 部分

    • 定义服务的描述、依赖和顺序
  2. [Service] 部分

    • 定义服务的具体行为
  3. [Install] 部分

    • 定义服务的启用/禁用配置

Unit部分

常用选项:

选项说明
Description服务描述信息
After在指定服务之后启动
Before在指定服务之前启动
Requires强依赖关系,依赖服务必须启动
Wants弱依赖关系,依赖服务启动失败不影响本服务
Conflicts冲突服务,不能同时运行
Documentation文档地址
Condition*启动条件

Service部分

常用选项:

Type 类型

类型说明
simple默认类型,主进程由 ExecStart 启动
forking服务会调用 fork() 创建子进程
oneshot一次性执行,执行完就退出
dbus通过 D-Bus 启动
notify启动完成后发送通知
idle等待其他任务完成后才启动

进程控制

选项说明
User运行服务的用户
Group运行服务的用户组
WorkingDirectory工作目录
RootDirectory根目录
Nice进程优先级
OOMScoreAdjustOOM优先级

执行相关

[Service]
# 环境配置文件
EnvironmentFile=/etc/sysconfig/myapp

# 启动命令
ExecStart=/usr/bin/myapp

# 启动前执行
ExecStartPre=/usr/bin/pre-start.sh

# 启动后执行
ExecStartPost=/usr/bin/post-start.sh

# 停止命令
ExecStop=/usr/bin/stop.sh

# 服务异常退出时自动重启
Restart=always

# 重启间隔
RestartSec=30

特殊标记说明

ExecStart 命令前的特殊标记:

标记说明
@参数作为一个整体传递
-忽略命令失败
+进程获得特权

Install部分

常用选项:

选项说明
Alias服务别名
RequiredBy被其他服务强依赖
WantedBy被其他服务弱依赖
Also同时安装的其他服务
DefaultInstance实例默认名称

完整示例

[Unit]
Description=My Application Service
After=network.target
Requires=mysql.service
Documentation=https://example.com/docs

[Service]
Type=simple
User=myapp
Group=myapp
WorkingDirectory=/opt/myapp
EnvironmentFile=/etc/sysconfig/myapp
ExecStartPre=/usr/bin/pre-start.sh
ExecStart=/usr/bin/myapp
ExecStop=/usr/bin/stop.sh
Restart=always
RestartSec=30
Nice=-5

[Install]
WantedBy=multi-user.target
Alias=myapp.service

注意:

  • 修改服务文件后需要重新加载:

    systemctl daemon-reload
    
  • 路径必须使用绝对路径

  • Type=forking 时建议设置 PIDFile

  • 注意设置合适的用户权限

  • 建议添加文档链接

最近更新时间:
Prev
系统服务配置