<p>在Linux使用过程中,我们经常需要查看哪个进程占用了哪个端口,或者哪个端口被哪个进程占用。废话不多说,直接上干货,教大家怎样查看系统端口占用情况。</p><p><strong>Linux 查看端口占用情况可以使用 lsof 和 netstat 命令:</strong></p><p style="white-space: normal;"><span style="font-size: 18px;"><strong>netstat</strong></span></p><p style="white-space: normal;">netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。</p><p style="white-space: normal;">netstat 查看端口占用语法格式:</p><pre class="brush:bash;toolbar:false">netstat -tunlp | grep 端口号</pre><p style="white-space: normal;"><span style="font-size: 14px; color: rgb(0, 112, 192);">-t (tcp) 仅显示tcp相关选项</span></p><p style="white-space: normal;"><span style="font-size: 14px; color: rgb(0, 112, 192);">-u (udp)仅显示udp相关选项</span></p><p style="white-space: normal;"><span style="font-size: 14px; color: rgb(0, 112, 192);">-n 拒绝显示别名,能显示数字的全部转化为数字</span></p><p style="white-space: normal;"><span style="font-size: 14px; color: rgb(0, 112, 192);">-l 仅列出在Listen(监听)的服务状态</span></p><p style="white-space: normal;"><span style="font-size: 14px; color: rgb(0, 112, 192);">-p 显示建立相关链接的程序名</span></p><p style="white-space: normal;">例如查看 8000 端口的情况,使用以下命令:</p><pre class="brush:bash;toolbar:false"># netstat -tunlp | grep 8000 tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 26993/nodejs</pre><p style="white-space: normal;">更多命令:</p><p style="white-space: normal;"><span style="font-size: 14px;">netstat -ntlp //查看当前所有tcp端口</span></p><p style="white-space: normal;"><span style="font-size: 14px;">netstat -ntulp | grep 80 //查看所有80端口使用情况</span></p><p style="white-space: normal;"><span style="font-size: 14px;">netstat -ntulp | grep 3306 //查看所有3306端口使用情况</span></p><p><strong><span style="font-size: 18px;">lsof</span></strong></p><p>lsof(list open files)是一个列出当前系统打开文件的工具。</p><p>lsof 查看端口占用语法格式:</p><pre class="brush:bash;toolbar:false">lsof -i:端口号</pre><p>实例</p><p>查看服务器 8000 端口的占用情况:</p><pre class="brush:bash;toolbar:false"># lsof -i:8000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nodejs 26993 root 10u IPv4 37999514 0t0 TCP *:8000 (LISTEN)</pre><p>可以看到 8000 端口已经被轻 nodejs 服务占用。</p><p>lsof -i 需要 root 用户的权限来执行。</p><p>更多 lsof 的命令如下:</p><p><span style="font-size: 14px;">lsof -i:8080:查看8080端口占用</span></p><p><span style="font-size: 14px;">lsof abc.txt:显示开启文件abc.txt的进程</span></p><p><span style="font-size: 14px;">lsof -c abc:显示abc进程现在打开的文件</span></p><p><span style="font-size: 14px;">lsof -c -p 1234:列出进程号为1234的进程所打开的文件</span></p><p><span style="font-size: 14px;">lsof -g gid:显示归属gid的进程情况</span></p><p><span style="font-size: 14px;">lsof +d /usr/local/:显示目录下被进程开启的文件</span></p><p><span style="font-size: 14px;">lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长</span></p><p><span style="font-size: 14px;">lsof -d 4:显示使用fd为4的进程</span></p><p><span style="font-size: 14px;">lsof -i -U:显示所有打开的端口和UNIX domain文件</span></p><p><span style="font-size: 14px; color: rgb(255, 0, 0);">注意:此命令需要先安装lsof命令。</span></p><p>kill</p><p>在查到端口占用的进程后,如果你要杀掉对应的进程可以使用 kill 命令:</p><pre class="brush:bash;toolbar:false">kill -9 PID</pre><p>如上实例,我们看到 8000 端口对应的 PID 为 26993,使用以下命令杀死进程:</p><pre class="brush:bash;toolbar:false">kill -9 26993</pre><p>以上就是关于“Linux查看端口占用情况和进程”的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流。</p>