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 运行等高频错误给出提醒。
