systemd 配置目录介绍

systemd 配置目录详解

主要配置目录

1. /etc/systemd/system/ (用户自定义配置)

  • 用途: 存放用户和系统管理员创建的服务单元
  • 优先级: 最高(会覆盖 /usr/lib/systemd/system/ 中的同名文件)
  • 典型应用:
    • 自定义服务配置
    • 服务覆盖配置(override)
    • 服务的符号链接
# 查看目录内容示例
ls -la /etc/systemd/system/

2. /usr/lib/systemd/system/ (系统默认配置)

  • 用途: 软件包安装时提供的默认服务单元文件
  • 管理方式: 由包管理器(apt/yum/dnf)维护
  • 注意: 不应直接修改此目录的文件
# 查看已安装服务的默认配置
ls -la /usr/lib/systemd/system/

3. /run/systemd/system/ (运行时配置)

  • 用途: 运行时动态生成的单元文件
  • 特点: 系统重启后内容会丢失
  • 优先级: 高于 /etc/systemd/system/

配置文件类型

服务单元(.service

定义系统服务的行为:

[Unit]
Description=My Application Service
After=network.target

[Service]
Type=simple
User=www-data
ExecStart=/usr/bin/php /var/www/html/artisan queue:work
Restart=always

[Install]
WantedBy=multi-user.target

路径监控单元(.path

监控文件或目录变化:

[Unit]
Description=Watch config file changes

[Path]
PathChanged=/var/www/html/config.php
Unit=myapp.service

[Install]
WantedBy=multi-user.target

定时器单元(.timer

定时任务(类似 cron):

[Unit]
Description=Run backup daily

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

目标单元(.target

分组管理服务(类似运行级别):

  • multi-user.target – 多用户文本模式
  • graphical.target – 图形界面模式
  • network.target – 网络就绪

常用管理命令

# 重载 systemd 配置(修改配置后必须执行)
sudo systemctl daemon-reload

# 启用服务(开机启动)
sudo systemctl enable myapp.service

# 启动服务
sudo systemctl start myapp.service

# 停止服务
sudo systemctl stop myapp.service

# 重启服务
sudo systemctl restart myapp.service

# 查看服务状态
sudo systemctl status myapp.service

# 查看服务日志
sudo journalctl -u myapp.service -f

# 禁用服务
sudo systemctl disable myapp.service

# 列出所有失败的服务
sudo systemctl --failed

# 查看服务依赖关系
systemctl list-dependencies myapp.service

# 查看启用的所有服务
systemctl list-unit-files --type=service --state=enabled

配置优先级顺序

/run/systemd/system/     (最高优先级)
    ↓
/etc/systemd/system/     (用户配置,推荐修改此处)
    ↓
/usr/lib/systemd/system/ (最低优先级,软件包默认配置)

实际应用场景

场景 1:创建自定义服务

# 1. 创建服务文件
sudo vim /etc/systemd/system/myapp.service

# 2. 重载配置
sudo systemctl daemon-reload

# 3. 启用并启动服务
sudo systemctl enable --now myapp.service

场景 2:覆盖现有服务配置

# 创建覆盖配置(不修改原文件)
sudo systemctl edit nginx

# 这会在 /etc/systemd/system/nginx.service.d/override.conf
# 添加自定义配置片段

场景 3:调试服务配置

# 测试服务配置是否正确
systemd-analyze verify /etc/systemd/system/myapp.service

# 查看服务启动时间分析
systemd-analyze blame

结合您的 WordPress 项目

基于您的项目结构,如果要为 WordPress 或相关服务创建 systemd 配置:

示例:WordPress Cron 服务

# /etc/systemd/system/wp-cron.service
[Unit]
Description=WordPress Cron Handler
After=network.target mysql.service

[Service]
Type=oneshot
User=www-data
WorkingDirectory=/var/www/html
ExecStart=/usr/bin/php wp-cron.php

[Install]
WantedBy=multi-user.target

示例:监控配置文件变化

# /etc/systemd/system/wp-config-monitor.path
[Unit]
Description=Monitor wp-config.php changes

[Path]
PathChanged=/var/www/html/wp-config.php
Unit=php-fpm.service

[Install]
WantedBy=multi-user.target

需要我帮您创建具体的 systemd 配置文件吗?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

+ 40 = 44
Powered by MathCaptcha