linux系统查看文件被那些进程占用&&快速杀死对应的进程

本文介绍如何使用Linux下的fuser命令来查找被进程占用的文件或目录,并演示了如何快速杀死这些进程。通过具体实例展示了fuser命令的强大功能。

前言

在linux系统中有时候需要确认对应的文件或者目录被那些进程占用,并且需要将对应的进程杀死

相关命令详解

我们可以通过 fuser 命令来实现

操作演示环境搭建

设备的/usr/database/12345/目录下有连个文件 test.db test1.db
如下图所示:
在这里插入图片描述
为了演示效果我们分别开启两个终端通过sqlite3命令打开 test.db数据库
如下图所示:
第一个终端的操作
在这里插入图片描述
第二个终端的操作
在这里插入图片描述
两个进程对应的信息
在这里插入图片描述
此时我们的测试环境搭建完成

命令演示

查找占用文件的进程

接下来我们可以通过 fuser 命令快速定位test.db数据库被那些进程占用
fuser 对应的文件
如下图所示:
在这里插入图片描述

如何杀死占用该文件的全部进程

fuser -k 对应的文件
如下图所示:
在这里插入图片描述
杀死对应的程序之后的ps截图
在这里插入图片描述

该指令不仅仅适用于文件,同时还适用于目录

在这里插入图片描述
红框标注的是测试时候开启的两个终端,这连个终端是cd 到该目录下执行的sqlit3命令,因此这两个终端也是占用改目录的

黄框标注的是对应的sqlit3打开数据库的进程

<think>好的,我现在需要回答用户关于Linux查看端口占用进程的命令的问题。首先,我得回忆一下相关的Linux命令,并结合用户提供的引用内容来确保准确性。用户提到了引用[1]和引用[2],里面提到了netstat、lsof、fuser这些命令,我需要详细整理这些信息。首先,netstat命令,用户引用里提到使用netstat-tnlp和netstat-ano|findstr"8080"。不过,findstr是Windows的命令,Linux下应该用grep。需要更正这一点,比如netstat -tunlp |grep80。另外,参数可能需要调整,比如-tunlp的组合是否正确?然后是lsof命令,用户引用中提到lsof -i :端口号,这个是正确的,比如lsof -i :8080。需要解释每个参数的作用。还有fuser命令,引用里提到fuser8099/tcp,用法是否正确?可能需要确认fuser的用法是否需要指定协议,比如fuser80/tcp,然后显示进程ID。 接下来,需要将这些命令分点说明,结构清晰。比如分三个主要命令:netstat、lsof、fuser,每个命令给出具体示例和参数解释。同时,注意用户可能需要的实际例子,比如查看80端口的占用情况,如何杀死进程等。 还要注意用户可能需要的额外信息,比如权限问题,是否需要sudo来执行这些命令。例如,某些情况下普通用户可能无法查看所有进程,需要提升权限。另外,用户的问题是关于查看端口占用进程的命令,所以需要确保每个命令都明确显示进程ID,这样用户可以根据PID来终止进程。比如在netstat中,-p参数显示PID,但可能需要sudo才能看到所有进程的PID。最后,是否需要补充其他相关命令,比如ss命令?或者ps命令结合使用?用户提供的引用中没有提到ss,但可能值得简要提及作为备选方案。 总结一下,回答的结构应该是:1.使用netstat命令:参数组合,示例,解释每个参数的作用。 2.使用lsof命令:语法,示例,参数说明。3.使用fuser命令:用法,示例。4.可能补充其他方法,如ss或结合grep过滤。 5.注意事项,如权限问题,如何根据PID结束进程。需要确保每个命令的示例正确,参数正确,并且与用户提供的引用内容一致,同时修正其中的错误,比如findstr改为grep。同时,引用标识要正确添加到对应的位置,比如引用[1]和引用[2]中的相关内容。</think>在Linux系统查看端口占用进程的常用命令及方法如下: ### 1. 使用`netstat`命令 通过组合参数`-tunlp`可查看端口与进程的关联关系: ```bash sudo netstat -tunlp | grep <端口号> ``` 示例查看80端口: ```bash sudo netstat -tunlp | grep :80 ``` - `-t`:显示TCP端口 - `-u`:显示UDP端口 - `-n`:以数字形式显示地址和端口 - `-l`:仅显示监听状态的端口 - `-p`:显示进程ID和名称(需root权限)[^1] ### 2. 使用`lsof`命令 直接通过端口号精准定位进程: ```bash sudo lsof -i :<端口号> ``` 示例查看8080端口: ```bash sudo lsof -i :8080 ``` - `-i`:筛选网络连接相关的进程 - 输出包含进程ID(PID)、用户、文件描述符等信息[^2] ### 3. 使用`fuser`命令 针对TCP/UDP协议直接查询端口占用: ```bash sudo fuser <端口号>/tcp ``` 示例检查8099端口: ```bash sudo fuser 8099/tcp ``` - 输出结果为占用该端口的进程ID(PID) - 支持`/udp`查询UDP端口[^2] ### 注意事项 - **权限问题**:普通用户可能无法查看系统进程,建议使用`sudo` - **结束进程**:通过`kill <PID>`终止占用端口的进程
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嗨 hello world

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值