linux技术文章
-
Linux PID namespace 的 init 进程不仅是命名空间里的 PID 1,还承担孤儿进程接管和子进程回收职责。本文从进程可见性、SIGCHLD、waitpid、/proc 和 namespace init 退出边界说明怎样避免僵尸进程,并给出最小可读的回收代码。206 收藏 -
Linux 监听 socket 的 backlog 不是一条队列:SYN_RECV 侧对应未完成握手的请求,accept 队列对应已建立但尚未被应用取走的连接。本文结合 ss、tcp_max_syn_backlog、somaxconn 和 listen(backlog) 说明怎样判断两侧压力。407 收藏 -
Linux epoll 的 LT 模式在复杂协议、连接状态较多或团队更重视排障时通常更易维护。本文比较 LT 与 ET 的触发语义、非阻塞契约、工作预算和关闭清理边界,给出服务端事件循环的选择依据。132 收藏 -
Linux inotify 大规模监听应先缩小目录范围,再分别预算 watch、instance 和队列资源。本文说明目录级迁移、fdinfo 计数、事件合并、溢出恢复与回归场景,避免只提高限制却继续丢事件。458 收藏 -
journalctl 的 --boot 负责选择启动批次,--priority 负责选择消息级别。本文用组合命令筛出启动期间的错误日志,并说明服务、内核、时间窗口、权限和空结果的处理边界。326 收藏 -
讲清 Linux fanotify 权限事件的初始化、目录标记、用户态策略判断和 FAN_ALLOW/FAN_DENY 响应边界。489 收藏 -
Linux 启动变慢时,systemd-analyze critical-chain 可以沿着目标单元的关键依赖链找出等待位置。本文按启动总览、关键链、blame、status 和 journalctl 的顺序排查,区分依赖等待与服务自身初始化耗时,并保留回滚路径。113 收藏 -
Type=notify 不把进程启动当成服务就绪,而是等待服务通过 NOTIFY_SOCKET 发送 READY=1。本文用一个最小 Python 服务和 unit 文件说明通知时机、NotifyAccess=main、检查命令、启动超时与回滚边界。436 收藏 -
通过重复recipient参数或接收者名单,让多个age接收者独立解密同一文件。示例解释公钥交付、私钥保管、多人解密、输出覆盖,以及旧密文无法在线撤销的限制。119 收藏 -
用 btop 的内存排序、过滤、暂停和详情面板定位 Linux 内存占用异常进程,再用 ps 与 /proc 做第二次确认,避免只凭一帧数据误判。190 收藏 -
Linux 中 bat 接入管道时通常会自动识别非交互输出,但要稳定关闭分页器,最直接的参数是 --paging=never。本文区分 bat 内置分页、外部 less、配置文件和 batcat 命令名。172 收藏 -
Linux 上用 restic 恢复指定标签快照中的一个目录时,先用 --tag 和主机条件筛选快照,再用具体 ID 或 latest 选择版本,最后用快照:子目录或 --include 限制恢复范围。本文同时说明 --path、--overwrite、--delete 和 --dry-run 的边界。123 收藏 -
fzf预览会启动外部命令,但文件内容不必被执行。用固定读取器、NUL分隔路径、字节限制与控制字符转义构建文件预览,并说明配置继承、兼容性和权限边界。154 收藏 -
Linux rclone copy只补齐源端内容而不删除目标多余文件,sync则以目标匹配源目录为目标并处理删除。本文用一个目录镜像小项目说明两者差异、dry-run、删除时机、--max-delete和--backup-dir的使用边界。220 收藏 -
Linux 下使用 ripgrep 时,用 -l 或 --files-with-matches 只输出包含匹配内容的文件路径;本文进一步区分 --files、--files-without-match、glob、隐藏文件和 -uuu 的边界。289 收藏