Linux查看端口使用状态、关闭端口方法

本文介绍了如何在CentOS系统中进行防火墙的基本配置,包括查看已开启端口、禁用特定端口、开放80端口等常用操作。同时提供了针对不同版本CentOS的具体命令示例。

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

转自:http://blog.sina.com.cn/s/blog_48e301050101h9ub.html

前提:首先你必须知道,端口不是独立存在的,它是依附于进程的。某个进程开启,那么它对应的端口就开启了,进程关闭,则该端口也就关闭了。下次若某个进程再次开启,则相应的端口也再次开启。而不要纯粹的理解为关闭掉某个端口,不过可以禁用某个端口。

1. 可以通过"netstat -anp" 来查看哪些端口被打开。
(注:加参数'-n'会将应用程序转为端口显示,即数字格式的地址,如:nfs->2049,ftp->21,因此可以开启两个终端,一一对应一下程序所对应的端口号)
2. 然后可以通过"lsof-i:$PORT"查看应用该端口的程序($PORT指对应的端口号)。或者你也可以查看文件/etc/services,从里面可以找出端口所对应的服务。
(注:有些端口通过netstat查不出来,更可靠的方法是"sudo nmap -sT -O localhost")
3. 若要关闭某个端口,则可以:
1)通过iptables工具将该端口禁掉,如:
"sudo iptables -A INPUT -p tcp --dport $PORT -j DROP"
"sudo iptables -A OUTPUT -p tcp --dport $PORT -j DROP"
2)或者关掉对应的应用程序,则端口就自然关闭了,如:
"kill -9 PID" (PID:进程号)
如: 通过"netstat -anp | grep ssh"
有显示: tcp 0 127.0.0.1:2121 0.0.0.0:* LISTEN 7546/ssh
则: "kill -9 7546"

(可通过"chkconfig"查看系统服务的开启状态)

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

经常使用CentOS的朋友,可能会遇到和我一样的问题。开启了防火墙导致80端口无法访问,刚开始学习centos的朋友可以参考下。


经常使用CentOS的朋友,可能会遇到和我一样的问题。最近在Linux CentOS防火墙下安装配置 ORACLE
数据库的时候,总显示因为网络端口而导致的EM安装失败,遂打算先关闭一下CentOS防火墙。偶然看到CentOS防火墙的配置操作说明,感觉不错。执

行”setup”命令启动文字模式配置实用程序,在”选择一种工具”中选择”防火墙配置”,然后选择”运行工具”按钮,出现CentOS防火墙配置界面,
将”安全级别”设为”禁用”,然后选择”确定”即可.

这样重启计算机后,CentOS防火墙默认已经开放了80和22端口

简介:CentOS是Linux家族的一个分支。

CentOS防火墙在虚拟机的CENTOS装好APACHE不能用,郁闷,解决方法如下

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT

然后保存:

/etc/rc.d/init.d/iptables save
centos 5.3,5.4以上的版本需要用
service iptables save
来实现保存到配置文件。
这样重启计算机后,CentOS防火墙默认已经开放了80和22端口。

这里应该也可以不重启计算机:

/etc/init.d/iptables restart

CentOS防火墙的关闭,关闭其服务即可:

查看CentOS防火墙信息:/etc/init.d/iptables status

关闭CentOS防火墙服务:/etc/init.d/iptables stop

永久关闭?不知道怎么个永久法:

chkconfig –level 35 iptables off

上面的内容是针对老版本的centos,下面的内容是基于新版本。

iptables -P INPUT DROP

这样就拒绝所有访问 CentOS 5.3 本系统数据,除了 Chain RH-Firewall-1-INPUT (2references) 的规则外 , 呵呵。

用命令配置了 iptables 一定还要 service iptables save 才能保存到配置文件。

cat /etc/sysconfig/iptables 可以查看 防火墙 iptables 配置文件内容

# Generated by iptables-save v1.3.5 on Sat Apr 14 07:51:072001
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1513:149055]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -jACCEPT
-A RH-Firewall-1-INPUT -p esp -j ACCEPT
-A RH-Firewall-1-INPUT -p ah -j ACCEPT
-A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -jACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -jACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-withicmp-host-prohibited
COMMIT
# Completed on Sat Apr 14 07:51:07 2001

另外补充:
CentOS 防火墙配置 80端口
看了好几个页面内容都有错,下面是正确方法:
#/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
#/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT

然后保存:
#/etc/rc.d/init.d/iptables save

再查看是否已经有了:
[root@vcentos ~]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:80
2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
3 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0

* 设置iptables为自动启动
chkconfig --level 2345 iptables on

可能因为大家使用的版本不一,所有使用方法也略有不同。

如果需要远程管理mysql,则使用以下指令临时打开,用完后关闭

* 打开指令
iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx --dport 3306 -jACCEPT

* 关闭指令
iptables -D INPUT -p tcp -s xxx.xxx.xxx.xxx --dport 3306 -jACCEPT
<think>好的,用户现在想知道如何在Linux系统中检查端口占用情况并关闭占用端口。我需要根据提供的引用资料来整理步骤,确保回答准确。 首先,查看端口占用的方法,用户提到了几种命令:netstat、lsof和ss。根据引用[2],netstat的参数包括-a、-n、-p,还有-t、-u来指定TCP或UDP。例如使用netstat -tunlp | grep 端口号可以找到对应的进程。引用[4]提到了lsof -i的命令格式,比如lsof -i:8080可以直接查看指定端口的进程信息。另外,ss是较新的工具,可能更高效,可以补充进去。 接下来是关闭进程的方法,引用[1]和[3]都提到了用kill -9 PID来强制终止进程。需要提醒用户谨慎使用kill -9,可能会导致数据丢失,应该先尝试普通kill命令。 然后要考虑用户可能的疑问,比如权限问题,需要sudo权限才能杀死其他用户的进程。另外,如果进程被杀死后再次启动,可能需要检查服务配置防止端口再次被占用。 生成相关问题的时候,可以涉及不同方法的比较、处理无权限的情况、端口释放后仍被占用的原因,以及如何预防端口被占用。这些能帮助用户更深入理解问题。 最后,确保回答结构清晰,分步骤说明,并给出示例命令,让用户能一步步操作。同时注意使用正确的LaTeX格式,比如变量用$符号包裹,但这里可能涉及较少数学内容,所以重点在命令格式的正确展示。</think>### Linux系统中检查端口占用并关闭进程的方法 #### 一、查看端口占用的三种方法 1. **使用`netstat`命令**(适合所有Linux发行版) 通过以下命令组合可定位端口占用进程: ```bash netstat -tunlp | grep 端口号 # 例如 netstat -tunlp | grep 8080 ``` - `-t`:显示TCP连接 - `-u`:显示UDP连接 - `-n`:显示数字地址(避免DNS解析) - `-l`:仅显示监听状态端口 - `-p`:显示进程ID和名称[^2] 2. **使用`lsof`命令**(需安装`lsof`工具) 直接通过端口号查询: ```bash lsof -i :端口号 # 例如 lsof -i :3306 ``` 支持更灵活的协议/IP筛选: ```bash lsof -i [email protected]:8080 # 指定协议和IP[^4] 3. **使用`ss`命令**(替代`netstat`的高效工具) ```bash ss -ltnp | grep 端口号 ``` #### 二、关闭占用端口的进程 1. **通过进程ID终止** 获取进程ID(如`2597932`)后执行: ```bash kill -9 2597932 # 强制终止进程[^1] ``` - 建议优先尝试普通终止:`kill 2597932` - 需要权限时添加`sudo` 2. **通过进程名称终止**(需安装`pkill`) ```bash pkill -9 进程名 # 例如 pkill -9 java ``` #### 三、操作注意事项 - 使用`kill -9`可能导致数据丢失,优先尝试`kill PID`[^1] - 若端口被系统服务占用,需通过服务管理命令处理: ```bash systemctl stop 服务名 # 例如 systemctl stop nginx ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值