Linux下如何查看端口以及释放端口
作者:从此不归路
一、查看端口是否被占用
在 Linux 系统上,你可以使用 `netstat` 或 `lsof` 命令来查看端口是否被占用。
以下是两种方法:
1、使用 `netstat` 命令
netstat -tulpn | grep <端口号>
这将显示占用指定端口的进程信息。
如果端口被占用,你将看到以下的输出项目:
tcp 0 0 0.0.0.0:<端口号> 0.0.0.0:* LISTEN <进程ID>/<进程名称>
实例:
2、使用 `lsof` 命令
sudo lsof -i :<端口号>
这也会显示占用指定端口的进程信息。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME <进程名> <PID> <用户> <文件描述符> <类型> <设备> <大小/偏移> <节点> <地址>
实例:
如果端口没有被占用,这两个命令将没有输出。
另外,以上命令可能需要使用 `sudo` 或具有足够权限的用户才能运行。
二、释放端口
如果通过上面的操作发现某个端口被占用,决定释放该端口。
通常,端口的释放是通过终止占用该端口的进程来实现的。
1、使用kill命令
使用 `kill` 命令结束占用端口的进程,其中 `<PID>` 是进程的标识符:
sudo kill <PID>
2、使用 fuser 命令
另一种找到并杀死占用端口的进程的方法是使用 `fuser` 命令:
sudo fuser -k <端口号>/tcp
三、netstat
netstat
是一个用于显示网络相关信息的命令行工具,通常用于检查网络连接、路由表、接口统计等。
上述 netstat
命令中,选项 -tulpn
是一组选项的缩写,每个字母表示特定的信息:
-t
: 显示 TCP 连接信息。-u
: 显示 UDP 连接信息。-l
: 显示监听状态的连接。-p
: 显示正在使用套接字的进程。-n
: 以数字形式显示地址和端口,而不进行名称解析。
四、lsof
`lsof`(List Open Files)是一个用于列出在Unix和类Unix系统上打开文件的工具。
它还可以用于显示进程打开的网络连接、Unix域套接字等。
以下是一些常见的用法示例:
1. 列出所有打开的文件
lsof
这将列出所有打开的文件,包括普通文件、目录、设备文件和网络套接字等。
2. 列出特定进程打开的文件
lsof -p <PID>
将 `<PID>` 替换为要查看的进程的进程ID,这样你就可以查看特定进程打开的文件。
3. 列出特定端口被哪个进程占用
lsof -i :<端口号>
替换 `<端口号>` 为要查看的端口号,这将显示占用该端口的进程信息。
4. 列出某个目录下被哪个进程占用的文件
lsof /path/to/directory
这将显示在指定目录下被打开的文件。
5. 列出网络连接信息
lsof -i
这将显示系统上的所有网络连接,包括打开的套接字、端口和连接状态。
6. 列出Unix域套接字信息:
lsof -U
这将显示系统上的所有Unix域套接字信息。
五、fuser
这个命令用于显示使用特定文件、套接字或文件系统的进程信息。
以下是一些常见选项的解释:
-a
,--all
:显示所有进程的信息,包括没有访问任何文件的进程。-i
,--interactive
:在终止进程之前请求确认。与 -k 选项一起使用时生效。-I
,--inode
:使用 inode 号码而不是文件名进行比较。-k
,--kill
:终止访问指定文件的进程。-l
,--list-signals
:列出可用的信号名称。-m
,--mount
:显示使用指定文件系统或块设备的所有进程。-M
,--ismountpoint
:只在指定名称是挂载点时执行。-n
,--namespace SPACE
:在指定的命名空间中搜索(file、udp 或 tcp)。-s
,--silent
:静默执行操作,不显示消息。-SIGNAL
:在终止进程时发送指定的信号,而不是默认的 SIGKILL。-u
,--user
:显示用户 ID 以及进程信息。-v
,--verbose
:提供详细输出。-w
,--writeonly
:仅终止具有写访问权限的进程。-V
,--version
:显示版本信息。-4
,--ipv4
:仅搜索 IPv4 套接字。-6
,--ipv6
:仅搜索 IPv6 套接字。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。