Linux 查看端口占用情况

2023-11-10

Linux 查看端口占用情况可以使用 lsof 、ss和 netstat 命令。

一、lsof

lsof命令详解

lsof(list open files)是一个列出当前系统打开文件的工具。lsof 查看端口占用语法格式:
lsof -i:端口号

如查看服务器 2379端口的占用情况:

#注意,lsof默认是没有安装的,需要自行安装
yum install lsof -y
[root@k8s-m1 ~]#  lsof -i:2379
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
etcd       5680 root    7u  IPv4    42209      0t0  TCP k8s-m1:2379 (LISTEN)

可以看到 2379 端口已经被轻 etcd 服务占用。

lsof -i 需要 root 用户的权限来执行,如下图:

[root@k8s-m1 ~]# lsof -i|more
COMMAND     PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
rpcbind    5403    rpc    6u  IPv4    41399      0t0  UDP *:sunrpc 
rpcbind    5403    rpc    7u  IPv4    42127      0t0  UDP *:909 
rpcbind    5403    rpc    8u  IPv4    42128      0t0  TCP *:sunrpc (LISTEN)
rpcbind    5403    rpc    9u  IPv6    42129      0t0  UDP *:sunrpc 
rpcbind    5403    rpc   10u  IPv6    42130      0t0  UDP *:909 
rpcbind    5403    rpc   11u  IPv6    42131      0t0  TCP *:sunrpc (LISTEN)
chronyd    5426 chrony    5u  IPv4    41466      0t0  UDP localhost:323 
chronyd    5426 chrony    6u  IPv6    41467      0t0  UDP localhost:323 
sshd       5670   root    3u  IPv4    48132      0t0  TCP *:ssh (LISTEN)
sshd       5670   root    4u  IPv6    48134      0t0  TCP *:ssh (LISTEN)
etcd       5680   root    5u  IPv4    42205      0t0  TCP k8s-m1:2380 (LISTEN)
etcd       5680   root    6u  IPv4    42208      0t0  TCP localhost:2379 (LISTEN)
etcd       5680   root    7u  IPv4    42209      0t0  TCP k8s-m1:2379 (LISTEN)
etcd       5680   root    8u  IPv4    42210      0t0  TCP k8s-m1:2380->k8s-m2:48008 (ESTABLISHED)
etcd       5680   root    9u  IPv4    45366      0t0  TCP k8s-m1:2380->k8s-m3:41006 (ESTABLISHED)
etcd       5680   root   10u  IPv4    45367      0t0  TCP k8s-m1:2380->k8s-m3:41016 (ESTABLISHED)
etcd       5680   root   11u  IPv4    42211      0t0  TCP k8s-m1:2380->k8s-m2:48010 (ESTABLISHED)
etcd       5680   root   12u  IPv4    43860      0t0  TCP k8s-m1:2379->k8s-m3:57352 (ESTABLISHED)
etcd       5680   root   14u  IPv4    61002      0t0  TCP k8s-m1:2379->k8s-m2:48626 (ESTABLISHED)
etcd       5680   root   15u  IPv4  7534239      0t0  TCP k8s-m1:2379->k8s-m2:41368 (ESTABLISHED)
etcd       5680   root   16u  IPv4 13158470      0t0  TCP k8s-m1:2379->k8s-m1:38664 (ESTABLISHED)
etcd       5680   root   18u  IPv4 13137657      0t0  TCP k8s-m1:2379->k8s-m1:38670 (ESTABLISHED)

参数说明:
COMMAND:进程的名称
PID: 进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如IPv4、IPv6、DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

其中:FD不容易理解,特别说明一下:
  (1)cwd:表示 current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改
  (2)txt:该类型的文件是程序代码,如应用程序二进制文件本身或共享库,如 /sbin/init 程序
  (3)lnn: library references (AIX)
  (4)er: FD information error (see NAME column)
  (5)jld: jail directory(FreeBSD)
  (6)ltx: shared library text(code and data)
  (7)mxx: hex memory-mapped type number xx.
  (8)m86:DOS Merge mapped file
  (9) mem: memory-mapped file
  (10)mmap: memory-mapped device
  (11)pd: parent directory
  (12)rtd: root directory
  (13)tr: kernel trace file (OpenBSD)
  (14)v86 VP/ix mapped file
  (15)0:表示标准输出
  (16)1:表示标准输入
  (17)2:表示标准错误
  一般在标准输出、标准错误、标准输入后还跟着文件状态模式:r w u 等
(1)u:表示该文件被打开并处于读取/写入模式
  (2)r:表示该文件被打开并处于只读模式
  (3)w:表示该文件被打开并处于只写入模式
  (4)空格:表示该文件的状态模式为 unknown ,且没有锁定
  (5)- : 表示该文件的状态模式为 unknown ,且被锁定
  同时在文件状态模式后面,还跟着相关的锁
  (1)N:for a Solaris NFS lock of unknown type
  (2)r: for a read lock on part of the file
  (3)R:for a read lock on the entire file
  (4)w: for a write lock on part of the file (文件的部分写锁)
  (5)W: for a write lock on the entire file(整个文件的写锁)
  (6)u: for a read and write lock of any length
  (7)U: for a lock of unknown type
  (8)x: for an SCO OpenServer Xenix lock on part of the file
  (9)X:for an SCO OpentServer Xenix lock on the entire file
  (10)space : if there is no lock

更多 lsof 的命令如下:
lsof : 简单地执行lsof会列出当前系统中所有被打开的文件
lsof -u margu : 列出用户margu打开的文件, 可指定多个用户, 默认是OR的关系
lsof -i : 列出打开的套接字
lsof -i tcp : 列出打开的tcp套接字
lsof -i:80:查看80端口占用
lsof -i :ssh : 列出打开22端口的进程
lsof -i tcp:2379 : 列出打开2379号tcp端口的进程
lsof -n 不将IP转换为hostname,缺省是不加上-n参数
lsof test.txt:显示开启文件abc.txt的进程
lsof -c test:显示abc进程现在打开的文件
lsof -c -p 12345:列出进程号为12345的进程所打开的文件
lsof -g gid:显示归属gid的进程情况
lsof +d /usr/local/:显示目录下被进程开启的文件
lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长
lsof -d 4:显示使用fd为4的进程
lsof -i -U:显示所有打开的端口和UNIX domain文件
lsof -p 12345:看进程号为12345的进程打开了哪些文件
lsof -s :列出打开文件的大小,如果没有大小,则留下空白
lsof -d mem : 列出打开映射文件的进程
lsof -d txt : 列出打开的可执行文件
lsof server.log : 列出打开server.log文件的进程, 可指明多个文件

二、lsof应用实例:

1、du和df显示磁盘使用量不一样

用户删除了大量的文件后,du命令就不会在文件系统目录中统计这些文件。如果此时还在运行中的进程持有这个已经被删除的文件句柄,那么这个文件就不会真正在磁盘中被删除,分区超级块中的信息也就不会更改,df命令仍会统计这个被删除的文件。 通过lsof命令查询处于deleted状态的文件,被删除的文件在系统中被标记为deleted。如果系统有大量deleted状态的文件,会导致du和df命令统计结果不一致。
可执行如下命令查看lsof |grep deleted

解决方法
根据lsof列出的进程号,终止相应进程或者重启相应的服务。也可以重启实例,重启实例系统会退出现有的进程,重启后重新加载过程中,会释放调用的deleted文件的句柄。

重要:但某些时候,我们的服务器上没有lsof的命令,而且也不能连外网进行安装,可以通过以下的方法查找deleted状态的文件。

[root@k8s-m1 ~]# ll /proc/*/fd/|grep deleted
lrwx------ 1 mysql mysql 64 Jun 21 14:53 12 -> /tmp/ibdhpN9t (deleted)
lrwx------ 1 mysql mysql 64 Jun 21 14:53 5 -> /tmp/ibJeq1IW (deleted)
lrwx------ 1 mysql mysql 64 Jun 21 14:53 6 -> /tmp/ibhiCbh3 (deleted)
lrwx------ 1 mysql mysql 64 Jun 21 14:53 7 -> /tmp/ib1JgnP9 (deleted)
lrwx------ 1 mysql mysql 64 Jun 21 14:53 8 -> /tmp/ib5ed98m (deleted)

2、查找谁在使用文件系统

在卸载文件系统时,如果该文件系统中有任何打开的文件,操作通常将会失败。那么通过lsof可以找出那些进程在使用当前要卸载的文件系统,如下:

在一个窗口中打开某个路径下的文件,如
[root@k8s-m1 docker]# vim /home/docker/Dockerfile
#新开一个窗口
[root@k8s-m1 ~]# lsof  /home/docker
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
bash    25386 root  cwd    DIR  253,2     4096 16784069 /home/docker
vim     26008 root  cwd    DIR  253,2     4096 16784069 /home/docker

在这个示例中,用户root正在其/home/docker目录中进行一些操作。一个 bash是实例正在运行,并且它当前的目录为/home/docker,另一个则显示的是vim正在编辑/home/docker下的文件。要成功地卸载/home/docker,应该在通知用户以确保情况正常之后,中止这些进程。 这个示例说明了应用程序的当前工作目录非常重要,因为它仍保持着文件资源,并且可以防止文件系统被卸载。这就是为什么大部分守护进程(后台进程)将它们的目录更改为根目录、或服务特定的目录(如 sendmail 示例中的 /var/spool/mqueue)的原因,以避免该守护进程阻止卸载不相关的文件系统。

3、恢复删除的文件当(不是所有时候都有用,可以尝试)

Linux计算机受到入侵时,常见的情况是日志文件被删除,以掩盖攻击者的踪迹。管理错误也可能导致意外删除重要的文件,比如在清理旧日志时,意外地删除了数据库的活动事务日志。有时可以通过lsof来恢复这些文件。当进程打开了某个文件时,只要该进程保持打开该文件(进程要一直存在,文件要一直被使用,没有被一直使用的文件是不行的),即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录索引节点。在/proc 目录下,其中包含了反映内核和进程树的各种文件。/proc目录挂载的是在内存中所映射的一块区域,所以这些文件和目录并不存在于磁盘中,因此当我们对这些文件进行读取和写入时,实际上是在从内存中获取相关信息。如/var/log/messages对于许多应用程序,尤其是日志文件和数据库,这种恢复删除文件的方法非常有用,因为这些文件一般都是一直在使用的。

[root@k8s-m1 ~]# rm  /var/log/messages
rm: remove regular file ‘/var/log/messages’? y
[root@k8s-m1 ~]# lsof |grep /var/log/messages
rsyslogd  21072          root    9w      REG              253,0    333093  101406984 /var/log/messages (deleted)
in:imjour 21072 21074    root    9w      REG              253,0    333093  101406984 /var/log/messages (deleted)
in:imudp  21072 21075    root    9w      REG              253,0    333093  101406984 /var/log/messages (deleted)
in:imtcp  21072 21076    root    9w      REG              253,0    333093  101406984 /var/log/messages (deleted)
in:imtcp  21072 21077    root    9w      REG              253,0    333093  101406984 /var/log/messages (deleted)
in:imtcp  21072 21078    root    9w      REG              253,0    333093  101406984 /var/log/messages (deleted)
in:imtcp  21072 21079    root    9w      REG              253,0    333093  101406984 /var/log/messages (deleted)
in:imtcp  21072 21080    root    9w      REG              253,0    333093  101406984 /var/log/messages (deleted)
rs:main   21072 21081    root    9w      REG              253,0    333093  101406984 /var/log/messages (deleted)

从上面的信息可以看到 PID 21072 (rsyslogd)打开文件的文件描述符为 9(9w)。同时还可以看到/var/log/messages已经标记被删除了。因此我们可以在 /proc/21072/fd/9 (fd下的每个以数字命名的文件表示进程对应的文件描述符)中查看相应的信息,如下:

[root@k8s-m1 ~]# head -n 5 /proc/21072/fd/9
Jun 25 03:40:01 k8s-m1 rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-34.el7" x-pid="21072" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
Jun 25 03:40:01 k8s-m1 systemd: Started Session 15901 of user root.
Jun 25 03:40:01 k8s-m1 systemd: Started Session 15902 of user root.
Jun 25 03:40:24 k8s-m1 etcd: read-only range request "key:\"/registry/health\" " with result "range_response_count:0 size:7" took too long (171.182021ms) to execute
Jun 25 03:40:27 k8s-m1 etcd: read-only range request "key:\"/registry/services/specs/default/kubernetes\" " with result "range_response_count:1 size:612" took too long (157.340425ms) to execute

恢复:

[root@k8s-m1 ~]# cat /proc/21072/fd/9 > /var/log/messages

二、ss

ss命令详解

ss 是 Socket Statistics 的首字母缩写。顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。ss 命令由 iproute2 软件包提供(yum install iproute),默认已经安装,iproute 2 包中的命令可以完全替代 net-tools 包中的 ifconfig、netstat、route 等命令。
下面是一些常用选项和用法:

ss -t:显示所有TCP连接。
ss -u:显示所有UDP连接。
ss -a:显示所有连接,包括监听状态和已建立的连接。
ss -l:显示所有监听状态的连接。
ss -p:显示与连接关联的进程信息。
ss -n:显示IP地址和端口号,而不是主机名和服务名。
ss -o:显示时间戳和超时信息。
ss -e:显示详细的套接字信息。
除了以上的选项外,ss命令还可以与其他命令一起配合使用,例如grep、awk等,以进一步过滤和处理输出结果。
还可以使用ss命令来检查网络连接问题,例如检查某个端口是否被占用、查看连接状态等。

ss示例

列出已建立的连接

默认情况下,如果我们运行ss命令而没有指定其他选项,它将显示所有已建立连接的打开的非侦听套接字的列表,例如TCP,UDP或UNIX套接字。

[root@k8s-m1 ~]# ss |more
Netid  State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port                
u_str  ESTAB      0      0      /run/systemd/journal/stdout 33171                 * 44494                
u_str  ESTAB      0      0       * 32720                 * 39019                
u_str  ESTAB      0      0       * 44138                 * 33121                
u_str  ESTAB      0      0      /run/gssproxy.sock 35473560              * 35473554             
u_str  ESTAB      0      0       * 44494                 * 33171                
u_str  ESTAB      0      0      /run/dbus/system_bus_socket 35673                 * 41457                
u_str  ESTAB      0      0       * 35472701              * 0                    

显示监听套接字(listening)

我们可以使用-l选项专门列出当前正在侦听连接的套接字,而不是列出所有的套接字。

[root@k8s-m1 ~]# ss -lt
State       Recv-Q Send-Q                       Local Address:Port                                        Peer Address:Port                
LISTEN      0      128                                      *:30983                                                  *:*                    
LISTEN      0      128                                      *:30119                                                  *:*                    
LISTEN      0      128                                      *:24007                                                  *:*                    
LISTEN      0      128                              127.0.0.1:10248                                                  *:*                    
LISTEN      0      128                              127.0.0.1:10249                                                  *:*                    
LISTEN      0      128                              127.0.0.1:9099                                                   *:*                    
LISTEN      0      128                          192.168.2.140:2379                                                   *:*                    
LISTEN      0      128                              127.0.0.1:2379                                                   *:*                    
LISTEN      0      128                          192.168.2.140:2380                                                   *:*            

显示进程

我们可以用-p选项打印出拥有套接字的进程或PID号。

[root@k8s-m1 ~]# ss -ltp
State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port                
LISTEN     0      128        *:30983                    *:*                     users:(("kube-proxy",pid=30105,fd=20))
LISTEN     0      128        *:30119                    *:*                     users:(("kube-proxy",pid=30105,fd=15))
LISTEN     0      128        *:24007                    *:*                     users:(("glusterd",pid=5712,fd=10))
LISTEN     0      128    127.0.0.1:10248                    *:*                     users:(("kubelet",pid=5778,fd=26))
LISTEN     0      128    127.0.0.1:10249                    *:*                     users:(("kube-proxy",pid=30105,fd=14))
LISTEN     0      128    127.0.0.1:9099                     *:*                     users:(("calico-node",pid=30764,fd=3))
LISTEN     0      128    192.168.2.140:2379                     *:*                     users:(("etcd",pid=5680,fd=7))
LISTEN     0      128    127.0.0.1:2379                     *:*                     users:(("etcd",pid=5680,fd=6))
LISTEN     0      128    192.168.2.140:2380                     *:*                     users:(("etcd",pid=5680,fd=5))
......

显示所有tcp sockets

ss -at

显示所有utp sockets

ss -au

只显示 unix 连接

ss -x

列出所有http连接中的连接

显示摘要信息
ss -s

仅显示 IPv4套接字

ss -l4

仅显示 IPv6套接字

ss -l6

不将 IP 地址解析为主机名

如果不想将ip地址解析为主机名称,可以使用-n选项,以防止命令将 IP 地址解析为主机名。但这也会阻止端口号的解析,如下,22端口为ssh服务的端口,不加-n将会显示成ssh

[root@k8s-m1 ~]# ss -l4 -n
Netid State      Recv-Q Send-Q                       Local Address:Port                                      Peer Address:Port              
tcp   LISTEN     0      128                          192.168.2.140:2379                                                 *:*                  
tcp   LISTEN     0      128                              127.0.0.1:2379                                                 *:*                  
tcp   LISTEN     0      128                          192.168.2.140:2380                                                 *:*                  
tcp   LISTEN     0      128                                      *:22                                    

dst/src dport/sport相关语法

[root@k8s-m1 ~]# ss dst 192.168.2.141:2379
Netid State      Recv-Q Send-Q                    Local Address:Port                                     Peer Address:Port                
tcp   ESTAB      0      0                         192.168.2.140:42178                                   192.168.2.141:2379                 
tcp   ESTAB      0      0                         192.168.2.140:42244                                   192.168.2.141:2379                 
tcp   ESTAB      0      0                         192.168.2.140:42082                                   192.168.2.141:2379                 
tcp   ESTAB      0      0                         192.168.2.140:42320                                   192.168.2.141:2379                 
tcp   ESTAB      0      0                         192.168.2.140:42802                                   192.168.2.141:2379   
[root@k8s-m1 ~]# ss src 192.168.2.140:22
Netid State      Recv-Q Send-Q                    Local Address:Port                                     Peer Address:Port                
tcp   ESTAB      0      0                         192.168.2.140:ssh                                        10.12.13.1:54920                
tcp   ESTAB      0      0                         192.168.2.140:ssh                                        10.12.13.1:52420                
tcp   ESTAB      0      96                        192.168.2.140:ssh                                        10.12.13.1:63285

ss dport OP PORT
ss sport OP PORT
OP 可以代表以下任意一个:

写法一 写法二 用途含义
<= le 小于或等于某个端口号
>= ge 大于或等于某个端口号
== eq 等于某个端口号
!= ne 不等于某个端口号
> gt 大于某个端口号
< lt 小于某个端口号
[root@k8s-m1 ~]# ss -tunl sport \< 50
Netid State      Recv-Q Send-Q                      Local Address:Port                                     Peer Address:Port              
tcp   LISTEN     0      128                                     *:22                                                  *:*                  
tcp   LISTEN     0      128                                    :::22                                                 :::*                  
[root@k8s-m1 ~]# ss -tunl sport lt 50
Netid State      Recv-Q Send-Q                      Local Address:Port                                     Peer Address:Port              
tcp   LISTEN     0      128                                     *:22                                                  *:*                  
tcp   LISTEN     0      128                                    :::22                                                 :::*                  

通过 TCP 的状态进行过滤

ss 命令还可以通过 TCP 连接的状态进程过滤,支持的 TCP 协议中的状态有: established syn-sent syn-recv fin-wait-1 fin-wait-2 time-wait closed close-wait last-ack listening closing,具体含义可以去了解TCP三次握手和四次挥手过程中的状态。
而除了上面的 TCP 状态,还可以使用下面这些状态:

状态 含义
all 列出所有的 TCP 状态
connected 列出除了 listening 和 closing 之外的所有 TCP 状态。
synchronized 列出除了 syn-sent 之外的所有 TCP 状态。
bucket 列出 maintained 的状态,如:time-wait 和 syn-recv。
big 列出和 bucket 相反的状态。

如:查看Ipv4处于listening状态的进程

[root@k8s-m1 ~]# ss -l4 state listening
Netid Recv-Q Send-Q                         Local Address:Port                                          Peer Address:Port                
tcp   0      128                                        *:30983                                                    *:*                    
tcp   0      128                                        *:30119                                                    *:*                    
tcp   0      128                                        *:24007                                                    *:*                    
tcp   0      128                                127.0.0.1:10248                                                    *:*                    
tcp   0      128                                127.0.0.1:10249                                                    *:*                    
tcp   0      128                                127.0.0.1:9099                                                     *:*                    
tcp   0      128                            192.168.2.140:2379                                                     *:*                    
tcp   0      128                                127.0.0.1:2379                                                     *:*                    
tcp   0      128                            192.168.2.140:2380                                                     *:*                    
tcp   0      128                                        *:32589                                                    *:*    

#注意以下用法的区别

[root@k8s-m1 ~]# ss -4n state listening '( sport = :22 )'
Netid Recv-Q Send-Q                           Local Address:Port                                          Peer Address:Port              
tcp   0      128                                          *:22                                                       *:*                  

[root@k8s-m1 ~]# ss -ln state listening '( sport = :ssh )'
Netid Recv-Q Send-Q                           Local Address:Port                                          Peer Address:Port              
tcp   0      128                                          *:22                                                       *:*                  
tcp   0      128                                         :::22                                                      :::*                  

[root@k8s-m1 ~]#  ss -ln state listening '( dport = :ssh or sport = :ssh )'
Netid Recv-Q Send-Q                           Local Address:Port                                          Peer Address:Port              
tcp   0      128                                          *:22                                                       *:*                  
tcp   0      128                                         :::22                                                      :::*    

对比netstat和ss查看端口的效果

[root@k8s-m1 ~]# netstat -anp|grep 2379|grep LISTEN
tcp        0      0 192.168.2.140:2379      0.0.0.0:*               LISTEN      5680/etcd           
tcp        0      0 127.0.0.1:2379          0.0.0.0:*               LISTEN      5680/etcd           

[root@k8s-m1 ~]# ss -l4|grep 2379
tcp    LISTEN     0      128    192.168.2.140:2379                  *:*                    
tcp    LISTEN     0      128    127.0.0.1:2379                  *:*                    
[root@k8s-m1 ~]# 

更多ss的语法请自行摸索,可以通过ss -h查看帮助信息!!!

三、netstat
netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。
netstat 查看端口占用语法格式:

netstat -tunlp | grep 端口号
-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名

例如查看 2379端口的情况,使用以下命令:
[root@k8s-m1 ~]# netstat -anp|grep 2379|more
tcp        0      0 192.168.2.140:2379      0.0.0.0:*               LISTEN      5680/etcd           
tcp        0      0 127.0.0.1:2379          0.0.0.0:*               LISTEN      5680/etcd           
tcp        0      0 192.168.2.140:42178     192.168.2.141:2379      ESTABLISHED 30213/kube-apiserve 
tcp        0      0 192.168.2.140:42244     192.168.2.141:2379      ESTABLISHED 30213/kube-apiserve 
tcp        0      0 192.168.2.140:42082     192.168.2.141:2379      ESTABLISHED 30213/kube-apiserve 

更多命令:

netstat -ntlp //查看当前所有tcp端口
netstat -ntulp | grep 80 //查看所有80端口使用情况
netstat -ntulp | grep 3306 //查看所有3306端口使用情况

在查到端口占用的进程后,如果你要杀掉对应的进程可以使用 kill 命令:
kill -9 PID

如上实例,我们看到 2379端口对应的 PID 为 5680,使用以下命令杀死进程:
kill -9 5680

批量杀掉关于etcd的进程
pkill etcd

更多关于运维方面的相关知识,请前往博客主页查看。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 查看端口占用情况 的相关文章

  • 安装J语言的JQt IDE,出现错误

    我一直按照这里的说明进行操作 http code jsoftware com wiki System Installation Linux http code jsoftware com wiki System Installation L
  • 为什么我可以直接从 bash 执行 JAR?

    我是一个长期从事 Java 工作的人 并且知道运行带有主类的 JAR 的方法MANIFEST MFJar 中的文件很简单 java jar theJar jar 我用它来启动 Fabric3 服务器 包含在bin server jar在其标
  • 将 jar 作为 Linux 服务运行 - init.d 脚本在启动应用程序时卡住

    我目前正在致力于在 Linux VM 上实现一个可运行的 jar 作为后台服务 我已经使用了找到的例子here https gist github com shirish4you 5089019作为工作的基础 并将 start 方法修改为
  • 多处理:仅使用物理核心?

    我有一个函数foo它消耗大量内存 我想并行运行多个实例 假设我有一个有 4 个物理核心的 CPU 每个核心有两个逻辑核心 我的系统有足够的内存来容纳 4 个实例foo并行但不是 8 个 此外 由于这 8 个核心中的 4 个是逻辑核心 我也不
  • 如何使用 GOPATH 的 Samba 服务器位置?

    我正在尝试将 GOPATH 设置为共享网络文件夹 当我进入 export GOPATH smb path to shared folder I get go GOPATH entry is relative must be absolute
  • MySQL 中的创建/写入权限

    我的设备遇到一些权限问题SELECT INTO OUTFILE陈述 当我登录数据库并执行简单的导出命令时 例如 mysql gt select from XYZ into outfile home mropa Photos Desktop
  • php exec 返回的结果比直接进入命令行要少

    我有一个 exec 命令 它的行为与通过 Penguinet 给 linux 的相同命令不同 res exec cd mnt mydirectory zcat log file gz echo res 当将命令直接放入命令行时 我在日志文件
  • waitpid() 的作用是什么?

    有什么用waitpid 它通常用于等待特定进程完成 或者如果您使用特殊标志则更改状态 基于其进程 ID 也称为pid 它还可用于等待一组子进程中的任何一个 无论是来自特定进程组的子进程还是当前进程的任何子进程 See here http l
  • Linux:如何设置进程的时区?

    我需要设置在 Linux 机器上启动的各个进程的时区 我尝试设置TZ变量 在本地上下文中 但它不起作用 有没有一种方法可以使用与系统日期不同的系统日期从命令行运行应用程序 这可能听起来很愚蠢 但我需要一种sandbox系统日期将被更改的地方
  • 监视目录的更改

    很像一个类似的问题 https stackoverflow com questions 112276 directory modification monitoring 我正在尝试监视 Linux 机器上的目录以添加新文件 并希望在这些新文
  • 确定我可以向文件句柄写入多少内容;将数据从一个 FH 复制到另一个 FH

    如何确定是否可以将给定数量的字节写入文件句柄 实际上是套接字 或者 如何 取消读取 我从其他文件句柄读取的数据 我想要类似的东西 n how much can I write w handle n read r handle buf n a
  • 快速像素绘图库

    我的应用程序以每像素的方式生成 动画 因此我需要有效地绘制它们 我尝试过不同的策略 库 但结果并不令人满意 尤其是在更高分辨率的情况下 这是我尝试过的 SDL 好的 但是慢 OpenGL 像素操作效率低下 xlib 更好 但仍然太慢 svg
  • 如何在c linux中收听特定接口上的广播?

    我目前可以通过执行以下操作来收听我编写的简单广播服务器 仅广播 hello int fd socket PF INET SOCK DGRAM 0 struct sockaddr in addr memset addr 0 sizeof ad
  • 高效的内存屏障

    我有一个多线程应用程序 其中每个线程都有一个整数类型的变量 这些变量在程序执行期间递增 在代码中的某些点 线程将其计数变量与其他线程的计数变量进行比较 现在 我们知道在多核上运行的线程可能会无序执行 一个线程可能无法读取其他线程的预期计数器
  • 在 Mac OSX 上交叉编译 x86_64-unknown-linux-gnu 失败

    我尝试将我的 Rust 项目之一编译到 x86 64 unknown linux gnu 目标 cargo build target x86 64 unknown linux gnu Compiling deployer v0 1 0 fi
  • 捕获实时流量时如何开启纳秒精度?

    如何告诉 libpcap v1 6 2 将纳秒值存储在struct pcap pkthdr ts tv usec 而不是微秒值 捕获实时数据包时 Note This question is similar to How to enable
  • Linux 上的基准测试程序

    对于一项任务 我们需要使用不同的优化和参数来对我们的实现进行基准测试 有没有一种可行的方法可以在Linux命令行 我知道时间 上使用不同的参数对小程序进行基准测试 从而为我提供CSV或类似内容的时间数据 输出可能类似于 Implementa
  • Python 脚本作为 Linux 服务/守护进程

    Hallo 我试图让 python 脚本作为服务 守护进程 在 ubuntu linux 上运行 网络上存在多种解决方案 例如 http pypi python org pypi python daemon http pypi python
  • 每个命令都返回“bash:<命令>:找不到命令...”[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我刚刚安装了 Scala 并添加了路径gedit bashrc export SCALA HOME home avijit sca
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen

随机推荐

  • (二)Ubuntu系统Pytorch环境配置

    1 前言 2 安装miniconda 3 安装Pytorch 4 安装CUDA和cuDNN 5 验证 环境配置系列 一 Ubuntu安装详细教程 从镜像制作到NVIDIA驱动安装全流程 超详细的图文教程 二 Ubuntu系统Pytorch环
  • 图解算法使用python吴灿铭 pdf_图解算法

    像小说一样有趣的算法入门书 算法是解决问题的一步步流程 也是计算机科学领域的核心主题 如今程序员 常用的算法已经经过了前人的探索 检验及证明 如果你想搞明白这些算法 又不想被困在繁琐的证明中 本书正是你的不二选择 这本图示丰富 引人入胜的实
  • 【数据结构】零基础树状数组笔记

    参考和引用 树状数组学习笔记 树状数组 数据结构详解与模板 可能是最详细的了 树状数组 简单介绍 树状数组小结 AcWing 241 楼兰图腾 的题解 树状数组求逆序对模板 转 树状数组逆序对 树状数组的作用 树状数组 也叫做二叉索引树 或
  • CMake 入门与进阶

    目录 cmake简介 cmake的下载 cmake 的使用方法 示例一 单个源文件 cmake生成的中间文件以及可执行文件都放在build目录下 示例二 多个源文件 示例三 生成库文件 动态库和静态库 修改库文件名字 最低版本要求 示例四
  • Set接口介绍

    文章目录 前言 一 Set接口 1 Set接口特点 2 Set的实现类 Set接口提供的方法API 二 HashSet 1 HashSet的特点 2 HashSet的属性 3 HashSet的构造函数 4 HashSet方法 三 Linke
  • java中的循环

    java中的循环有四种 循环由四部分组成 1 初始部分 循环判断的变量 2 循环条件 布尔表达式 3 循环操作 循环执行的代码 4 迭代部分 更新循环变量 1 while循环 while的特点 首次判断不满足 则一次都不会执行 先判断 再执
  • 渗透测试之指纹识别(CMS、CDN、WAF)

    目录 什么是指纹识别 1 cms指纹识别 2 cdn指纹识别 3 WAF指纹识别 什么是指纹识别 通过关键特征 识别出目标的CMS系统 服务器 开发语言 操作系统 CDN WAF的类别 版本等等 其中主要识别以下的信息 1 CMS信息 比如
  • C3PO数据库连接池

    一 数据库连接池原理 连接池基本的思想是在系统初始化的时候 将数据库连接作为对象存储在内存中 当用户需要访问数据库时 并非建立一个新的连接 而是从连接池中取出一个已建立的空闲连接对象 使用完毕后 用户也并非将连接关闭 而是将连接放回连接池中
  • Adversarial Visual Robustness by Causal Intervention

    Motivation 机器能够利用人看不见的pattern对目标进行分类 当测试时pattern不变 那么这些pattern是有益的 被称为predictive features 而当他们在攻击中被篡改时 他们就是混淆因子 本文希望通过因果
  • 【C++】《C++标准程序库》小结第九章-算法

    1 普通算法在
  • 软件测试从月薪8k到年薪30W+,一个女测工的辛苦历程

    我花了6年的时间 由月薪8k的手工测试成长到年薪30w 的测试开发 回顾我从手工测试到测试开发的成长路径 基本上是伴随着 3次能力飞跃 实现的 第一次 能力飞跃 从不满足现状开始 第一家入职的时候是一家小公司 工资给了8K多点 刚开始入行的
  • shopify店铺 怎么样 shopify建站 我的使用经验

    公司从19年底开始使用shopify建站 进行品牌宣传和商城交易的相关业务 我个人作为开发也从开发shopify的工作中学习到了很多东西 这个框架非常灵活 官方也提供了很多接口 优点 主题编辑器 可以实时预览编辑 开发灵活 可扩展性强 插件
  • SoapUI经常遇到的问题记录--持续刷新

    1 怎么SoapUI的Request URL不支持大写怎么办 问题 在SoapUI的Request URL中 每次输入的URL中含有的大写字母会自动转换为小写字母 导致请求不了对应的地址该怎么办 解决方法 具体的解决办法是在HTTP Tes
  • java代码中设置mysql时区_关于Java中的mysql时区问题详解

    前言 话说工作十多年 mysql 还真没用几年 起初是外企银行 无法直接接触到 DB 后来一直从事架构方面 也多是解决问题为主 这次搭建海外机房 围绕时区大家做了一番讨论 不说最终的结果是什么 期间有同事认为 DB 返回的是 UTC 时间
  • 对图像中语义信息、高层和底层特征的理解

    前言 在计算机视觉中 大家经常会提起图像的语义信息以及图像的高层特征和底层特征 那么到底什么是图像的语义呢 图像的高层特征和底层特征又包含哪些信息的呢 今天我们就来说一说 1 图像的语义信息 图像的语义分为视觉层 对象层和概念层 视觉层即通
  • springboot属性类自动加载配置文件中的值

    springboot属性类自动加载配置文件中的值 如Person类加载在yml中配置的name age等属性值 可以通过如下步骤获取 类上添加 ConfigurationProperties注解 prefix为yml中配置的属性名称 要想属
  • redhat linux 系统修复,Red Hat 6企业版系统故障修复方法

    rm boot rf dd if dev zero of dev sda bs 446 count 1 rm f etc inittab rm f etc rc d rc sysinit rm f etc rc d rc loacl mv
  • Java中多线程打印abc

    public class PrintABC private int state private int count private static final int MAX COUNT 50 public synchronized void
  • 无处不在的Attention

    概述 之前的博客中 笔者都曾提到attention机制 这种考虑全局 关注重点的机制在深度学习中很常见 尤其是self attention将自然语言处理带到一个新高度 attention增加了深度学习的可解释性 并且应用广泛 在自然语言处理
  • Linux 查看端口占用情况

    Linux 查看端口占用情况可以使用 lsof ss和 netstat 命令 一 lsof lsof命令详解 lsof list open files 是一个列出当前系统打开文件的工具 lsof 查看端口占用语法格式 lsof i 端口号