Linux 系统
共 111 篇文章
sed 替换带 & 的文本后内容重复:替换侧的 & 会插入整个匹配
sed 替换 SAS 宏变量时,替换侧的 & 插入原匹配内容。转义字面 & 与搜索点,先比较输出,GNU 原地编辑保留可恢复备份。
grep 用 \d+ 筛选行尾编号却匹配不到日志
筛选 Patient 后仅有一个编号的日志时,要同时处理 grep 的正则方言与行尾锚点。使用 -E、ASCII 数字范围和明确空白条件,避免只加 -P 后继续错选。
GNU tar 打包绝对路径时提示 Removing leading /
GNU tar 默认移除归档成员名称开头的斜杠。用 -C 明确归档内部的相对路径,核对目录结构,避免为了消除提示而启用绝对路径恢复。
Bash 后台命令失败仍返回成功:无参数 wait 不汇总子进程错误
Bash 开启 set -e,后台任务失败却仍显示成功时,检查是否使用无参数 wait。保存各任务 PID,逐个收集退出状态,并明确剩余任务和副作用。
diff 内容相同,rsync 仍重复列出待更新文件
diff 内容相同而 rsync 仍列出待更新文件时,用 -i 分辨传输和属性更新,再用校验和预演核对修改时间差异,保留必要的备份属性。
GNU timeout 分两次执行,无法先发 INT 再强制结束同一进程
GNU timeout 的 --kill-after 从首个信号发出时开始计时。将 INT 和 KILL 安排在一次调用中,区分主时长、追加宽限时间、返回状态和 foreground 的子进程限制。
nohup 把 APP_MODE=test 当作命令,报 No such file or directory
环境赋值放在 nohup 后面会被当作程序名。使用 env 或将赋值放到命令前,区分变量作用范围,并用隔离日志验证传递结果。
systemctl unmask 后仍报 Unit is masked:检查实际 unit 文件
systemctl unmask 后仍被屏蔽时,查 unit 的实际路径、空文件或 /dev/null 链接,再区分管理员屏蔽、软件包策略与自建配置损坏。
ext4 的 df 可用空间少于总量减已用:检查保留块
ext4 的 df 总量减已用大于 Available 时,按相同单位比较,读取保留块与块大小,区分普通用户可用空间,调整前保留策略与恢复条件。
GNU sed -i 使用输入重定向时报 no input files
输入重定向只连接标准输入,不会传入原地编辑所需的文件路径。区分查看转换输出和保存回文件,修正参数并保留可恢复备份。
systemd 找不到 ${APP}:ExecStart 的程序名不能用环境变量
ExecStart=${APP} 找不到程序时,区分程序名和参数的变量规则,用 drop-in 清除旧命令并写入固定路径,再检查重载、重启结果与回退范围。
find 报 Argument list too long:不要把海量文件展开成搜索起点
缓存清理时 find 尚未启动就报 Argument list too long,改用目录起点与带引号的 -name,并核对深度、隐藏文件、日龄和删除范围。
ulimit 很高,服务仍报 Too many open files:查实际进程软限制
终端 ulimit 很高而服务报 Too many open files 时,读取实际 PID 软限制,按启动链设置 unit 或应用限制,并核对高编号支持与泄漏。
cron 报 command not found,终端却能执行:先区分 PATH 与任务隔离环境
cron 中找不到终端可用命令时,检查任务自己的 PATH、账户及解释器;绝对路径仍不存在时,继续检查面板隔离文件系统。
root 删除文件报 Operation not permitted:检查 immutable 属性
root 删除文件仍报 Operation not permitted 时,检查目标和父目录的 immutable 属性,再按授权范围解除保护;区分只读挂载与普通权限错误。
修改主机名后 sudo 报 unable to resolve host
修改主机名后,sudo 提示 unable to resolve host。比较当前名称、/etc/hostname 与 NSS 解析结果,确认旧 hosts 映射后备份修正,并检查 sudo、云主机配置覆盖和回退方法。
日志轮转后 tail -f 不再显示新内容:按文件名继续跟踪
日志轮转后 tail -f 没有新输出时,确认新文件是否已写入,区分描述符跟踪与名称跟踪,用 GNU tail -F 处理同名替换并保留日志采集边界。


