Linux 系统
共 111 篇文章
sudo source 报 command not found,环境变量没有传给后续命令
source 是 Bash 内建命令,sudo 不会自动调用 Shell 解释它。按变量用于当前终端还是提权程序,选择直接加载或在同一次 Bash 调用中加载并启动程序。
Bash =~ 正则加引号后始终不匹配
Bash 将被引用的正则部分按字面匹配。通过区分变量赋值与匹配处的引用,修正条件表达式,并正确处理返回状态和 BASH_REMATCH 捕获结果。
grep -c 同一行多次匹配只计一次,统计结果偏小
GNU grep 的 -c 统计匹配行数。用 -o 分离非空匹配后计数,并区分无匹配、读取失败,以及完整单词、重叠和空匹配的不同要求。
xargs 删除已有文件却报 No such file:转义引号成了文件名的一部分
xargs 处理带空格文件名时,转义双引号被当作路径字符,导致已有文件仍找不到。区分 shell 引用与参数内容,用 NUL 分隔并保留删除恢复条件。
APT 更新 Docker 软件源时报 Signed-By 冲突
APT 更新 Docker 软件源时报 Signed-By 冲突。定位同一仓库的重复 .list 与 .sources 条目,备份后只停用确认多余的配置,保留签名验证,并核对索引更新、软件包来源和回退路径。
systemd timer 只执行一次:oneshot 服务仍是 active (exited)
systemd 定时器只执行一次且服务保持 active (exited) 时,检查 RemainAfterExit;一次任务应结束为 inactive,带 ExecStop 的服务须先核对生命周期。
Linux 脚本已有执行权限,运行仍报 Permission denied
Linux 脚本已有执行位仍报 Permission denied 时,检查实际路径的 noexec 挂载限制,区分解释器读取与直接执行,并选择迁移目录或调整挂载策略的处理方式。
journalctl vacuum 后仍超过容量:清理只作用于归档日志
journalctl 清理后总占用仍超过 vacuum-size 时,区分活动与归档日志,核对范围,再按保留策略轮转清理和配置长期预算。
GNU date 只在某一天报 invalid date:检查历史时区中不存在的午夜
GNU date 在特定历史日期报 invalid date 时,核对默认午夜、任务时区与时钟切换规则,再按日历日期或真实时刻的业务含义选择处理。
Bash 用 [ ! -a 文件 ] 判断不存在却总进入真分支
Bash 的三参数 test 优先把 -a 解析为逻辑与,使非空文件名不再接受存在性测试。改用 -e,并区分悬空链接和路径访问失败。
sed -i 后符号链接变成普通文件:原地编辑会替换路径
GNU sed -i 把符号链接换成普通文件时,核对链接与最终目标,按 --follow-symlinks 处理,并分别保留链接关系和目标内容备份。
Linux SSH 报 Bad owner or permissions on ~/.ssh/config
Linux OpenSSH 报 Bad owner or permissions on ~/.ssh/config 时,检查本地配置的所有者和组写权限。针对实际文件修正,保留配置内容,并区分配置读取通过与远程认证成功。
Linux 文件监听报 ENOSPC
Linux 开发服务或编辑器报文件监听 ENOSPC。定位同一用户占用的 inotify 监听项,缩小监听范围,再按需调整上限;说明远端、容器构建、旧版 Backstage 的适用条件及回退。
systemd 读取 EnvironmentFile 后,路径仍包含 ${BASE} 字面量
EnvironmentFile中的路径含变量名时,区分systemd与shell解析。静态值写完整,动态组合集中到受控启动脚本。
tar 写了 --exclude 仍报 file changed as we read it:排除选项放在了输入后面
归档输出放在输入目录内,排除选项又放在输入参数后,GNU tar 会读到正在变化的归档目录。调整选项顺序与输出位置,并区分真实业务写入。
du -h 的结果用 sort -n 排序,52K 却排在 2G 后面
du -h 输出 K/M/G 后接 sort -n 排序错位,按 GNU human 排序或固定字节单位处理,保留统计范围、精度及读取错误。
Bash 路径变量含 ~/ 时,ls 报 No such file or directory
双引号里的波浪号保持字面值,变量展开不会重新解释路径语法。用 HOME 构造主目录路径,并保留参数引用和运行身份边界。


