Linux查看程序占用的端口-lsof

2024-05-05 16:48

本文主要是介绍Linux查看程序占用的端口-lsof,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在作网络编程时,我们经常要知道程序打开的端口号。这里介绍一种简单的端口号查询命令-lsof和具体方法:
首先,介绍一下 losf 命令。使用 “man lsof” 查看lsof的帮助文档。这里截取一部分:

NAME
lsof - list open files
DESCRIPTION
Lsof revision 4.87 lists on its standard output file information about files opened by processes
An open file may be a regular file, a directory, a block special file, a character special file, an executing text reference, a library, a stream or a network file (Internet socket, NFS file or UNIX domain socket.) A specific file or all the files in a file system may be selected by path.
Instead of a formatted display, lsof will produce output that can be parsed by other programs. See the -F, option description, and the OUTPUT FOR OTHER PROGRAMS section for more information.

描述的大意:lsof 用于列举进程打开文件文件情况,这里的的文件包括普通文件,目录,块设备,字符设备,可执行文件,库,流,以及网络文件(如 套接字),这里体现了 UNIX 系统的主要哲学—万物皆文件,并且该命令的输出可以作为其他命令的输入。
了解 lsof 命令的大意后,我们重点了解该命令选项“-i”:
-i select IPv[46] files
i 选项用于选择打开的 IPv 文件,选项参数:
[46][protocol][@hostname|hostaddr][:service|port]
其中
46 指定 IP 版本,4指 IPv4,6指 IPv6,使用时如果都不指定则匹配时二者都选择。
protocol 指定协议名称,包括 TCP, UDP
hostname 指定网络主机名
hostaddr 主机 IP地址
service/etc/services中出现的服务名 或者服务列表,如 smtp
port 匹配的端口号,亦可以是一个范围

使用时,上述参数必须至少指定一个。’@‘在指定主机名时不可省略,’:‘在指定端口或服务时也不可省略。服务名和端口号列表可以用’-‘连接表示范围,之用’,‘隔开。

At least one address component - 4, 6, protocol, hostname, hostaddr, or service - must be supplied. The ‘@’ character, leading the host specification, is always required; as is the ‘:’, leading the port specification. Specify either hostname or hostaddr. Specify either service name list or port number list. If a service name list is specified, the protocol may also need to be specified if the TCP, UDP and UDPLITE port numbers for the service name are different. Use any case - lower or upper - for protocol. Service names and port numbers may be combined in a list whose entries are separated by commas and whose numeric range entries are separated by minus signs. There may be no embedded spaces, and all service names must belong to the specified protocol. Since service names may contain embedded minus signs, the starting entry of a range can’t be a service name; it can be a port number, however.

举例:
lsof -i6 #IPv6 only
losf -i TCP:25 #TCP and port 25
losf -i @1.2.3.4 #Internet IPv4 host address 1.2.3.4
losf -i @[3ffe:1ebc::1]:1234 #Internet IPv6 host address 3ffe:1ebc::1, port 1234
losf -i UDP:who #UDP who service port
losf -i TCP@lsof.itap:513 #TCP, port 513 and host name lsof.itap
losf -i tcp@foo:1-10,smtp,99 #TCP, ports 1 through 10, service name smtp, port 99, host name foo
losf -i tcp@bar:1-smtp #TCP, ports 1 through smtp, host bar

然而,当我们要查询程序打开的端口号时,可以用如下命令查看:
cherry@localhost libevent$ lsof -i | grep -i "server3" | grep -v grep
server3   1026 cherry    3u  IPv4 0x60f998b5c292148f      0t0  TCP *:5778 (LISTEN)查找结果列出了程序名,PID,属主用户, IP 版本,最后一列就是我们要找的端口号。

这篇关于Linux查看程序占用的端口-lsof的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/962183

相关文章

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制