一、Windows下查看进程及结束进程命令


  1. 查看占用8080端口的进程号

    netstat -aon | findstr “8080”
    结果:TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 3500
    可知,进程号为3500的进程占用了8080端口

  2. 可以使用命令 tasklist | findstr “3500”进一步查看3500进程的具体信息。

    tasklist | findstr “3500”
    结果:javaw.exe 3500 Console 0 28,792 K
    可知3500进程为javaw.exe。

  3. 杀掉进程

    taskkill /pid 3500 /F

二、linux下查看进程号并杀死进程


问题描述:

使用nohup &运行后台程序,命令如下:

nohup python server.py &

该命令可以保持程序后台运行(保证你的xshell断了但服务不会停)

但是在重新启动server.py的时候,服务器会提示端口被占用

这时需要先杀死之前的程序,再重新启动。

步骤:

  1. 查看进程号

    使用 lsof -i:端口号查看进程号(当知道端口号的时候),比如查看1500端口的进程号:

    lsof -i:1500
    

    这个PID 79297就是进程号
    img

  2. 当系统不支持lsof时,可以使用netstat

    netstat -ntlp | grep [port(端口号)]
    
  3. 当不知道端口号,但是知道程序名称时,使用ps aux查看

    ps -aux | grep server.py
    

注意:

不是S+的那一列对应的就是PID。

Sl那一列代表运行状态STAT,S表示中断?反正查了查我没懂。我理解的是S+代表你查询命令的临时进程号,而不是程序运行的进程号,一般S,Sl或者Sl+表示正在运行的程序。

另外,我发现使用ps aux的时候,为啥别人的USER显示名字,而我就显示515用户id?查了发现linux本身机制问题,当用户名称超过8个字符,系统会自动显示用户对应id。

  1. 杀死进程:

    kill -9 PID (注意PID替换成自己查询到的PID代号,例如我上面查询到的是79297)
    

拓展:

根据PID可以查询进程名称,命令如下:

ll /proc/PID

这样就可以定位到该运行程序的路径

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐