linux技术文章
-
Linux epoll 的 ET(边沿触发)模式不是只读一次,而是每次收到事件后把非阻塞 fd 处理到 EAGAIN。本文解释剩余数据为何不再提醒、给出 recv 循环的错误分支,并补上 EOF、EINTR 和单连接饥饿的排查要点。414 收藏 -
Linux 根分区明明还有空间,tmpfs 却提示已满怎么办?本文从挂载点、size、nr_inodes、Shmem 和 cgroup 五个角度排查,并给出安全清理与 remount 调整方法。204 收藏 -
排查容器或服务目录不一致时,先读取 /proc/PID/ns/mnt 确认 mount namespace,再查看目标进程的 mountinfo,最后用 nsenter 从同一挂载视图检查目录;本文还区分根目录不同、权限不足和 PID 复用。284 收藏 -
Linux inotify 报监听数量不足时,不要只调大 max_user_watches。本文按 watch、实例和事件队列拆分限制,演示如何读取 sysctl、统计进程 fdinfo,并安全持久化参数。100 收藏 -
用 journalctl 先确认启动批次,再组合 unit、boot 和 since/until 条件定位 Linux 服务日志,并处理空结果、权限和持久化边界。371 收藏 -
systemd timer 的 OnCalendar 出现重复执行时,重点检查重叠日历表达式、多个 timer 共用服务以及 Persistent 补偿触发。本文给出一套可复查的配置和排障方法。144 收藏 -
systemd 的 Restart=always 只负责决定是否重启,RestartSec 和 StartLimit 参数决定重试节奏与上限。本文从退出码、journal、依赖关系和恢复步骤排查服务失败循环。167 收藏 -
Linux cgroup v2 的 io.max 按块设备 MAJ:MIN 设置读写字节速率或 IOPS,并通过 cgroup.procs、/proc/PID/cgroup 和 io.stat 复查限额是否落到目标进程。435 收藏 -
通过 Linux cgroup v2 的 cpu.max 读取 MAX 和 PERIOD,换算进程可用 CPU 配额,并结合 cpu.stat 区分真正的限流、CPU 权重与 cpuset 边界。297 收藏 -
排查 Linux cgroup v2 内存限制时,不能只看 memory.max 是否是数字。沿着进程的 cgroup 路径读取 memory.max、memory.current 和 memory.events,才能判断是否配置上限、是否接近上限,以及是否已经发生触顶或 OOM。216 收藏 -
logrotate 轮替后应用继续写旧日志,通常是进程仍持有旧文件描述符。本文用 /proc//fd 定位 inode,并比较 postrotate 重载与 copytruncate 的适用边界。 285 收藏 -
Linux 终端里的 ulimit -n 调高后,服务仍可能因为启动链不同而报 too many open files。本文从 /proc/PID/limits 入手,区分 shell、systemd、容器、单进程 RLIMIT_NOFILE 与系统级 file-max,给出可复查的修复路径。275 收藏 -
Linux 使用 mount --bind 后执行 umount 报 target is busy,通常要先让 shell 和服务离开目标目录,再区分工作目录、打开文件、子挂载与传播状态逐项排查。476 收藏 -
Linux 的 ss 把监听套接字和已建立连接视为不同状态。本文解释 -l、-a、state listening 与 state established 的区别,并给出按端口、地址和进程核对连接的命令。244 收藏 -
Linux 中用 curl 上传文件时,不要只看命令是否结束。通过 -o 保存响应体、-w 输出状态码与退出码,再配合 --fail-with-body,脚本就能同时保留错误详情并可靠判断上传结果。115 收藏