df 命令无法直接检测网络卷连接状态,超时阻塞即表明异常;可用 timeout 5 df -h | grep -e 'smb|afp|nfs|//|/volumes/' 快速判断存活,无输出或超时即断连;结合 mount、stat 和 ping 可识别假挂载与量化延迟。

macOS 的 df 命令本身不直接显示网络挂载卷(如 SMB、AFP、NFS)的连接状态或延迟,它只报告已成功挂载且内核能访问的文件系统使用情况。若网络卷断连、卡死或响应超时,df 往往会阻塞等待(hang),甚至长时间无输出——这本身就是一种“状态异常”的信号。
用 df 检测挂载卷是否存活(简单但有效)
在终端中运行:
timeout 5 df -h | grep -E 'smb|afp|nfs|//|/Volumes/'
说明:
-
timeout 5限制命令最多执行 5 秒,避免因挂载点无响应而卡住终端; -
df -h列出人类可读的磁盘使用信息; -
grep筛选常见网络卷路径特征(如//server/share、/Volumes/MyNAS、协议关键字); - 若无输出或报错
Operation timed out,大概率该卷已断连或服务不可达。
识别“假挂载”:df 显示但实际不可访问
某些网络卷(尤其是 SMB)在连接中断后仍保留在 /Volumes/ 下,df 能列出但 ls /Volumes/MyShare 会卡顿或报 Connection refused。此时需进一步验证:
- 执行
mount | grep 'smb\|afp\|nfs'查看实际挂载参数和状态; - 尝试轻量级访问:
stat -f "%Sm" /Volumes/MyShare 2>/dev/null(获取修改时间,快失败则说明不可用); - 检查挂载选项是否含
noauto或soft(NFS)——soft模式下超时更快返回,hard则易卡死。
监控延迟:用 ping + stat 组合替代 df
要量化延迟,df 不适用,推荐组合方式:
- 对 SMB/AFP 服务器 IP 或主机名执行
ping -c 3 server.local判断基础连通性; - 用
time stat /Volumes/MyShare/.hidden_test 2>/dev/null测真实 I/O 延迟(提前在共享根目录放一个空文件); - 若
time显示耗时 >1s 或报错,说明共享响应慢或挂起,比df更早发现问题。
自动化脚本建议(轻量级健康检查)
可写一个每分钟运行的检查脚本(例如放入 launchd):
- 遍历
/Volumes/*中疑似网络卷的路径; - 对每个路径执行带 timeout 的
stat和df -i(检查 inode 可用性更敏感); - 记录超时次数,连续 3 次失败则触发通知(
osascript -e 'display notification...')或自动 umount/reconnect。










