Linux有很多工具来管理进程和网络。但是 fuser
是最流行的工具之一,它将进程和网络管理结合在一个命令中。 fuser
可以根据其目录、文件和网络句柄显示进程。它还可以根据不同的参数来终止这些进程。
语法
fuser [options] [file|socket]
救命
$ fuser -h
使用目录显示进程
在服务器的日常使用中,会有大量的用户和进程。查找有关打开目录的相关进程可能很困难。 fuser
命令提供了根据目录使用情况查找相关进程的功能。在本例中,我们将提供要检查的目录路径 /home/ismail
. 最佳使用方法 fuser
具有根权限
$ fuser /home/ismail
从输出中我们可以看到一些进程ID被打印出来。PIDs后面还有一些字符。它们用于指定访问类型和有关进程的信息。这就是他们的意思
-
c
–当前目录 -
e
–Executable正在运行 -
f
–打开文件 -
F
–打开文件进行写入 -
r
–根目录 -
m
–mmaped文件或共享库
显示更多信息,如用户和命令
在前面的示例中,我们只列出了PID。但这些信息有时是不够的。我们可能需要更多信息,如用户名和相关命令。要获取用户名和相关命令,需要更详细的输出。详细输出可以用 -v
选项。在这个示例中,我们将在基于列的输出中列出进程的目录访问信息,其中包含用户和命令信息。
$ fuser -v /home/ismail
在这个例子中,我们可以看到我们的寻找路径是 /home/ismail
进程id为 2548
哪个是PID bash
带用户的cmomand ismail
使用文件系统显示进程
有关文件系统的进程访问信息可以用 -m
选项。这将产生巨大的产出。
$ fuser -v -m /home/ismail/.bashrc
显示有关TCP和UDP套接字的进程
另一个有用的特性 fuser
命令正在列出TCP和UDP套接字的进程信息。如果我们的apacheweb服务器因为tcp80被另一个我们不知道的进程使用而没有启动,这将非常有用。我们很容易找到这个过程。此外,这个过程可以用一个命令终止,我们将在下面的示例中查看。在这个示例中,我们要列出侦听TCP 22的进程信息。我们需要根权限来获取信息。我们将提供 -n
带的选项 tcp 22
参数
$ fuser -v -n tcp 22
整齐 要与UDP端口一起使用,请查看以下命令。
$ fuser -v -n udp 53
使用指定的TCP套接字终止进程
如前所述,我们可以通过在单个命令中指定TCP或UDP端口或套接字来终止进程。我们将提供 -k
终止相关进程的选项。在这个例子中,我们将杀死所有 ssh
或TCP端口22进程。
$ sudo fuser -k -n tcp 22
我们可以看到,我们已经终止了与服务器的当前ssh连接。
相关文章: 什么是NAT(网络地址转换)及其工作原理?
列出信号
在前面的示例中,我们已经终止了ssh进程。终止进程是通过向进程发送信号来完成的。信号用于与进程通信。要终止进程,发送终止相关信号。也有不同类型的信号可以发送到相关进程。我们可以列出信号 list-signals
选项如下。
$ fuser -list-signals
用特定信号杀死进程
如前所述,我们可以向我们指定的进程发送特定的信号。在示例中,我们将发送 -HUP
使用以下命令向TCP 22或ssh端口发送信号。
$ sudo fuser -k -HUP -n tcp 22
交互式终止进程
同时在关键服务器中终止进程 我们没有犯错的余地。但是发行 fuser
命令将在没有任何警告的情况下实时执行命令。我们可以通过交互选项以更可控的方式防止错误并杀死相关进程。提供交互式选项 -i
$ sudo fuser -i -k -n tcp 22