-
Linux 下排查 Too many open files 时,ulimit -n 用来读取当前 shell 的文件描述符上限。本文区分软上限与硬上限,说明 ulimit -Sn、ulimit -Hn、ulimit -a 和 /proc/self/limits 的关系,并解释为什么服务进程的值可能不同。
-
Linux find 排除目录的关键是把匹配目录放在 -prune 左侧,再用 -o 连接真正的筛选条件。本文从单目录写法扩展到多目录、特殊文件名和 -delete 边界,帮助你稳定递归搜索。
-
/proc/self/mountinfo 的一行记录同时包含挂载树定位、路径、单挂载选项、传播字段和超级块选项。本文用连字符分隔规则拆解字段,并给出不会因可选字段数量变化而错位的 Shell 与 Python 解析方式。
-
systemd-analyze blame 可以按 unit 初始化耗时排序,帮助快速找出启动排查线索,但耗时靠前不等于服务就是根因。本文结合 systemd-analyze time、blame 和 critical-chain,说明怎样定位慢服务、核对依赖并识别统计边界。
-
Linux 下使用 stat 查看符号链接时,默认结果对应链接自身;加上 -L 才会切换到目标文件。本文用 GNU stat 的参数和格式化字段说明两者差异,并整理悬空链接与脚本化读取时的边界。
-
systemd.automount 可以让文件系统在访问挂载目录时再激活对应的 .mount 单元。本文从单元命名、Where 配置、目录权限、空闲卸载和发布检查几个方面,整理一套适合生产环境的按需挂载写法。
-
介绍 coredumpctl 按崩溃 PID 导出 core 的命令,说明时间与程序路径筛选、最新匹配语义、COREFILE 状态,以及元数据和二进制转储的区别。
-
Type=notify 让 systemd 等待应用明确发送 READY=1,再把服务视为启动完成。本文从启动边界、NotifyAccess=、通知时机、服务类型取舍和排障清单说明怎样正确使用 systemd.service notify。
-
systemd.exec 可以通过 ProtectSystem、ProtectHome、ReadWritePaths 和 InaccessiblePaths 建立服务专属的文件系统视图。本文从资产清单出发,给出一份最小写入目录的 unit 配置,并说明挂载传播、特权进程和 user service 的边界。
-
用同一个目标 PID 组合 nsenter 的 --net 与 --mount,进入目标进程的网络和文件路径视图;本文说明最小命令、只读检查方式、权限与共享挂载边界。
-
用原创 Linux socketpair 示例说明 EPOLLONESHOT 通知暂停与 EPOLL_CTL_MOD 重武装,解释完整掩码、非阻塞读取、事件计数及多线程连接所有权边界。
-
围绕 Linux cgroup v2 的 memory.stat,说明 anon、file、kernel、file_mapped 和 file_dirty 等字段怎样帮助区分匿名页、文件缓存与内核开销,并给出按键名读取和后续排查的方法。
-
io_uring 的 SQPOLL 由内核线程轮询提交队列,持续繁忙时可以减少提交系统调用;空闲超过 sq_thread_idle 后会休眠,并由 IORING_SQ_NEED_WAKEUP 协调唤醒。本文解释它与 IOPOLL 的区别、配置方式和资源边界。
-
journalctl 的 cursor 是日志条目的位置标识。本文对比 --cursor、--after-cursor、--show-cursor 和 --cursor-file,说明如何断点读取并避免重复处理日志。
-
比较 systemd 的 MemoryHigh、MemoryMax 与 MemorySwapMax,给出现有服务 drop-in 配置、组级内存观察方法,并解释父 slice、应用堆预算和 OOM 的适用边界。