在 UNIX/Linux 系统中确实会遇到一些看似奇怪的行为或现象,这通常与系统特性、配置或环境相关。以下是几个常见"奇怪"场景及其解释/解决方案:
rm 删除文件后,df 显示空间未释放。bash
lsof | grep deleted # 找到占用文件的进程
kill <PID> # 重启相关进程
或清空文件内容:
bash
> /path/to/deleted_filebash
ls -li /path # 检查 inode
mount | grep /path # 检查挂载点
echo -n "/path" | xxd # 查看路径的十六进制(检查隐藏字符)./script.sh 报 Permission denied,但权限为 -rwxr-xr-x。noexec。#!) 解释器路径错误。bash
mount | grep /path # 检查挂载选项
head -1 script.sh # 确认 Shebang 路径Ctrl+Q(XON)继续输出。bash
stty -ixon # 添加到 ~/.bashrc 永久生效ps 显示进程名为 -bash 或方括号 [ ]-bash:登录 Shell(首字符 - 表示是登录进程)。[kthreadd] 等:内核线程(方括号是内核标记)。df 和 du 显示结果不一致bash
du -sh /path; df -h /path
ls -ls sparse_file # 第一列为实际磁盘块数sudo 后环境变量丢失sudo 默认重置环境(出于安全)。bash
sudo -E command # 保留当前环境
sudo env PATH=$PATH command # 传递特定变量tar 解压后文件时间戳变化-m(保留原时间)或 -p(保留属性)选项。bash
tar -xzpvf file.tar.gz --preserve-permissions --same-ownergrep 匹配不到已知存在的文本\r\n)。bash
grep -a "text" file # 强制按文本处理
dos2unix file # 转换换行符kill -9 无法终止进程D 状态(不可中断的休眠,通常由内核 I/O 操作导致)。bash
ps -l | awk '$2=="D"' # 查找 D 状态进程D 状态进程)。bash
tail -f /var/log/syslog # 或 /var/log/messages
dmesg | tail # 内核日志strace 追踪系统调用:
bash
strace -f -o debug.log <command>遇到具体问题时,提供以下信息可更快定位原因:
- 完整的命令和报错信息。
- 相关文件的权限、属组(ls -l)。
- 系统版本(uname -a)。
是否有某个具体场景需要深入分析?