• 笔记常用Linux命令(二) 进程和端口


    查看系统进程

    • ps:用于报告当前系统的进程状态
      • a:显示所有终端机下执行的程序
    ps -ef/ps aux: 这两个命令都是查看当前系统正在运行进程,两者的区别是展示格式不同。
    如果想要查看特定的进程可以使用这样的格式:ps aux|grep redis (查看包括redis字符串的进程)
    
    [root@VM_0_4_centos ~]# ps -ef | grep nginx
    root      1892     1  0 15:19 ?        00:00:00 nginx: master process nginx
    nginx     1893  1892  0 15:19 ?        00:00:00 nginx: worker process
    root      1908  1248  0 15:19 pts/0    00:00:00 grep --color=auto nginx
    
    
    
    root@iZuf6c0rnhno78oq2pxylnZ:~# ps -aux 
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    
    USER 进程的属主;
    PID 进程的ID;
    PPID 父进程;
    %CPU 进程占用的CPU百分比;
    %MEM 占用内存的百分比;
    NI 进程的NICE值,数值大,表示较少占用CPU时间;
    VSZ 进程虚拟大小;
    RSS 驻留中页的数量;
    TTY 终端ID
    STAT 进程状态(有以下几种)
    D 无法中断的休眠状态(通常 IO 的进程);
    R 正在运行可中在队列中可过行的;
    S 处于休眠状态;
    T 停止或被追踪;
    W 进入内存交换(从内核2.6开始无效);
    X 死掉的进程(从来没见过);
    Z 僵尸进程;
    

    杀死进程

    • kill : 用来删除执行中的程序或工作

      • 语法: kill(选项)(参数)

      • 选项:

        • a:当处理当前进程时,不限制命令名和进程号的对应关系;
        • l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称;
        • p:指定kill 命令只打印相关进程的进程号,而不发送任何信号;
        • s <信息名称或编号>:指定要送出的信息;
        • u:指定用户
      • 参数:进程或作业识别号:指定要删除的进程或作业。常用PID

    • 列出所有信号名称

      • kill -l
    root@iZuf6c0rnhno78oq2pxylnZ:~# kill -l
     1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
     6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
    ·
    ·
    ·
    
    • 得到指定信号的数值
      • kill -l KILL
    root@iZuf6c0rnhno78oq2pxylnZ:~# kill -l KILL
    9
    
    • 杀死进程
    1. 查看nginx进程:ps -aux | grep nginx
    root@iZuf6c0rnhno78oq2pxylnZ:~# ps -aux | grep nginx
    root       323  0.0  0.2 117656  4924 ?        Ss    2019   0:00 nginx: master process nginx
    root      3412  0.0  0.0  14224   968 pts/0    S+   16:32   0:00 grep --color=auto nginx
    www-data 30902  0.0  0.2 118032  4992 ?        S    Jan04   0:00 nginx: worker process
    

    2、杀死nginx进程:kill -9 323 30902

    root@iZuf6c0rnhno78oq2pxylnZ:~# kill -9 323 30902
    

    查看程序占用的端口号

    ps:lsof -i 需要 root 用户的权限来执行

    • lsof: 是一个列出当前系统打开文件的工具

      • 语法:lsof(选项)
      • 选项
        • a:列出打开文件存在的进程;
        • c<进程名>:列出指定进程所打开的文件;
        • g:列出GID号进程详情;
        • d<文件号>:列出占用该文件号的进程;
        • d< 目录>:列出目录下被打开的文件;
        • D<目录>:递归列出目录下被打开的文件;
        • n<目录>:列出使用NFS的文件;
        • i<条件>:列出符合条件的进程。(4、6、协议、:端口、 @ip )
        • p<进程号>:列出指定进程号所打开的文件;
        • u:列出UID号进程详情;
        • h:显示帮助信息;
        • v:显示版本信息。
    • 查看占用80端口的程序

    • lsof -i : 端口号

    root@iZuf6c0rnhno78oq2pxylnZ:~# lsof -i:80
    COMMAND     PID     USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
    AliYunDun   822     root   21u  IPv4 46829108      0t0  TCP 172.17.1.142:37126->100.100.30.25:http (ESTABLISHED)
    nginx     19170     root    6u  IPv4 69865848      0t0  TCP 172.17.1.142:http (LISTEN)
    nginx     19173 www-data    6u  IPv4 69865848      0t0  TCP 172.17.1.142:http (LISTEN)
    
    • 根据进程PID查看占用的端口号
    • lsof -i | grep pid
    root@iZuf6c0rnhno78oq2pxylnZ:~# lsof -i | grep 19170
    nginx     19170            root    6u  IPv4 69865848      0t0  TCP 172.17.1.142:http (LISTEN)
    nginx     19170            root    7u  IPv4 69865849      0t0  TCP 172.17.1.142:81 (LISTEN)
    nginx     19170            root    8u  IPv4 69865850      0t0  TCP 172.17.1.142:8000 (LISTEN)
    nginx     19170            root    9u  IPv4 69865851      0t0  TCP 172.17.1.142:8001 (LISTEN)
    nginx     19170            root   10u  IPv4 69865852      0t0  TCP 172.17.1.142:8002 (LISTEN)
    
    • 根据进程名查看占用的端口号
    root@iZuf6c0rnhno78oq2pxylnZ:~# lsof -i | grep nginx
    nginx     19170            root    6u  IPv4 69865848      0t0  TCP 172.17.1.142:http (LISTEN)
    nginx     19170            root    7u  IPv4 69865849      0t0  TCP 172.17.1.142:81 (LISTEN)
    nginx     19170            root    8u  IPv4 69865850      0t0  TCP 172.17.1.142:8000 (LISTEN)
    nginx     19170            root    9u  IPv4 69865851      0t0  TCP 172.17.1.142:8001 (LISTEN)
    nginx     19170            root   10u  IPv4 69865852      0t0  TCP 172.17.1.142:8002 (LISTEN)
    nginx     19173        www-data    6u  IPv4 69865848      0t0  TCP 172.17.1.142:http (LISTEN)
    nginx     19173        www-data    7u  IPv4 69865849      0t0  TCP 172.17.1.142:81 (LISTEN)
    nginx     19173        www-data    8u  IPv4 69865850      0t0  TCP 172.17.1.142:8000 (LISTEN)
    nginx     19173        www-data    9u  IPv4 69865851      0t0  TCP 172.17.1.142:8001 (LISTEN)
    nginx     19173        www-data   10u  IPv4 69865852      0t0  TCP 172.17.1.142:8002 (LISTEN)
    

    查看Linux中网络系统的状态信息

    • netstat

      • 语法:netstat(选项)
      • 选项:
        • a或--all:显示所有连线中的Socket;
        • n或--numeric:直接使用ip地址,而不通过域名服务器;
        • p或--programs:显示正在使用Socket的程序识别码和程序名称;
    • 根据进程名查看占用的端口号

    root@iZuf6c0rnhno78oq2pxylnZ:~# netstat -anp | grep nginx
    tcp        0      0 172.17.1.142:8000       0.0.0.0:*               LISTEN      19170/nginx: master
    tcp        0      0 172.17.1.142:8001       0.0.0.0:*               LISTEN      19170/nginx: master
    tcp        0      0 172.17.1.142:8002       0.0.0.0:*               LISTEN      19170/nginx: master
    tcp        0      0 172.17.1.142:80         0.0.0.0:*               LISTEN      19170/nginx: master
    tcp        0      0 172.17.1.142:81         0.0.0.0:*               LISTEN      19170/nginx: master
    unix  3      [ ]         STREAM     CONNECTED     69865863 19170/nginx: master 
    unix  3      [ ]         STREAM     CONNECTED     69865862 19170/nginx: master 
    
    
    • 根据进程PID查看占用的端口号
    root@iZuf6c0rnhno78oq2pxylnZ:~# netstat -anp | grep 80
    tcp        0      0 172.17.1.142:8000       0.0.0.0:*               LISTEN      19170/nginx: master
    tcp        0      0 172.17.1.142:8001       0.0.0.0:*               LISTEN      19170/nginx: master
    tcp        0      0 172.17.1.142:8002       0.0.0.0:*               LISTEN      19170/nginx: master
    tcp        0      0 172.17.1.142:80         0.0.0.0:*               LISTEN      19170/nginx: master
    

    参考文章

    每天一个linux命令(42):kill命
    Linux 查看端口占用情况
    Linux命令大全
    如何在 Linux 中查看进程占用的端口号

  • 相关阅读:
    LOJ.6435.[PKUSC2018]星际穿越(倍增)
    webpack---style-loader的配置:insertAt 和insert
    react-native项目启动报错——watchman安装问题(mac pro)
    js基础---event.target/ event.currentTarget/this的区别
    js基础---querySelector系列和getElementsBy系列获取页面元素的最大差异(返回值的属性区别)
    js基础----用户在浏览器输入网址后页面的加载
    js基础----dom节点使用console.log打印始终是最新的现象(待验证)
    js基础---嵌套循环中的break使用
    环境变量的配置之——全局安装@vue/cli脚手架,出现vue不是内部或外部命令(Windows)
    Chocolatey 和 Scoop的安装和介绍 (windows)
  • 原文地址:https://www.cnblogs.com/snailrunning/p/12180657.html
Copyright © 2020-2023  润新知