systemd 单元文件生成器

可视化配置 Linux 服务并实时生成 .service / .timer / .socket 文件,内置常用场景预设与安全加固建议,也支持粘贴已有单元文件反向编辑

场景预设

生成文件名 myapp.service

常驻服务,最常用

systemctl status 里显示的那行说明

空格分隔,只定顺序不拉起依赖

弱依赖,对方挂了本服务照常启动

强依赖,对方失败本服务也不启动

常用依赖点一下

生成结果

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

[Service]
Type=simple
ExecStart=/usr/bin/node /opt/myapp/server.js
WorkingDirectory=/opt/myapp
User=myapp
Group=myapp
Environment=NODE_ENV="production"
Restart=on-failure
RestartSec=5
TimeoutStartSec=30
TimeoutStopSec=30

# 安全加固
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=true

[Install]
WantedBy=multi-user.target

安装到 /etc/systemd/system/myapp.service

配置检查

1 提示可以安装
  • 没有发现明显问题,装之前仍建议跑一遍 systemd-analyze verify

安装与运维命令

# 1. 写入单元文件
sudo install -m 644 myapp.service /etc/systemd/system/myapp.service

# 2. 语法自检(能挡掉大部分低级错误)
sudo systemd-analyze verify /etc/systemd/system/myapp.service

# 3. 重新加载 systemd 配置
sudo systemctl daemon-reload

# 4. 开机自启并立即启动
sudo systemctl enable --now myapp.service

# 5. 查看状态与实时日志
sudo systemctl status myapp.service
sudo journalctl -u myapp -f

单元文件放哪

/etc/systemd/system/
本机自建服务放这里,优先级最高,推荐
/usr/lib/systemd/system/
软件包安装的单元,不要手改
~/.config/systemd/user/
用户级服务,用 systemctl --user 管理

装好之后要跑的命令

systemd-analyze verify
先做语法检查,能挡掉大部分低级错误
systemctl daemon-reload
改完单元文件必须执行,否则读的还是旧的
systemctl enable --now
设开机自启并立即启动
journalctl -u <单元> -f
看实时日志,排查启动失败第一站
systemd-analyze security
给安全加固打分,并列出还能加什么

常见坑

ExecStart 要绝对路径
systemd 不走登录 shell,没有 PATH,用 which node 查真实路径
不支持管道与 &&
systemd 直接 exec,| > && 会被当成普通参数,请包一层 /bin/sh -c 或写成脚本
环境变量里的 % 要写 %%
% 在单元文件里是说明符开头,字面百分号必须双写
timer 只 enable timer
同时 enable 了 service 会导致开机也跑一次,忽略日历
forking 要配 PIDFile
否则 systemd 找不到子进程,stop 可能失效

什么是 systemd 单元文件

systemd 是现在主流 Linux 发行版默认的初始化系统,服务、定时器、套接字都用一个后缀为 .service / .timer / .socket 的纯文本「单元文件」来描述。写好文件放进 /etc/systemd/system/,再执行 systemctl daemon-reload 与 systemctl enable --now,服务就能开机自启并在挂掉后自动拉起。

本工具把常用指令做成表单:选一个场景预设,填好启动命令与运行账号,右侧实时生成可直接使用的单元文件与配套安装命令, 同时对相对路径、shell 符号、缺失 PIDFile、root 运行等高频错误给出提醒。