在Linux系统中,我们经常需要查看某个端口被哪个进程占用,特别是在排查网络问题和系统故障时,这是非常有用的技能。下面介绍4种查看80端口被哪个进程占用的方法,适用于各种Linux系统。
1. 使用lsof命令
lsof(list open files)是一个列出当前系统打开文件的工具,我们可以使用它来查看哪些进程正在使用某个端口。要查看80端口被哪个进程占用,可以使用以下命令:
sudo lsof -i :80
执行该命令后,你将看到类似以下的输出:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 12345 wwwdata 7u IPv4 12345 0t0 TCP *:http (LISTEN) nginx 12346 wwwdata 7u IPv4 12346 0t0 TCP *:http (LISTEN)
从输出中可以看出,有两个名为nginx的进程正在监听80端口,PID为12345的进程是主进程,PID为12346的进程是工作进程。
2. 使用netstat命令
netstat(network statistics)是一个显示网络状态的命令,我们可以使用它来查看哪些进程正在使用某个端口。要查看80端口被哪个进程占用,可以使用以下命令:
sudo netstat -tuln | grep :80
执行该命令后,你将看到类似以下的输出:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 12345/nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 12346/nginx
从输出中可以看出,有两个名为nginx的进程正在监听80端口,PID为12345的进程是主进程,PID为12346的进程是工作进程。
3. 使用ss命令
ss(socket statistics)是一个显示套接字统计信息的命令,我们可以使用它来查看哪些进程正在使用某个端口。要查看80端口被哪个进程占用,可以使用以下命令:
sudo ss -tuln | grep :80
执行该命令后,你将看到类似以下的输出:
LISTEN 0 128 *:80 *:* users:(("nginx",pid=12345,fd=7),("nginx",pid=12346,fd=7))
从输出中可以看出,有两个名为nginx的进程正在监听80端口,PID为12345的进程是主进程,PID为12346的进程是工作进程。
4. 使用top命令
top命令可以实时显示系统中各个进程的资源占用情况,我们可以使用它来查看哪些进程正在使用某个端口。要查看80端口被哪个进程占用,可以在终端中输入top命令,然后按下Shift + F9键,切换到“内存”视图,接着按下Shift + F7键,切换到“按CPU使用率排序”视图,最后按下Shift + F8键,切换到“按内存使用率排序”视图,此时,你将看到类似以下的输出:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 12345 wwwdata 20 0 12345 7896 6564 S 0.3 0.1 0:15.69 httpd 12346 wwwdata 20 0 12346 7896 6564 S 0.3 0.1 0:15.69 httpd 1 root 20 0 0 0 0 S 0.0 0.0 0:01.29 systemd-journal 1 root 20 0 0 0 0 S 0.0 0.0 0:03.75 kthreadd ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
从输出中可以看出,有两个名为httpd的进程正在监听80端口,PID为12345的进程是主进程,PID为12346的进程是工作进程,这两个进程可能是Nginx服务器的组件。
问题与解答
问题1:为什么在lsof命令的输出中,有的主进程的PID比工作进程的PID小?
解答:这可能是因为主进程在启动时创建了工作进程,所以它的PID会比工作进程小,但这并不影响它们之间的关联关系,我们可以通过查看其他信息(如COMMAND列)来判断它们之间的关系。
问题2:为什么在netstat和ss命令的输出中,没有显示进程的名称?
解答:这是因为这些命令默认不显示进程的名称,如果需要显示进程的名称,可以使用p选项或者结合grep命令来实现,例如:
sudo netstat -tulnp | grep ':80' sudo ss -tulnp | grep ':80'
问题3:为什么在top命令的输出中,有些进程的名称是数字?
解答:这是因为有些进程的名称太长,无法完全显示在终端中,所以top命令会显示它们的PID。如果需要查看进程的全名,可以在top命令中按下c键。
以上就是在Linux系统中查看80端口被哪个进程占用的4种方法,可以根据需求选择合适的命令进行使用。
推荐的相关问题:
- 如何停止80端口的进程?
- 如何查看端口占用情况?
- 如何杀死一个进程?
感谢阅读,希望本文对你有所帮助!欢迎留言评论、关注、点赞、分享!
谢谢!
评论留言