linux systemd 服务配置

发布于:2025-06-07 ⋅ 阅读:(22) ⋅ 点赞:(0)

在 Linux 系统中,systemd 服务文件是配置服务的核心,其格式为 INI 文件,由多个 [Section] 组成,每个部分包含不同的配置项。下面详细介绍服务文件的内容和配置方法。
服务文件的基本结构
一个完整的 systemd 服务文件通常包含三个核心部分:

[Unit]
Description=描述信息
After=依赖服务

[Service]
ExecStart=启动命令
WorkingDirectory=工作目录
User=运行用户
Type=服务类型
Restart=重启策略

[Install]
WantedBy=多用户目标
  1. [Unit] 部分
    这部分主要用于设置服务的元数据和依赖关系。
[Unit]
Description=My Python Application    # 服务的简短描述
Documentation=man:systemd.special   # 可选的文档引用
After=network.target                # 指定服务启动的顺序依赖
Before=other.service                # 可选,指定在哪些服务之前启动
Wants=other.service                 # 可选,弱依赖关系
Requires=other.service              # 可选,强依赖关系

关键配置项:

  • After:表明此服务应在哪些服务启动之后再启动。
  • Wants:意味着如果被依赖的服务启动失败,不会影响当前服务的启动。
  • Requires:表示被依赖的服务必须成功启动,否则当前服务也无法启动。
  1. [Service] 部分
    该部分用于定义服务的启动方式和运行行为。
[Service]
Type=simple                        # 服务类型,常见值有 simple、forking、oneshot 等
ExecStart=/usr/bin/python3 /path/to/script.py  # 启动服务的命令
ExecStartPre=/path/to/pre-script   # 可选,启动前执行的命令
ExecStartPost=/path/to/post-script # 可选,启动后执行的命令
ExecStop=/path/to/stop-command     # 可选,停止服务的命令
ExecReload=/path/to/reload-command # 可选,重载配置的命令
Restart=always                     # 重启策略,可选值有 no、on-success、on-failure、always 等
RestartSec=5s                      # 重启前的等待时间
User=username                      # 运行服务的用户
Group=groupname                    # 运行服务的用户组
WorkingDirectory=/path/to/app      # 工作目录
Environment=VAR1=value1            # 环境变量设置
EnvironmentFile=/path/to/envfile   # 可选,环境变量文件路径
StandardOutput=syslog              # 标准输出日志位置
StandardError=syslog               # 标准错误日志位置
LimitNOFILE=65536                  # 可选,文件描述符限制
TimeoutStartSec=30                 # 可选,启动超时时间

关键配置项:

  • Type:不同类型对应不同的启动方式,常用的有:
    • simple:默认值,适用于直接启动且不会后台运行的程序。
    • forking:适用于会通过 fork 方式后台运行的程序,如 Apache。
    • oneshot:适用于一次性任务,如系统初始化脚本。
  • ExecStart:启动服务的命令,必须使用绝对路径。
  • Restart:控制服务在异常退出时是否自动重启。
  1. [Install] 部分
    此部分用于配置服务的安装选项,主要是定义服务如何随系统启动。
[Install]
WantedBy=multi-user.target         # 常用的目标是 multi-user.target
RequiredBy=other.service           # 可选,被其他服务所依赖
Alias=custom-name.service          # 可选,服务的别名
Also=other.service                 # 可选,安装此服务时同时安装的其他服务

关键配置项:

  • WantedBy:指定服务所在的目标单元,multi-user.target 是大多数服务器环境的标准运行级别。

网站公告

今日签到

点亮在社区的每一天
去签到