不管是进程排查还是端口占用查看,都经常会要用到通过网络端口号查询对应程序的指令,每次要用到都得在网上找有点麻烦,因此决定将指令整理到这篇文章中,方便随时查阅
Windows
首先通过指令查看网络端口占用情况,如果做溯源排查,可以先看整个网络外连情况,排查IP和端口
netstat -ano
知道具体端口号可以直搜搜索端口占用情况,获取对应PID值,PID值为最后一列数据
netstat -ano | findstr <端口号>
通过PID值可以获取对应程序名称
tasklist /v /fi "PID eq <PID>"
进一步还可以通过PID获取运行程序所在路径
wmic process where ProcessId=<PID> get ExecutablePath
要终止对应进程程序,可以使用默认模式终止指定的进程,会发送终止信号给进程,有留给程序退出和清理的时间
taskkill <PID>
如果运行的是恶意程序,可以通过指令立即强制杀死PID对应进程和子进程
taskkill /f /t /im <PID>
Linux
和Windows一样,Linux查看系统网络情况也是同一条指令
netstat -antl
查看指定端口占用情况,其中-p
就是显示端口进程的意思,输出列表的最后一列会显示PID和应用程序名
netstat -nap | grep 端口号
通过进程号查看运行程序,会在输出列表最后显示运行程序的执行命令,如python3 server.py
ps -aux | grep <PID>
通过上面这条指令,我们只能知道是是哪个程序在运行,还不清楚这个程序具体在什么路径下。想要获取运行程序路径可以通过/proc
目录来实现。
在Linux上,每个运行的进程在/proc
目录下都有一个以其PID命名的目录,其中包含了与该进程相关的信息,我们可以通过/proc
来获取进程运行信息。
如下获取进程运行程序路径,像上面的示例指令就是获取python3
的绝对路径
ls -l /proc/<PID>/exe
下面指令可以获取具体运行程序所在路径,像上面的示例指令就是获取server.py
脚本所在路径
ls -l /proc/<PID>/cwd
还可以获取运行程序的执行指令,上面通过ps -aux
已经可以获取到了,这里算一个补充方法
cat /proc/<PID>/cmdline | tr '\0' ' ' && echo
最后,如果想要杀死运行程序,可以通过下面的指令杀掉进程,这个命令发送SIGTERM信号给指定的进程。SIGTERM是默认的终止信号,会请求进程正常退出
kill <PID>
如果运行的是顽固的恶意进程,可以使用下面的指令强制杀死进程,这个命令发送SIGKILL信号给指定的进程。SIGKILL是一个无法被忽略或捕获的终止信号,它可以立即强制终结任何进程,不给进程执行清理操作的机会
kill -9 <PID>