当前位置: 首页 > news >正文

Linux系统强大的命令行工具之fuser

目录

一、基本语法

二、常用选项

三、进程使用标志

四、典型使用场景

1. 查找使用文件的进程

2. 查找使用目录的进程

3. 查找使用文件系统的进程

4. 终止占用文件的进程

5. 查看已删除但仍在使用的文件

6. 查看网络端口占用

7. 查看挂载点占用

五、注意事项

六、实际案例

案例 1:卸载被占用的文件系统

案例 2:解决文件被锁定问题

七、总结


fuser 是 Linux 系统中用于查找和管理正在使用文件、目录或文件系统的进程的工具。它可以帮助用户识别哪些进程占用了特定资源,并根据需要终止这些进程。以下是详细用法和示例。


一、基本语法
fuser [选项] 文件或目录

二、常用选项
选项说明
-k杀死使用指定文件或目录的进程(需 root 权限)。
-i交互模式,在终止进程前提示用户确认(与 -k 一起使用)。
-v显示详细信息(包括进程 ID、用户、命令等)。
-m指定文件系统或块设备(用于查找挂载点相关的进程)。
-u显示每个进程所属的用户名。
-c包含文件所在文件系统中所有打开的文件。
-d显示已删除但仍在使用的文件(如被删除但未关闭的文件)。
-n指定命名空间(如 tcpudp,用于网络套接字)。
-l列出所有可用的信号名称(如 SIGKILLSIGTERM)。
-s静默模式(不输出进程信息,仅返回状态码)。

三、进程使用标志

fuser 输出的进程号后会跟随一个字母,表示进程如何使用文件:

标志含义
c该文件是进程的当前工作目录。
e该文件是进程的可执行程序。
r该目录是进程的根目录(/)。
m该文件被进程内存映射(如共享库)。
f该文件被进程打开(默认不显示)。
F该文件被进程以写入方式打开(默认不显示)。

四、典型使用场景
1. 查找使用文件的进程
# 查找正在使用 /etc/passwd 的进程
fuser /etc/passwd# 输出示例:
/etc/passwd: 5678
  • 如果无输出,说明文件未被占用。
2. 查找使用目录的进程
# 查找正在使用 /var/log 的进程
fuser -v /var/log# 输出示例:
USER     PID ACCESS COMMAND
/var/log: root   6789 F.... systemd-journald
3. 查找使用文件系统的进程
# 查找正在使用 /home 文件系统的进程
fuser -m /home# 输出示例:
/home:       5432 8765
4. 终止占用文件的进程
# 强制终止占用 /mnt/test.txt 的进程
sudo fuser -k /mnt/test.txt# 交互式终止(需确认)
sudo fuser -ki /mnt/test.txt# 输出示例:
Kill process 5678 ? (y/N)
5. 查看已删除但仍在使用的文件
# 查找已删除但仍在使用的文件
fuser -d /usr# 输出示例:
/usr:       5678 (deleted)
6. 查看网络端口占用
# 查看使用 TCP 80 端口的进程
fuser -n tcp 80# 输出示例:
80/tcp:               4737  4738  4739
7. 查看挂载点占用
# 查找使用 /mnt/data 挂载点的进程
fuser -m /mnt/data# 输出示例:
/mnt/data:  1234 5678

五、注意事项

        1. 权限要求

  • 使用 -k 终止其他用户的进程时,必须是 root 用户
  • 普通用户只能终止自己的进程。

        2. 风险提示

  • 强制终止进程可能导致数据丢失或系统不稳定,需谨慎操作。
  • 使用 -k 时建议先通过 -v 查看详细信息,确认目标进程。

        3. 特殊场景

  • NFS 文件系统:若 NFS 服务器无响应,fuser 可能挂起。可设置环境变量 FUSER_VERSION=1 避免此问题。
  • 内存映射文件fuser 无法检测通过 mmap 打开但已关闭文件描述符的进程。

六、实际案例
案例 1:卸载被占用的文件系统
# 尝试卸载 /mnt/data 时提示“目标忙”
umount /mnt/data
umount: /mnt/data: target is busy.# 使用 fuser 查找占用进程
sudo fuser -mv /mnt/data# 输出示例:
USER     PID ACCESS COMMAND
/mnt/data: root   1234 F.... rsync# 终止进程后卸载
sudo fuser -k /mnt/data
umount /mnt/data
案例 2:解决文件被锁定问题
# 删除文件时报错“文件被占用”
rm /var/log/app.log# 使用 fuser 查找占用进程
sudo fuser /var/log/app.log# 输出示例:
/var/log/app.log: 1234# 终止进程后删除文件
sudo kill 1234
rm /var/log/app.log

七、总结

fuser 是系统管理和调试的实用工具,尤其适用于以下场景:

  • 文件/目录被占用:快速定位占用进程并释放资源。
  • 文件系统卸载:解决卸载失败问题。
  • 资源监控:分析进程对文件、网络端口的使用情况。
http://www.xdnf.cn/news/1427311.html

相关文章:

  • Vue + fetchEventSource 使用 AbortController 遇到的“只能中止一次”问题解析与解决方案
  • 详解 C++ 中的虚析构函数
  • 【系统架构设计(12)】系统运行与软件维护
  • 优选算法的映射之妙:哈希表专题
  • 【数据结构】八大排序之快速排序:分而治之的艺术
  • 从技术架构到经济价值:低代码在企业开发中的成本节约潜力
  • 面试新纪元:无声胜有声,让AI成为你颈上的智慧伙伴
  • Windows远程连接:SSH+RDP+Server
  • 警惕!虚拟货币“赠予”可能被认定为洗钱犯罪
  • NLP模型简介
  • 解决Mac电脑连接蓝牙鼠标的延迟问题
  • 【Python练习题】Python小白必练100题答案-第21-40题
  • 基础思想:动态规划与贪心算法
  • [Dify 专栏] 如何通过 Prompt 在 Dify 中模拟 Persona:即便没有专属配置,也能让 AI 扮演角色
  • 文章阅读与实践 - 延迟双删/分库分表/Spring IOC生命周期/Mysql主从一致优化
  • 一文读懂 LoRaWAN A、B、C类的区别及应用
  • 用 PyTorch 实现食品图像分类:从数据预处理到模型训练与预测
  • Linux电脑怎样投屏到客厅的大电视?支持远程投屏吗?
  • 从Java全栈到前端框架:一场真实的技术面试实录
  • 《Vue进阶教程》(7)响应式系统介绍
  • iOS15如何绕过MDM锁?详细图文教程教你搞定
  • 滚珠导轨在工业制造领域如何实现高效运行?
  • 网络传输的实际收发情况及tcp、udp的区别
  • 电子电气架构 --- 当前企业EEA现状(上)
  • 云计算学习笔记——Linux系统网络配置与远程管理(ssh)篇
  • Java搭建高效后端,Vue打造友好前端,联合构建电子采购管理系统,实现采购流程电子化、自动化,涵盖采购全周期管理,功能完备,附详细可运行源码
  • Node.js 命令行交互王者:inquirer 模块实战指南
  • Pytorch Yolov11目标检测+window部署+推理封装 留贴记录
  • WPF迁移avalonia之图像处理(一)
  • 基于SpringBoot的古典舞在线交流平台