CentOS查询端口占用和清除端口占用的程序

本文介绍了一种查询特定端口占用情况的方法,包括通过lsof、netstat等命令获取进程信息,以及如何终止占用端口的进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、查询端口号占用,根据端口查看进程信息

[root@server2 ~]# lsof -i:80
COMMAND  PID   USER   FD   TYPE DEVICE SIZE NODE NAME
httpd   5014   root    3u  IPv4  14346       TCP server2:http (LISTEN)
2、根据进程号查看进程对应的可执行程序 
ps -f -p 进程号
# ps -f -p 5014
UID        PID  PPID  C STIME TTY          TIME CMD
root      5014     1  0 17:26 ?        00:00:00 /usr/local/apache/bin/httpd -k
3、根据可执行程序查看动态链接 
ldd 可执行文件名

ldd  /usr/local/apache/bin/httpd
        linux-vdso.so.1 =>  (0x00007fff9dc90000)
        libaprutil-0.so.0 => /usr/local/apache/lib/libaprutil-0.so.0 (0x00002af026fcd000)   
4、根据端口号得到其占用的进程的详细信息

netstat -tlnp|grep 80
tcp        0      0 192.168.33.10:80            0.0.0.0:*                   LISTEN      5014/httpd
tcp        0      0 0.0.0.0:48054               0.0.0.0:*                   LISTEN      5386/java

这一步骤等于刚才上面的一二两个步骤

5、根据端口号查询,查询其占用进程ID

netstat -tlnp|grep 80|awk '{print 7}'|awk -F '/' '{print1}'
5014
或则是用下面的命令

netstat -pan|grep 80

NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interval]
-a            显示所有连接和监听端口。
-b            显
示包含于创建每个连接或监听端口的可执行组件。在某些情况下已知可执行组件 
拥有多个独立组件,并且在这些情况下包含于创建连接或监听端口的组件序列被显示。这种情况下,可执行组件名 在底部的 [] 
中,顶部是其调用的组件,等等,直到 TCP/IP 部分。注意此选项  可能需要很长时间,如果没有足够权限可能失败。              

-e            显示以太网统计信息。此选项可以与 -s选项组合使用。                
-n            以数字形式显示地址和端口号。
-o            显示与每个连接相关的所属进程 ID。
-p
proto      显示 proto 指定的协议的连接;proto 可以是下列协议之一: TCP、UDP、TCPv6 或 
UDPv6。  如果与 -s 选项一起使用以显示按协议统计信息,proto 可以是下列协议之一: 
IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。                
-r   显示路由表。
-s  显示按协议统计信息。默认地,显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;
-p 选项用于指定默认情况的子集。                
-v            与 -b 选项一起使用时将显示包含于 为所有可执行组件创建连接或监听端口的组件。                
interval      重新显示选定统计信息,每次显示之间 暂停时间间隔(以秒计)。按 CTRL+C 停止重新 显示统计信息。如果省略,netstat 显示当前 配置信息(只显示一次)

6、一次性的清除占用80端口的程序

lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh

7、手工终止进程的运行

kill 5014
如果终止不了,可以强制终止
kill -9 5014
lsof -i:80

<think>好的,我现在需要帮助用户解决Hadoop启动后使用jps命令查不到相关进程的问题,尤其是怀疑端口占用的情况。首先,我应该回忆一下之前用户提供的引用内容,看看有没有相关的解决方案。 引用1提到,如果jps查看不到进程,可能是端口占用。解决方法包括检查占用端口的进程,并终止它,或者更换端口。引用23也讨论了端口占用的问题,特别是未正常关闭导致后台进程残留的情况。引用4则提到Hadoop的Standby NameNode相关问题,但可能当前问题关联不大。 用户的问题是jps进程不显示,怀疑端口占用。我需要按照步骤来引导用户解决。首先应该确认Hadoop的日志是否有报错信息,这能帮助确定具体哪个组件出问题。例如,NameNode或DataNode启动失败通常会在日志中有记录。 接下来,检查端口占用情况是关键步骤。Hadoop的各个组件使用不同的端口,比如NameNode通常用8020、50070,ResourceManager用8088等。用户需要使用netstat或lsof命令来查看这些端口是否被占用。例如,使用`netstat -tuln | grep 8020`来检查端口状态。如果发现被占用,需要找到进程ID(PID)并终止它,或者修改Hadoop配置更换端口。 另外,Hadoop的临时目录权限问题也可能导致进程无法启动。需要确保/tmp/hadoop-*目录的权限正确,用户有读写权限。此外,关闭防火墙SELinux有时也能解决端口访问问题。 如果上述方法无效,可能需要重新格式化Hadoop文件系统,但要注意这会清除数据,所以需谨慎操作。最后,检查配置文件如core-site.xml、hdfs-site.xml等是否正确,IP主机名映射是否正确,避免配置错误导致启动失败。 用户可能需要分步骤操作,先检查日志,再检查端口,处理权限问题,最后考虑重新格式化或检查配置。同时,生成相关问题可以帮助用户进一步排查其他可能性。</think>### JPS进程无法显示且端口占用的解决方案 #### 1. **检查Hadoop日志定位问题** - 首先查看Hadoop组件(如NameNode、DataNode)的日志文件,路径通常为`$HADOOP_HOME/logs/`。日志中若出现`Address already in use`或`BindException`错误,说明端口占用[^1][^2]。 - 示例错误日志片段: ``` java.net.BindException: Port 8020 is already in use ``` #### 2. **查找并终止占用端口的进程** - **查找占用端口的进程ID** 使用命令(以端口8020为例): ```bash netstat -tuln | grep 8020 # 查看端口占用状态 lsof -i :8020 # 获取进程PID ``` 或Windows系统使用: ```bash netstat -ano | findstr :8020 ``` - **终止进程** 根据获取的PID终止进程(Linux/Mac): ```bash kill -9 <PID> # 强制终止进程 ``` Windows系统使用: ```bash taskkill /PID <PID> /F # 强制终止进程 ``` #### 3. **修改Hadoop默认端口(可选)** - 若默认端口与其他服务冲突,修改Hadoop配置文件: - **NameNode端口**:在`hdfs-site.xml`中修改`dfs.namenode.rpc-address`或`dfs.namenode.http-address`的值。 - **DataNode端口**:调整`dfs.datanode.address`或`dfs.datanode.http.address`[^1][^4]。 - 示例配置片段: ```xml <property> <name>dfs.namenode.rpc-address</name> <value>0.0.0.0:8021</value> <!-- 更换为可用端口 --> </property> ``` #### 4. **检查临时目录权限** - Hadoop可能因临时目录权限问题无法启动进程: ```bash chmod -R 755 /tmp/hadoop-* # 赋予用户读写权限 ``` #### 5. **关闭防火墙/SELinux** - 临时关闭防火墙(Linux): ```bash systemctl stop firewalld # CentOS ufw disable # Ubuntu ``` - 禁用SELinux: ```bash setenforce 0 # 临时关闭 ``` #### 6. **重新格式化HDFS(谨慎操作)** - 若NameNode未初始化,执行: ```bash hdfs namenode -format # 会清除HDFS数据! ``` #### 7. **验证配置文件** - 检查`core-site.xml`、`hdfs-site.xml`等文件,确保IP地址主机名映射正确: ```xml <property> <name>fs.defaultFS</name> <value>hdfs://your_hostname:8020</value> <!-- 需与实际主机名一致 --> </property> ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值