小服务器服务起不来别慌:先查这三处
小服务器上最让人心跳漏一拍的时刻,莫过于重启之后发现网站打不开、接口全超时。很多人第一反应是再重启一次,或者干脆重装。其实绝大多数「服务起不来」都有明确的原因写在机器里,按顺序查三处,基本都能定位。
第一处:服务到底是什么状态
先别猜,直接问 systemd:
systemctl status 服务名
重点看两行:Active: 是 failed 还是 inactive;下面最近的几行日志往往直接写了失败原因,比如配置文件路径不对、端口被占用、权限不足。如果是 inactive,说明它压根没被拉起来,检查一下是否设置了开机自启:
systemctl is-enabled 服务名
显示 disabled 就是没设自启,systemctl enable --now 服务名 一条命令同时设好并立即启动。
第二处:端口有没有在听、被谁占了
服务显示 running 却连不上,多半是端口问题。查监听状态:
ss -tlnp | grep 端口号
没有输出,说明服务没真正监听,多半是启动过程中又退出了,回到第一处看日志。有输出但进程名不是你的服务,说明端口被别的进程占了——新服务起不来、老进程没退干净是最常见的一种,确认那个进程的来历后再处理,不要不分青红皂白直接杀。端口在听、本机 curl 127.0.0.1:端口 能通但外网不通,那就是防火墙或安全组没放行,去控制台安全组里核对入方向规则。
第三处:完整日志看尾部
status 只给最后几行,要看全貌用 journalctl:
journalctl -u 服务名 -n 100 --no-pager
journalctl -u 服务名 -f
第一条看最近 100 行,第二条实时跟踪(重启服务时另开窗口盯着它,报错出现的那一秒最真实)。日志里最常见的三类词:Permission denied 是文件权限或属主问题;Address already in use 就是端口被占;No such file or directory 是配置里写的路径不存在,十有八九是改过目录没同步改配置。
一个顺手的习惯
每次改完配置,先验证再重启:nginx 用 nginx -t,其他服务大多也有自检参数。验证通过再 systemctl restart,能避免「改了一个小错,服务直接躺平」的尴尬。另外把 systemctl status、ss -tlnp、journalctl -u 这三条命令记在顺手的地方,真出事的时候不用现查。
服务起不来不可怕,可怕的是不知道它为什么起不来。状态、端口、日志三处查完,原因基本就现形了,剩下的就是对症下药。
- 点赞
- 收藏
- 关注作者
评论(0)