linux fuser 命令 查看文件/网络端口 被什么进程占用

linux环境下,当使用umount命令卸载挂载点时,会遇到“device is busy”提示,这时fuser就能查出谁在使用这个资源;当然umount –lf  [挂载点] 也可以强制卸载

fuser 可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息.

fuser只把PID输出到标准输出,其他的都输出到标准错误输出。

常用选项

-a 显示所有命令行中指定的文件,默认情况下被访问的文件才会被显示。 
-c 和-m一样,用于POSIX兼容。 
-k 杀掉访问文件的进程。如果没有指定-signal就会发送SIGKILL信号。结合 –signal

-signal 使用指定的信号,而不是用SIGKILL来杀掉进程。可以通过名称或者号码来表示信号(例如-HUP,-1),这个选项要和-k一起使用,否则会被忽略。

-l 列出所有已知的信号名称。 
-i 杀掉进程之前询问用户,如果没有-k这个选项会被忽略。 
-m name 指定一个挂载文件系统上的文件或者被挂载的块设备(名称name)。这样所有访问这个文件或者文件系统的进程都会被列出来。如果指定的是一个目录会自动转换成"name/",并使用所有挂载在那个目录下面的文件系统。 
-n space 指定一个不同的命名空间(space).这里支持不同的空间文件(文件名,此处默认)、tcp(本地tcp端口)、udp(本地udp端口)。对于端口,可以指定端口号或者名称,如果不会引起歧义那么可以使用简单表示的形式,例如:name/space (即形如:80/tcp之类的表示)。 
-s 静默模式,这时候-u,-v会被忽略。-a不能和-s一起使用。  
-u 在每个PID后面添加进程拥有者的用户名称。 
-v 详细模式。输出似ps命令的输出,包含PID,USER,COMMAND等许多域,如果是内核访问的那么PID为kernel.

 

案例

假设无法卸载的设备为/dev/sdb1 
1)运行下面命令看一下哪个用户哪个进程占用着此设备 

fuser -m -v /dev/sdb1

2)运行下面命令杀掉占用此设备的进程 

fuser -m -v -k /dev/sdb1 
# 或者
fuser -m -v -k -i  /dev/sdb1 
# 每杀掉一下进程会让你确认

3)再umount

查看那些程序使用tcp的80端口: 

$fuser -n tcp 80 
# 或
$fuser -v -n tcp 80 
# 或
$fuser -v 80/tcp 

这里,后两种方式显示的信息比较全,因为有了-v选项

# fuser -v 111/udp 111/tcp
用户 进程号 权限 命令
111/udp: rpc 968 F.... rpcbind
111/tcp: rpc 968 F.... rpcbind

如上例子中第4列的权限也成访问类型,如下:

c 代表当前目录                              F 打开的文件,用于写操作。默认不显示。

e 可执行的被运行                          m 映射文件或者共享库。

f 打开的文件。默认不显示。         r 根目录。    

其它相同命令:

# netstat -lntup|grep 111
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 968/rpcbind
tcp 0 0 :::111 :::* LISTEN 968/rpcbind
udp 0 0 0.0.0.0:111 0.0.0.0:* 968/rpcbind
udp 0 0 :::111 :::* 968/rpcbind

# ss -lntup|grep 111
udp UNCONN 0 0 *:111 *:* users:(("rpcbind",968,6))
udp UNCONN 0 0 :::111 :::* users:(("rpcbind",968,9))
tcp LISTEN 0 128 :::111 :::* users:(("rpcbind",968,11))
tcp LISTEN 0 128 *:111 *:* users:(("rpcbind",968,8))

# lsof -i :111
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 968 rpc 6u IPv4 11275 0t0 UDP *:sunrpc
rpcbind 968 rpc 8u IPv4 11278 0t0 TCP *:sunrpc (LISTEN)
rpcbind 968 rpc 9u IPv6 11280 0t0 UDP *:sunrpc
rpcbind 968 rpc 11u IPv6 11283 0t0 TCP *:sunrpc (LISTEN)

signal列表

# fuser -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED

# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: fuser命令还可以用于查看网络端口被哪个进程占用。使用以下命令可以查看指定端口占用进程: ``` sudo fuser -v -n tcp 端口号 ``` 其中,-v选项用于显示详细输出,-n tcp选项指定要查找的协议类型为TCP,端口号是指要查找的端口号。 例如,要查找端口号为80的进程,可以使用以下命令: ``` sudo fuser -v -n tcp 80 ``` 输出类似于: ``` USER PID ACCESS COMMAND 80/tcp: root 1234 F.... apache2 ``` 其中,1234是使用端口号为80的进程的PID,COMMAND是进程命令名称。 需要注意的是,为了查看网络端口占用进程,必须具有root或sudo权限。 ### 回答2: fuser是一个用于检查网络端口占用进程命令行工具。它可以帮助我们确定哪些进程正在使用特定的网络端口。 使用fuser命令可以很方便地查看某个端口是否被占用,具体命令格式为"fuser [选项] [端口号]"。 我们可以通过以下步骤来使用fuser命令: 1. 打开终端窗口。 2. 输入命令"fuser -n tcp [端口号]",其中tcp是指定查看TCP端口的协议选项。如果要查看UDP端口,则将tcp替换为udp。 3. 根据命令的输出结果,我们可以得知哪个进程正在使用该端口。输出结果中会显示进程的PID(进程标识符)和进程名。 例如,如果我们想检查80端口是否被占用,可以输入命令"fuser -n tcp 80"。如果80端口占用命令的输出结果可能类似于"80/tcp: 1234",其中1234是占用端口进程的PID。 此外,我们还可以使用fuser的其他选项来进一步查询端口占用情况,例如使用"-v"选项可以显示详细的进程信息。 总的来说,fuser是一个方便实用的工具,可以帮助我们查找网络端口占用进程,以便进一步分析和管理网络连接。 ### 回答3: fuser是一种在Linux和Unix操作系统中用于查看网络端口占用进程命令行工具。它可以帮助我们确定哪些进程正在使用特定的网络端口。使用fuser命令非常简单,只需要在终端中输入"fuser 端口号",然后按下回车键即可。 fuser命令的输出结果会显示出正在占用端口进程的PID(进程ID)。如果多个进程同时占用端口,它们的PID会被逗号分隔开。使用-f参数可以查看具体的PID和进程名。 此外,我们还可以使用-k参数来终止占用端口进程。例如,输入"fuser -k 端口号"将会终止占用端口进程。当然,在使用-k参数时,需要有管理员权限。 总之,fuser命令是一种非常方便的工具,可以帮助我们确定网络端口占用情况,并且可以轻松地终止占用端口进程。通过了解网络端口占用情况,我们可以更好地管理和优化系统资源,确保网络的畅通运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值