#Linux
共 121 篇文章
Docker 容器启动后,宿主机新挂载的 USB 目录仍显示为空
Linux Docker bind mount 默认 rprivate,不会接收后来创建的子挂载。核对宿主机 shared 条件,再选择 rslave 单向传播或先挂载后创建容器。
mkdir -p -m 700 后父目录权限仍是 755
mkdir 的 -m 只影响明确指定的新目录,自动补建父目录按 umask 处理。区分已有路径,使用受限掩码建立新目录树,并定向调整已审查目录。
Bash 写了 2>&1 仍漏掉错误日志:重定向顺序相反
Bash 从左向右处理重定向。2>&1 放在输出文件重定向之前,会让错误保留在旧目的地;用两路输出探针核对,并区分覆盖与追加。
Alpine 容器 tar 报 Operation not permitted:检查 fchmodat2 与运行时策略
Alpine 容器 tar 报 Operation not permitted 时,区分文件权限与 fchmodat2 策略拒绝,核对实际 Docker、BuildKit 和 libseccomp,撤回放宽隔离的诊断例外。
Docker 构建在大 UID 的 useradd 步骤卡住并大量占用磁盘
Linux 镜像创建大 UID 账号时,lastlog 或 faillog 初始化可能产生巨大稀疏记录并拖慢层处理。使用支持该选项的 useradd --no-log-init,保留原身份并验证磁盘占用。
docker top 和容器内 ps 显示不同 PID,按进程号诊断时找不到目标
docker top 与容器内 ps 使用不同的 PID 视角。限定原生 Linux 环境,用命名空间状态字段核对对应关系,避免读错 /proc 路径或复用已过期的进程号。
Docker BuildKit 构建最终镜像时跳过测试阶段
Dockerfile 写了测试阶段却没有执行:BuildKit 只构建目标需要的阶段。通过显式测试目标或调整发布依赖接入测试,并区分阶段被跳过与缓存复用。
logrotate 配了 size 仍不轮转:先核对程序何时运行
日志超出 size 阈值仍未轮转时,先核对 logrotate 的调用时间与配置入口,区分 size、maxsize、minsize,再调整现有调度并检查归档与活动日志。
SSH 报 .pub 文件权限过宽
SSH 报 .pub 文件 Permissions 0644 are too open 时,先确认公钥是否被当作本地私钥读取。核对 IdentityFile、真实私钥权限和 agent 身份,避免只改公钥权限后继续遇到认证失败。
find -mtime +1 漏掉一天前的文件:时间先按完整天数取整
GNU find 的 -mtime +1 匹配至少 48 小时前修改的文件。按完整时间段、明确截止点或日历日选择条件,先核对边界名单,再接回归档或清理任务。
GNU tar 追加 tar.gz 文件时报 Cannot update compressed archives
GNU tar 不能对压缩归档直接执行追加或更新。将完整输入合并为一次创建,或先收集未压缩归档再压缩,避免重复 -c 覆盖和误删源文件。
GNU sort -g 在小数逗号环境中把科学计数值排错
点小数的科学计数值与 LC_NUMERIC 的小数逗号规则不一致时,sort -g 可能只读到整数前缀。用命令级 C locale 排序,并核对列号和浮点精度边界。
cut 按空格取第二列时,连续空格让结果变成空行
cut 以单个空格分隔时,相邻空格之间的空字段也占列号。对空格和 Tab 对齐的文本使用 awk 默认分割,并检查缺失列和原样输出行的差异。
Linux 用 cp 覆盖运行中的程序时报 Text file busy
Linux 用 cp 覆盖运行中的程序报 Text file busy 时,检查实际执行映像;安排正常停机安装,或按同挂载点原子替换流程发布,再核对运行版本。
脚本写了 #!/bin/bash,运行仍报 Bad substitution:检查是否用 sh 启动
Bash脚本首行正确仍报Bad substitution时,检查是否由sh读取,修正真实任务入口并保留合适执行权限。
ln -s 已创建链接,打开却报 No such file or directory:相对路径基于链接目录
ln -s 跨目录创建后目标不存在,按链接父目录解释相对路径;GNU -r 自动生成时保留路径规范化和不覆盖已有文件条件。
find 两个名称加 -print 后漏结果:OR 分支没有共享输出动作
find 的隐式 AND 优先于 OR,左侧匹配后可能跳过右侧 -print。为名称条件分组,让类型约束与输出动作覆盖两个分支,并区分显式动作和默认打印。
systemd ExecStart 写了管道和 tee,日志文件却没有创建
ExecStart 直接写 | tee 不会启动 shell 管道。根据日志去向改用 journal 或有版本条件的 append 输出,核对用户服务范围、权限、覆盖文件和重启后的记录。
sudo -u postgres psql 报 command not found,切换用户登录后却能运行
sudo切换postgres身份找不到psql,检查secure_path与客户端完整路径,避免用sudo echo判断或取消全局路径策略。
Dockerfile ADD 使用 SHA-512 校验时报 digest mismatch
HTTP ADD 的 checksum 只支持 SHA-256。区分算法不支持与同算法内容不符,取得可信预期摘要,保留现有 SHA-512 验证要求。


