Linux cd 和 df 命令执行异常

这篇记录一些奇奇怪怪的命令执行异常的情况,后续有新的发现也会补录进来

情况一 /tmp 目录权限导致 按 tab 补充报错

情况描述

cd 按 tab 自动补充文件报错(普通用户

复制代码
bash: cannot create temp file for here-document: Permission denied

处理办法

因为原先修改 /tmp 目录权限忘了改回来碰到的,把 /tmp 执行权限恢复以后,就正常了。

补充信息

按照上述的情况,按 tab 是需要 /tmp 目录下创建临时文件的,但是我通过检测没看到有新增的文件出来,所以不是很清楚原因,按 tab 还不能通过 strace 追踪,就更迷糊了。

复制代码
watch -d ls -al /tmp

补全的实现种类

  • Bash补全 :Bash是Linux中最常用的shell之一,它通过名为bash-completion的包提供Tab补全功能。安装此包后,可以通过.bashrc.bash_profile文件配置补全行为。
  • Zsh补全:Zsh是另一种流行的shell,它具有更高级的补全系统,通常被认为比Bash的补全功能更加强大和灵活。

我检查了,8版本的系统上面,这两个包都存在。

复制代码
# 这个目录里面定义了对应命令的填充脚本的方式
/usr/share/bash-completion/completions
# 支持自定义的补全脚本
~/.bash_completion

Bash补全机制

  • 当用户输入命令的一部分并按下 Tab 键时,Bash 会尝试查找对应的补全脚本。
  • 补全脚本可能会使用以下机制来实现补全:
    • 静态补全:对于一些固定的选项或参数,脚本可以直接定义它们
    • 动态补全:对于一些需要实时计算的补全,如文件名或命令输出,脚本可能会执行外部命令来获取可能的补全选项
    • 模式匹配:脚本可以使用正则表达式来匹配用户输入,并提供与之匹配的补全建议
    • 上下文感知:脚本可以检查用户已经输入的内容,根据上下文提供相关的补全建议

情况二 nfs 无法访问导致 df 命令执行异常

情况描述

巡检脚本没有正常结束,复现发现是 df 命令无响应

复制代码
df -Th    # 无响应 打印文件系统类型
df -lh    # 正常   只打印本地文件系统

处理步骤

1、按经验判断,这种就是 nfs 无法访问导致的,执行 mount 看看是否存在 nfs 挂载就行了

2、如果没碰到过,可以用 strace df -Th 去看看最终在哪卡住,再分析也能找到原因

3、处理办法就是先恢复 nfs ,然后卸载重新挂载即可(自行评估影响)


情况三 df 命令卡住且无法 kill

情况描述

这个不同于上面 nfs 异常导致的 df 命令卡住,这个甚至都无法 kill 进程

分析步骤

1、登录服务器复现问题,发现df命令执行会卡住,且进程无法kill

2、strace df -Th 追踪执行情况,发现执行最终停止在 /proc/sys/fs/binfmt_misc

复制代码
# strace df -Th
... ...
stat("/sys/kernel/config", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
stat("/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/proc/sys/fs/binfmt_misc", 
^C
^C
Process 20192 detached
<detached ...>

3、上网搜索这个问题,df 执行到 /proc/sys/fs/binfmt_misc 报错

Linux 使用命令df -h 卡住 解决方法-CSDN博客

df 被 hang 住,无法查看磁盘使用情况解决 - 简书

4、重启如下服务恢复,原因不明

复制代码
systemctl restart proc-sys-fs-binfmt_misc.automount

这篇笔记里面好几处问题都没有找到原因,有了解的朋友可以评论讨论一下,谢谢!

相关推荐
网络系统管理5 分钟前
第八届江苏技能状元大赛选拔赛信息通信网络运行管理项目模块D网络服务与系统运维-Linux样题
linux·运维
Sunny_202283711 分钟前
CAD在执行移动命令的时候按正交F8,老是卡住
运维·pccad插件、cad·pccad个人免费版·免费cad插件
凡人叶枫30 分钟前
Effective C++ 条款24:若所有参数皆须要类型转换,请为此采用 non-member 函数
linux·前端·c++·算法·嵌入式开发
零陵上将军_xdr33 分钟前
Shell流程控制:if/case/for/while让脚本活起来
linux·运维·服务器
坤昱40 分钟前
cfs调度类深入解刨——pelt细节篇
linux·linux内核·cfs调度·eevdf·cfs调度类深入解刨·pelt·pelt细节篇
故渊at1 小时前
第十二板块:Android 系统启动与初始化 | 第二十九篇:Init 进程、RC 脚本与属性服务(Property Service)
android·linux·内存映射·权限控制·init进程·rc脚本·属性服务
志栋智能1 小时前
从云端到边缘:无处不在的超自动化巡检需求
运维·自动化
某林2121 小时前
ROS2 并行编译死锁与 Linux 后台声卡/提权踩坑实录:大型轮足机器人架构复盘
linux·架构·机器人·iassc
无足鸟ICT1 小时前
【RHCA+】末行模式
linux
拼搏的小浣熊1 小时前
【通用教程】Windows\+Linux\+银河麒麟系统 固定静态IP地址|解决打印机扫描IP变动、网络掉线问题
linux·网络·windows·麒麟·固定ip·麒麟系统·统信系统