服务显示 inactive (dead) 通常是启动失败,需用 journalctl -u service-name --since "1 hour ago" --no-pager 查完整日志;常见原因包括路径不存在、用户不存在、restart=未配置或 daemon-reload 未执行。

查服务状态总显示 inactive (dead) 怎么办
服务没跑起来,八成是启动失败了,但 systemctl status 默认只显示最后几行日志,容易漏掉关键报错。
- 先用
systemctl status <code>service-name看完整状态,注意末尾的Failed to start或exited with code提示 - 真正有用的日志在
journalctl -u <code>service-name--since "1 hour ago",加--no-pager避免卡住 - 常见坑:配置文件里写了
WorkingDirectory=/path/to/missing,或User=xxx但该用户不存在,systemd 不会主动提示路径/用户校验失败
systemctl restart 后服务立刻又挂了
说明服务进程启动后很快退出,systemd 检测到异常就杀掉并标记为 failed。这不是重启命令的问题,而是服务本身没稳住。
- 检查
Restart=设置:默认是no,如果想自动拉起,得在 service 文件里明确写Restart=on-failure或always - 别乱加
RestartSec=:设太小(比如0.1)可能触发 systemd 的“快速失败”保护机制,直接放弃重启 - 验证方式:改完配置后必须运行
systemctl daemon-reload,否则restart读的还是旧配置
怎么让服务开机不自启,但手动 start 又能跑
关键是分清 enable 和 start 的作用:前者管是否写入启动链,后者只管当前会话。
魔众企业官网系统采用PHP+Mysql架构,是一款对SEO非常友好、功能全面、安全稳定、支持多终端展示并且使用起来极其简单的企业建站系统。 魔众企业官网系统,帮助企业完美展示自己的形象。 跨平台运行:魔众企业官网系统可运行在Linux、Windows、MacOSX、Solaris等多种操作系统平台上,提供了广泛的适用性。 模板引擎:系统搭载了Smarty模板引擎,支持自定义伪静态
- 禁用开机自启:
systemctl disable <code>service-name—— 这会删掉/etc/systemd/system/multi-user.target.wants/<code>service-name.service 的软链接 - 但
systemctl start <code>service-name依然有效,因为 service 文件本身还在/usr/lib/systemd/system/或/etc/systemd/system/ - 注意陷阱:
mask比disable更狠,它会创建指向/dev/null的符号链接,连手动start都会报Unit <code>service-name.service is masked
systemctl list-units --type=service 里一堆 loaded 却 not-found
这些是系统里注册过、但实际没安装对应 service 文件的服务名,比如你卸载了 nginx,但某些依赖包还留着它的 unit 引用。
- 不用管它们:只要不是
active或failed,就不会占资源或影响启动 - 真想清理:查
systemctl show <code>service-name| grep FragmentPath,如果输出为空或路径不存在,基本可确认是残留 - 别手贱删
/run/systemd/generator下的文件 —— 这些是临时生成的,重启后自动重建,删了反而可能引发其他 unit 加载异常
最常被忽略的是 daemon-reload 的时机:改了 .service 文件内容、新增了 DropIn 片段、甚至只是改了 WantedBy=,都得 reload 才生效。不 reload 就 start,等于在跑旧逻辑。









