Linux 服务启动失败的排查顺序
发布时间 - 2026-01-27 00:00:00 点击率:次排查 systemd 服务失败需四步:先看 systemctl status 确认 Active 状态、ExecStart 命令和 status=退出码;再用 journalctl -u -n 50 -e 查真实错误日志;接着验证配置语法并手动模拟启动;最后检查依赖服务、环境变量及工作目录。
先看 systemctl status 确认失败状态和退出码
这是排查起点,不是走形式。重点盯三处:Active: 行是否为 failed;Process: 行里 ExecStart= 后的完整命令;以及 status= 后的数字(比如 status=1/FAILURE)。这个退出码本身没意义,但结合日志就能定位是配置错、权限错,还是进程一启动就崩了。
- 如果显示
inactive (dead)且没报错,大概率是服务压根没被手动启过,别急着查日志 -
status=203/EXEC常见于路径写错或二进制不存在(比如把/usr/bin/nginx写成/usr/sbin/nginx) -
status=217/USER多因User=配置项指定的用户不存在,或家目录不可访问
用 journalctl -u 服务名.service -n 50 -e 挖真实错误
日志里藏了所有“为什么失败”。加 -n 50

-e 直接跳到末尾——最新一行往往就是致命错误。常见线索有:
-
Permission denied:不是单纯文件权限问题,要顺藤摸瓜查 SELinux 上下文(ls -Z)、AppArmor profile 或 systemd 的ProtectSystem=限制 -
Address already in use:端口被占,但注意netstat -tulpn | grep :80可能看不到被 systemd socket 激活的服务,得看ss -tlnp -
Failed to load environment files:检查/etc/sysconfig/服务名或 service 文件里EnvironmentFile=指向的路径是否存在、是否可读
验证配置语法 + 手动模拟启动
很多服务自带校验命令,不跑等于白配。而且配置文件权限不对,服务会静默忽略——比如 MySQL 发现 /etc/my.cnf 权限是 664 就直接跳过,连日志都不记。
- Nginx:
nginx -t,它会告诉你哪行配置错、哪个 include 路径不存在 - Redis:
redis-server --test-memory /etc/redis/redis.conf,还能顺便测内存 - 手动执行:
sudo -u www-data /usr/sbin/nginx -g 'daemon off;',能暴露环境变量缺失、工作目录不可写、动态库找不到等 systemd 日志里不显示的细节
检查依赖服务和启动时机
systemd 不是线性启动,而是按依赖图调度。一个服务 failed,可能只是上游没起来。别只盯着报错服务本身。
- 运行
systemctl list-dependencies --reverse 服务名.service,看它依赖哪些 unit;再用systemctl status逐个查这些依赖的状态 - 典型冲突:NetworkManager 和 systemd-networkd 同时启用,其中一个被
mask但没停干净,导致networking.service卡在activating - 时间敏感服务(如 NTP、证书自动续期)若在
After=multi-user.target启动,可能因系统时间未同步而失败,得改用After=time-sync.target
最常被跳过的其实是环境变量和工作目录——systemd 的默认环境极简,$PATH 可能不含 /usr/local/bin,WorkingDirectory= 不设的话,脚本里的相对路径全失效。这些点不显眼,但修起来最快。
# mysql
# linux
# redis
# nginx
# app
# 端口
# ai
# 环境变量
# 配置文件
# 为什么
# red
# include
# 不存在
# 再用
# 报错
# 先看
# 跳过
# 这是
# 走形式
# 顺藤摸瓜
# 都不
# 就能
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
php json中文编码为null的解决办法
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
如何在景安服务器上快速搭建个人网站?
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
Laravel如何使用.env文件管理环境变量?(最佳实践)
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
如何在云服务器上快速搭建个人网站?
如何在云主机上快速搭建网站?
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
Laravel怎么在Controller之外的地方验证数据
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
制作企业网站建设方案,怎样建设一个公司网站?
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
javascript日期怎么处理_如何格式化输出
JavaScript如何实现继承_有哪些常用方法
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
Laravel如何使用Blade组件和插槽?(Component代码示例)
Laravel观察者模式如何使用_Laravel Model Observer配置
利用python获取某年中每个月的第一天和最后一天
大同网页,大同瑞慈医院官网?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
jQuery 常见小例汇总
Python文件异常处理策略_健壮性说明【指导】
Laravel怎么实现模型属性的自动加密
如何快速搭建高效服务器建站系统?
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
如何获取免费开源的自助建站系统源码?
WEB开发之注册页面验证码倒计时代码的实现
如何选择PHP开源工具快速搭建网站?
如何快速辨别茅台真假?关键步骤解析
长沙做网站要多少钱,长沙国安网络怎么样?
js实现获取鼠标当前的位置
HTML 中如何正确使用模板变量为元素的 name 属性赋值
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
大连 网站制作,大连天途有线官网?
高防服务器租用首荐平台,企业级优惠套餐快速部署
Linux后台任务运行方法_nohup与&使用技巧【技巧】
海南网站制作公司有哪些,海口网是哪家的?
如何在搬瓦工VPS快速搭建网站?
如何在IIS中新建站点并配置端口与物理路径?
三星网站视频制作教程下载,三星w23网页如何全屏?
长沙企业网站制作哪家好,长沙水业集团官方网站?
C++时间戳转换成日期时间的步骤和示例代码
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践
googleplay官方入口在哪里_Google Play官方商店快速入口指南
BootStrap整体框架之基础布局组件
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives

