-
同一个 systemd 服务反复重启后,journalctl -u 容易混入多个运行周期。本文讲清 invocation ID 的含义,给出 v257+ 的 --list-invocations、--invocation、-I 用法,以及旧版本按 _SYSTEMD_INVOCATION_ID 字段筛选的兼容方案。
-
用 journalctl --list-boots 查看启动轮次和 BOOT_ID,再用 -b 选择当前或上一轮启动,最后用 --since 与 --until 缩小故障时间窗口。
-
systemd-tmpfiles 可以用一条 tmpfiles.d 规则同时维护目录权限与过期清理。本文说明 d 类型、Age 字段、--create 与 --clean 的区别,以及为什么只看 mtime 可能误判。
-
把 Linux 服务改成 DynamicUser=yes 后,原来写在 /var/lib 下的目录很容易因为属主和目录创建时机出问题。本文用 StateDirectory=cache-worker 迁移一个缓存 worker,解释目录权限、旧数据迁移、重启复测和回滚边界。
-
从 Linux 服务的 MemoryMax 限制出发,结合 memory.events 和 journalctl 证据判断 OOM 来源,再给出安全的恢复、调参与回滚检查。
-
用 mount namespace 隔离临时挂载时,关键不是只加 -m,而是同时处理挂载表副本、传播属性、权限和清理边界。本文给出 unshare 示例与检查清单。
-
Linux load 高并不一定能说明业务正在等待什么资源。本文用 PSI(Pressure Stall Information)读取 /proc/pressure/cpu、memory、io,解释 some 与 full、avg10/avg60/avg300 的含义,并给出从判断压力类型到设置 poll 阈值的排查和告警方法。
-
解释 Go runtime.SetFinalizer 让对象在终结器调用期间重新可达的运行时语义,结合最小示例说明终结器队列、复活窗口、KeepAlive 与生产替代方案。
-
Linux 服务器的 swap 使用量升高,不等于内存已经泄漏或必须立刻关闭交换。本文用 vmstat 的 si/so、free 的可用内存、磁盘 I/O 和 /proc/sys/vm/swappiness 组成证据链,区分偶发换出、持续抖动与真实内存压力,并给出可回滚的处理顺序。
-
Linux inotify 大规模监听应先缩小目录范围,再分别预算 watch、instance 和队列资源。本文说明目录级迁移、fdinfo 计数、事件合并、溢出恢复与回归场景,避免只提高限制却继续丢事件。
-
Linux cgroup v2 出现内存告警时,不要只盯着 memory.current。本文用 memory.events、memory.events.local、memory.high 和 memory.max 组成证据链,区分回收压力、硬限额命中与 OOM,并给出可复查的命令顺序。
-
Linux inotify 队列溢出后不会补发丢失事件,本文说明如何识别 IN_Q_OVERFLOW,通过全量扫描、缓存重建和递归 watch 重建恢复完整状态。
-
Linux 使用 rsync 增量同步时,结合默认临时文件、--partial-dir 和 --delay-updates,降低中断或多文件发布时半成品覆盖目标的风险。
-
Linux 使用 ss 排查连接时,应先用 state 在内核返回阶段限定 TCP 状态,再用 -p 显示进程归属;按进程名或 PID 可做固定字符串过滤,systemd 服务还可使用 cgroup 条件。本文给出可复制命令、权限说明与选型表。
-
Linux lsfd 按进程查看文件描述符时,优先使用 --pid 在采集阶段缩小范围,再用 --output 固定列、--filter 细化 FD、TYPE、NAME 等字段。本文给出单 PID、多 PID、按进程名取 PID 和脚本化输出的写法,并说明权限与容器边界。