-
把 Linux 服务改成 DynamicUser=yes 后,原来写在 /var/lib 下的目录很容易因为属主和目录创建时机出问题。本文用 StateDirectory=cache-worker 迁移一个缓存 worker,解释目录权限、旧数据迁移、重启复测和回滚边界。
-
服务状态显示 active (exited) 不一定代表进程仍在运行。本文拆解 oneshot 服务的状态含义,给出常驻服务与一次性任务的判断、配置改法和复测命令。
-
Linux 服务显示 active (running),应用却仍读取旧环境变量,常见原因不是程序没有重启,而是 EnvironmentFile 路径、变量格式、服务管理器缓存和实际进程环境不一致。本文按现场症状、配置加载、进程核对和回滚顺序拆解一次排查。
-
Linux df -h 看着还有空间,服务却报 No space left on device?问题可能不是磁盘容量,而是 inode 已经耗尽。本文用 df -i、find 和小文件统计定位原因,给出可回滚的清理顺序,并用复测确认系统恢复。
-
前端开发服务器、文件同步工具突然报 ENOSPC,未必是磁盘满了。本文用 inotify 的三个内核限制拆开排查,找到实际占用进程,完成临时调整、持久化和回滚验证。
-
Ubuntu 22.04 升级到 24.04 后,Linux 服务可能因为环境变量来源、unit 覆盖方式和重载顺序不清而启动异常。本文用 Go 服务示例拆解迁移检查、EnvironmentFile 改写、回归验证与安全回滚。
-
Linux 出现僵尸进程时,进程已经结束,却因为父进程没有回收退出状态而暂时留在进程表里。本文用 ps 的 Z 状态、PPID 和父进程回收逻辑定位问题,再给出可回滚的处理顺序,避免一上来就误杀正常服务。
-
服务器重启后用 journalctl 只能看到当前启动记录,通常不是日志凭空消失,而是 journald 没有持久化到 /var/log/journal,或查询范围没有切到历史启动。本文从 --list-boots、Storage 配置、目录权限和验证命令排查。
-
Go 服务把日志写到固定文件后,文件会持续变大,直接删除又可能让进程继续写入已删除文件。本文从一个小型 Go 日志服务开始,配置 logrotate 的轮转、保留、压缩和 copytruncate,再用状态文件与实际文件大小验证配置是否真的生效。
-
Linux 服务手工启动正常,交给服务管理器重启却提示找不到命令或配置,通常不是程序突然坏了,而是启动环境与登录 Shell 不同。本文用一个 worker 服务复盘 PATH、EnvironmentFile、工作目录和 journal 日志之间的排查顺序。
-
Linux 上部署一个常驻业务服务时,服务单元与 Docker Compose 的差别不只在于是否容器化。用启动依赖、日志入口、恢复方式和回滚颗粒度四个维度,判断订单、接口等服务该选哪条路径。
-
关闭 SSH 密码登录前,最怕的是把自己锁在服务器外。本文从资产、入口和回退路径出发,配置 PermitRootLogin、PasswordAuthentication、AllowUsers,并用 sshd -t 和双会话验证降低误操作风险。
-
不少 Linux 服务以专用用户运行,却仍能读写过多宿主机路径。本文围绕只读根、PrivateTmp、NoNewPrivileges 和 ReadWritePaths 收紧写入面,并给出上线前检查与回退方法。
-
日志归档不应只是一条 tar 命令。本文给出一个 Bash 最小脚本:固定来源路径、按天生成压缩包和 SHA-256 清单、校验后清理过期归档,并说明失败时如何保留原日志。
-
Linux 的 load average 不只统计正在抢 CPU 的任务,也会计入等待 I/O 的不可中断任务。遇到负载高而 CPU 看似空闲时,先对齐 uptime、/proc/loadavg、vmstat 和进程状态,再确认具体等待点与磁盘或网络存储的时间关系,避免一上来扩容或杀进程。