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 配置文件吗?