本文目录导读:

- 核心命令了解
- 方案一:卸载所有NFS挂载点(最简单、最推荐)
- 方案二:通过输入文件批量卸载指定列表(更可控)
- 方案三:卸载特定共享服务器或特定格式的目录
- 方案四:终极强制脚本(注意危险!)
- 安全建议(务必阅读)
- 快速一行命令(懒人版)
这是一个非常实用但也很有风险的操作,因为直接卸载NFS(网络文件系统)可能会导致正在使用该共享的应用程序崩溃或数据丢失。
为了安全且批量地卸载NFS共享,我们需要根据你的具体需求分场景处理,以下提供几种脚本方案,从最安全到最强制排列。
核心命令了解
- 常规卸载:
sudo umount /mount/point - 强制卸载:
sudo umount -l /mount/point(懒惰卸载,立即断开文件系统,清理完后才真正释放) - 卸载所有NFS:
sudo umount -a -t nfs或sudo umount -a -t nfs4
卸载所有NFS挂载点(最简单、最推荐)
如果你的目标是把系统中所有NFS相关的挂载点全部卸载,这是最直接的方式。
脚本1:卸载所有NFS类型挂载
#!/bin/bash
echo "开始卸载所有NFS共享..."
# 卸载所有类型为 nfs 或 nfs4 的挂载点
sudo umount -a -t nfs,nfs4
if [ $? -eq 0 ]; then
echo "所有NFS共享已成功卸载。"
else
echo "部分卸载可能失败(可能仍有进程在使用),尝试强制卸载中..."
# 另一轮强制卸载剩余未卸载的NFS
mount | grep -E "nfs|nfs4" | awk '{print $3}' | xargs -r sudo umount -l
fi
- 优点:一行命令搞定,无需知道具体路径。
- 缺点:会卸载所有NFS,包括系统重要的NFS(如某些NAS存储的根目录)。
通过输入文件批量卸载指定列表(更可控)
准备一个文本文件,列出所有你要卸载的挂载点路径,每行一个。
准备列表文件 nfs_list.txt:
/mnt/nas_data
/mnt/backup
/home/user/nfs_shared
/data/project_a
批量卸载脚本:
#!/bin/bash
LIST_FILE="nfs_list.txt"
if [ ! -f "$LIST_FILE" ]; then
echo "错误:找不到列表文件 $LIST_FILE"
exit 1
fi
echo "开始卸载列表中的NFS共享..."
while IFS= read -r mount_point; do
# 跳过空行和注释行
[[ -z "$mount_point" || "$mount_point" == \#* ]] && continue
echo "正在卸载: $mount_point"
# 先尝试常规卸载
sudo umount "$mount_point" 2>/dev/null
if [ $? -ne 0 ]; then
echo -e " \033[33m常规卸载失败,尝试强制卸载...\033[0m"
sudo umount -l "$mount_point" 2>/dev/null
if [ $? -ne 0 ]; then
echo -e " \033[31m卸载失败: $mount_point (可能不存在或权限不足)\033[0m"
else
echo -e " \033[32m强制卸载成功: $mount_point\033[0m"
fi
else
echo -e " \033[32m卸载成功: $mount_point\033[0m"
fi
done < "$LIST_FILE"
echo "批量卸载操作完成。"
卸载特定共享服务器或特定格式的目录
如果你想卸载来自某个特定服务器的所有共享,或者挂载点名称符合某个规律。
示例:卸载来自 168.1.100 的所有共享
#!/bin/bash
server_ip="192.168.1.100"
echo "正在卸载来自 $server_ip 的所有NFS共享..."
# 获取挂载该服务器的所有挂载点
mount_points=$(mount | grep "^$server_ip:" | awk '{print $3}')
if [ -z "$mount_points" ]; then
echo "没有发现来自 $server_ip 的挂载点。"
exit 0
fi
echo "即将卸载以下挂载点:"
echo "$mount_points"
# 逐个卸载
for mp in $mount_points; do
sudo umount "$mp"
# 可以加上 2>/dev/null 忽略错误,或尝试 -l
done
echo "卸载尝试完成。"
示例:卸载所有以 /nfs_ 开头的目录
#!/bin/bash
mount | grep -E "^.*:/.* /nfs_" | awk '{print $3}' | while read mp; do
sudo umount "$mp" 2>/dev/null || sudo umount -l "$mp"
done
终极强制脚本(注意危险!)
如果遇到“target is busy”错误,常规和 -l 都搞不定,你需要先找出占用进程并杀掉它们,然后再卸载。这会杀死你的应用程序!
#!/bin/bash
echo "警告:此脚本会强制终止占用NFS的进程并卸载!"
echo "你确定要这样做吗? (yes/no)"
read confirmation
if [ "$confirmation" != "yes" ]; then
echo "操作已取消。"
exit 0
fi
# 遍历所有NFS挂载点
mount | grep -E "nfs|nfs4" | awk '{print $3}' | while read mount_point; do
echo "处理挂载点: $mount_point"
# 查找并杀死占用该挂载点的进程
# 使用 fuser 命令(可能需安装)
if command -v fuser &> /dev/null; then
fuser -km "$mount_point" 2>/dev/null
sleep 1
fi
# 强制卸载
sudo umount -f "$mount_point" 2>/dev/null || sudo umount -l "$mount_point" 2>/dev/null
if [ $? -eq 0 ]; then
echo -e " \033[32m成功卸载\033[0m"
else
echo -e " \033[31m无法卸载 $mount_point (核心繁忙?)\033[0m"
fi
done
echo "操作完成。"
注意:
umount -f并非在所有Linux发行版上都支持NFS。
安全建议(务必阅读)
- 先检查占用:在批量卸载前,先运行
lsof /your/mount/point或fuser -m /your/mount/point看看谁在用。 - 不要卸载根目录或系统关键目录:确保你的挂载点列表里没有 、
/home、/var等,除非你确实知道它们在NFS上。 - 日志记录:建议在脚本中加入日志,
LOG_FILE="unmount.log",将每步操作写入日志以便回溯。 - 测试环境验证:先在少量挂载点上测试脚本,再全量运行。
快速一行命令(懒人版)
# 列出当前所有NFS
mount -t nfs,nfs4
# 卸载所有NFS(谨慎!)
sudo umount -a -t nfs,nfs4
# 如果失败了,尝试强制卸载所有NFS
mount -t nfs,nfs4 | awk '{print $3}' | sudo xargs umount -l
你可以将最合适的方案复制保存为 .sh 文件(unmount_nfs.sh),然后运行 bash unmount_nfs.sh,根据你的具体需求和环境(是卸载特定列表,还是全部卸载)选择即可。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播