linux 根据端口查找进程号

本文介绍了解决Apache服务器启动时遇到80端口被占用的问题,通过使用netstat命令查找占用端口的进程,并使用kill命令终止该进程,最终成功重启Apache服务。

在配置apache过程中,启动时发现:

启动 httpd:(98)Address already in use: make_sock: could not bind to address 192.168.0.108:80
no listening sockets available, shutting down
Unable to open logs

–通过netstat命令查找 80端口,发现已经被 php占用(未正常结束所致)

[root@voip logs]# netstat -lnp|grep 80
tcp        0      0 0.0.0.0:3306   0.0.0.0:*   LISTEN      3280/mysqld         
tcp        0      0 192.168.0.108:80  0.0.0.0:*  LISTEN   13361/php      
udp        0      0 0.0.0.0:12680  0.0.0.0:* 3411/asterisk       
udp        0      0 0.0.0.0:19380   0.0.0.0:*  3411/asterisk       
udp        0      0 0.0.0.0:18000   0.0.0.0:* 3411/asterisk       
udp        0      0 0.0.0.0:18001  0.0.0.0:* 3411/asterisk       
udp        0      0 0.0.0.0:17880 0.0.0.0:*    3411/asterisk       
unix  2   [ ACC ]  STREAM LISTENING  7908   3280/mysqld  /var/lib/mysql/mysql.sock
unix  2      [ ACC ]     STREAM     LISTENING     8180   3354/master         private/trace
unix  2      [ ACC ]     STREAM     LISTENING     5780   2375/audispd        /var/run/audispd_events
--通过kill -9杀死异常进程
[root@voip logs]# kill -9 13361
[root@voip logs]# service httpd restart
<think>好的,用户想了解在Linux上如何根据端口号杀死程。我之前处理过类似的问题,记得在Windows下可以用netstat和taskkill,但Linux的命令可能不同。首先,我需要确认用户的需求:他们可能遇到了端口被占用的情况,想要终止占用特定端口程。接下来,我需要回忆或查找Linux下对应的命令。 首先,查找占用端口程,通常可以使用lsof或者netstat命令。例如,使用`lsof -i :端口号`来列出相关程。如果系统没有安装lsof,可能需要安装或者改用netstat。不过现在很多Linux发行版中,netstat已经被ss命令取代,但netstat仍然可用。例如,`netstat -tulnp | grep :端口号`可以找到对应的程ID(PID)。 找到PID之后,再用kill命令终止程。可能需要使用不同的信号,比如默认的SIGTERM(15)或强制终止的SIGKILL(9)。用户可能需要知道如何强制终止不响应的程。 另外,用户可能还希望一条命令直接完成查找和终止,这时候可以结合awk或者xargs来传递PID给kill命令。例如,`lsof -ti :端口号 | xargs kill -9`。但需要注意权限问题,可能需要sudo。 还需要考虑用户是否有权限终止目标程,如果没有,可能需要使用sudo提升权限。此外,用户可能不知道如何安装lsof,可以提示安装命令,比如`sudo apt install lsof`(适用于Debian/Ubuntu)。 最后,用户可能想知道为什么某些程无法终止,或者如何确认程已被终止,可以建议再次检查端口占用情况。 总结步骤应该是:1. 查找端口对应的PID;2. 使用kill命令终止程。可能需要分步说明,并给出不同方法的示例,比如使用lsof、netstat、ss等工具,以及如何组合命令快速执行。同时提醒用户谨慎使用强制终止,以免影响系统稳定性。</think>要终止Linux上占用特定端口程,可以通过以下步骤实现: ### 方法1:使用`lsof`命令 1. **查找程PID** 执行命令查看占用端口程ID: ```bash sudo lsof -i :<端口号> ``` 例如查找80端口: ```bash sudo lsof -i :80 ``` 2. **终止程** 根据返回的PID(例如PID=1234),执行kill命令: ```bash sudo kill -9 1234 ``` 或直接组合命令: ```bash sudo kill -9 $(lsof -ti :80) ``` ### 方法2:使用`ss`或`netstat` 1. **查找程PID** 通过以下命令组合过滤端口: ```bash sudo ss -tulnp | grep ':80' ``` 或 ```bash sudo netstat -tulnp | grep ':80' ``` 2. **提取并终止程** 从输出中读取PID后执行kill命令,或使用awk直接提取: ```bash sudo kill -9 $(ss -tulnp | awk '/:80/{print $NF}' | cut -d',' -f2 | cut -d'=' -f2) ``` ### 关键点说明 - `lsof -i` 直接关联端口程,输出更简洁[^1] - `-9` 参数表示强制终止(SIGKILL信号),必要时使用[^2] - 普通用户可能需要`sudo`权限才能查看系统级
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值