linux技术文章
-
Linux 进程句柄持续上涨时,不要先调高 nofile。本文用 /proc/PID/fd 统计并聚类文件、deleted、socket、pipe 和 anon_inode,再结合 fdinfo、limits 与系统 file-nr 缩小泄漏资源,最后把资源簇映射回真正负责关闭的代码路径。292 收藏 -
nfsstat -m 可以直接列出当前 Linux 客户端已挂载的 NFS 文件系统。本文按字段解释服务器、挂载点、NFS 版本和 Flags,并说明如何用 /proc/mounts 补充核对,避免把客户端观察结果误当成服务端配置。292 收藏 -
OpenSSH agent 转发保留私钥文件,却会暴露签名请求能力。本文给出限定跳板机、专用 agent 身份、ssh-add 目的路径与有效期的最小示例,解释主机公钥、协议支持和任务结束撤销边界。291 收藏 -
Linux 上普通用户运行的服务默认不能绑定 1024 以下端口。本文用 setcap 为单个可执行文件授予 CAP_NET_BIND_SERVICE,演示 getcap 验证、服务启动检查、文件替换后的能力丢失,以及 setcap -r 撤销和复查。290 收藏 -
Bash 管道默认只返回最后一个命令的状态,容易掩盖中间失败。本文说明如何启用 pipefail,让失败状态传到管道外层,并用 PIPESTATUS 区分各段命令,同时处理 set -e 和预期失败的边界。290 收藏 -
Linux 排查文件被进程占用时,用 lsof 定位 PID、用户、文件描述符和打开模式,并处理权限不足、软链接、目录范围和 deleted 文件等常见误判。289 收藏 -
Linux 下使用 ripgrep 时,用 -l 或 --files-with-matches 只输出包含匹配内容的文件路径;本文进一步区分 --files、--files-without-match、glob、隐藏文件和 -uuu 的边界。289 收藏 -
CPUWeight 调整同级竞争中的相对份额,CPUQuota 限制 CPU 时间预算。结合运行时配置、父级 slice 和统计字段,解释资源分配差异与排查顺序。289 收藏 -
用 journalctl 同时限定 systemd unit 与当前系统启动,掌握 --list-boots、boot ID、时间范围和服务重启边界,快速定位本次启动中的 Linux 服务日志。288 收藏 -
logrotate 轮替后应用继续写旧日志,通常是进程仍持有旧文件描述符。本文用 /proc//fd 定位 inode,并比较 postrotate 重载与 copytruncate 的适用边界。 285 收藏 -
用同名 service 与 timer 配置每日固定时刻任务,说明日历表达式、显式时区、精度窗口、停机补跑以及计划与业务结果的区别,并给出启用、查看与暂停命令。285 收藏 -
Linux BPF map 是内核 BPF 程序与用户态之间交换数据的通用容器。本文从 map FD、key/value 尺寸和 libbpf lookup 入手,说明普通 map、per-CPU map、查找错误与 pin 生命周期的处理方式。285 收藏 -
排查容器或服务目录不一致时,先读取 /proc/PID/ns/mnt 确认 mount namespace,再查看目标进程的 mountinfo,最后用 nsenter 从同一挂载视图检查目录;本文还区分根目录不同、权限不足和 PID 复用。284 收藏 -
Linux systemd 的 ExecStartPre 可以在主进程启动前检查配置文件。本文用 test -s 说明硬失败闸门,比较 ExecStartPre、ExecCondition 与忽略失败的区别,并整理 unit 重载、解析结果和日志排查方法。284 收藏 -
Linux GNU tar 使用 --listed-incremental 和快照文件制作增量归档:先建立 level 0 基线,再按顺序创建变化层,并说明恢复顺序、快照文件、时间戳、设备号和 GNU 格式边界。284 收藏