# systemd service / timer 生成器 - cron 转 OnCalendar、单元文件检查

> 在线生成 systemd .service 与 .timer：ExecStart、User、环境变量、Restart、依赖与安全加固选项，cron 转 OnCalendar 并预览下次运行时间。

- 网址: https://qilingtools.com/zh/systemd-unit
- 分类: 开发工具 (https://qilingtools.com/zh/dev)
- 标签: [开发](https://qilingtools.com/zh/tags/dev), [运维部署](https://qilingtools.com/zh/tags/devops)
- 最后更新: 2026-10-26
- 价格: 免费，无需注册
- 隐私: 在浏览器本地处理，文件不上传服务器

想让程序在 Linux 上开机自启、崩溃自动重启、或者用 systemd timer 替代 crontab？这个工具用表单生成可以直接放进 /etc/systemd/system 的单元文件。.service 部分包括描述、启动类型（simple、exec、forking、oneshot、notify、idle）、ExecStart / ExecStartPre / ExecReload / ExecStop、运行用户与组或 DynamicUser、工作目录、环境变量（含空格自动加引号）与 EnvironmentFile、Restart 策略与 RestartSec、启动频率限制、After / Wants / Requires 依赖和 WantedBy、日志输出、文件句柄与内存 CPU 限制，以及一组安全加固选项（NoNewPrivileges、ProtectSystem、ProtectHome、PrivateTmp、PrivateDevices、内核保护、RestrictSUIDSGID、MemoryDenyWriteExecute、SystemCallFilter、允许非 root 监听 80 端口等），每项都附中文说明注释。.timer 部分可以直接写 OnCalendar 表达式、把 cron 表达式转换过来（日和星期同时指定时自动拆成两条，因为两者语义不同），或者按“每隔 N 分钟 / 小时”生成单调定时器，并实时显示规范化形式和接下来几次的触发时间；还支持 Persistent 补跑、随机延迟、精度和唤醒。第三个标签页可以粘贴现有的单元文件，逐行解释每条指令，并检查节名错误、布尔值和时长格式、相对路径命令、管道重定向、Environment 引号、缺少 ExecStart、oneshot 与 Restart 冲突、network-online.target 用法、缺少 [Install] 等常见问题。最后附上 daemon-reload、enable --now、查看日志的命令（也支持 systemctl --user 用户级服务）。

## 使用步骤

1. 在“.service 生成”里填写单元名、启动命令、运行用户、重启策略，按需勾选安全加固项
2. 需要定时运行时切到“.timer 定时器”，输入 OnCalendar、cron 表达式或间隔，查看下次运行时间
3. 下载 .service / .timer 文件，按页面给出的命令复制到服务器并 systemctl enable --now

## 功能特点

- 完整的 .service 表单：类型、命令、用户、环境、重启、依赖、日志、资源限制
- 十多项安全加固选项，每项附说明注释
- cron 表达式转 OnCalendar（处理日 / 星期“或”语义）
- OnCalendar 规范化与接下来几次触发时间预览
- 每隔 N 分钟 / 小时的单调定时器
- 粘贴单元文件逐行解释并检查常见错误
- 系统级与用户级（--user）安装命令

## 常见问题

### 生成的文件放在哪里？怎么启用？

系统服务放在 /etc/systemd/system/，然后执行 sudo systemctl daemon-reload 重新加载，再执行 sudo systemctl enable --now 名称.service 设为开机启动并立即启动。用 systemctl status 名称 查看状态，journalctl -u 名称 -f 跟踪日志。用户级服务放在 ~/.config/systemd/user/，命令都加 --user，并执行 loginctl enable-linger 让它在退出登录后继续运行。

### cron 表达式怎么对应 OnCalendar？

cron 的“分 时 日 月 周”对应 OnCalendar 的“周 年-月-日 时:分:秒”，例如 0 9 * * 1-5 对应 Mon..Fri *-*-* 09:00:00，*/15 * * * * 对应 *:0/15。区别在于 cron 同时指定日和星期时表示“任一满足”，systemd 表示“同时满足”，工具会拆成两条 OnCalendar。时间按服务器本地时区计算，也可以在末尾加 UTC。

### timer 比 crontab 好在哪里？

每次运行都有独立的日志（journalctl -u 服务名），可以用 systemctl list-timers 查看下次运行时间；Persistent=true 能在关机错过后开机补跑；RandomizedDelaySec 避免多台机器同时运行；任务本身是普通 service，可以复用依赖、资源限制和安全加固设置，也不会因为上次还没跑完而重叠运行。

### 安全加固选项会不会让程序跑不起来？

可能会，所以默认只开启几乎不影响程序的 NoNewPrivileges、PrivateTmp、ProtectSystem=full、ProtectHome。ProtectSystem=strict 需要用 ReadWritePaths 放行要写的目录；MemoryDenyWriteExecute 会破坏 Node.js、Java 等 JIT；RestrictNamespaces 不适合容器类程序。启用后可用 systemd-analyze security 名称.service 查看评分并逐项测试。

## 相关工具

- [JSON 格式化](https://qilingtools.com/zh/json): 免费在线 JSON 格式化：一键美化、压缩，实时语法校验并定位到出错行列，支持树形视图折叠、键名排序、转义与去转义、Unicode 转中文、复制下载，数据不上传。
- [Base64 编解码](https://qilingtools.com/zh/base64): 免费在线 Base64 编码解码工具：支持中文 UTF-8、URL 安全变体，文本与 Base64 互转，实时转换，本地处理不上传。
- [URL 编解码](https://qilingtools.com/zh/url-encode): 免费在线 URL 编码解码工具：encodeURIComponent 与 encodeURI 两种模式，处理中文、空格与特殊符号，本地实时转换不上传。
- [JWT 解析](https://qilingtools.com/zh/jwt): 免费在线 JWT 解析工具：解码 JWT 的 Header 与 Payload，展示过期时间、签发时间等，本地解析不上传，保护令牌安全。
- [时间戳转换](https://qilingtools.com/zh/timestamp): 免费在线 Unix 时间戳转换工具：时间戳与日期互转，自动识别秒/毫秒，显示本地时间、UTC、ISO 8601 和相对时间，实时更新。
- [哈希计算](https://qilingtools.com/zh/hash): 免费在线哈希/摘要计算工具：对文本或文件计算 SHA-1、SHA-256、SHA-384、SHA-512，使用浏览器加密接口本地完成，文件不上传。
- [UUID 生成](https://qilingtools.com/zh/uuid): 免费在线 UUID 生成器：使用加密安全随机数批量生成符合 RFC 4122 的 UUID v4，可大写、去连字符、加花括号，一键复制。
- [进制转换](https://qilingtools.com/zh/base-convert): 免费在线进制转换工具：二进制、八进制、十进制、十六进制及任意 2–36 进制互转，支持大整数（BigInt），本地实时计算。
