• Linux下查看哪些进程占用的CPU、内存资源


     ps –ef|grep tomcat 查看所有有关tomcat的进程

    kill -9 19979 终止线程号位19979的进程
    pkill -9 java 批量终止java进程
     查看进程占用:lsof -i:9999
     根据进程ID查看进程详细信息:ps axu|grep pid

    查看端口8080的使用情况:netstat -tln | grep 8080

    查到进程ID之后,使用netstat命令查看其占用的端口:netstat -aux | grep 进程ID


    ————————————————

    1.CPU占用最多的前10个进程: 
    ps auxw|head -1;ps auxw|sort -rn -k3|head -10 
    2.内存消耗最多的前10个进程 
    ps auxw|head -1;ps auxw|sort -rn -k4|head -10 
    3.虚拟内存使用最多的前10个进程 

    ps auxw|head -1;ps auxw|sort -rn -k5|head -10

    4.也可以试试

    ps auxw --sort=rss
    ps auxw --sort=%cpu

    5.看看几个参数含义

    %MEM 进程的内存占用率
    MAJFL is the major page fault count, 
    VSZ 进程所使用的虚存的大小
    RSS 进程使用的驻留集大小或者是实际内存的大小(RSS is the "resident set size" meaning physical memory used)
    TTY 与进程关联的终端(tty)

        串行端口终端(/dev/ttySn)
        伪终端(/dev/pty/) 
        控制终端(/dev/tty) 
        控制台终端(/dev/ttyn,   /dev/console) 
        虚拟终端(/dev/pts/n) 


    STAT 检查的状态:进程状态使用字符表示的,如R(running正在运行或准备运行)、S(sleeping睡眠)、I(idle空闲)、Z (僵死)、D(不可中断的睡眠,通常是I/O)、P(等待交换页)、W(换出,表示当前页面不在内存)、N(低优先级任务)T(terminate终止)、W has no resident pages

     

        D    不可中断     Uninterruptible sleep (usually IO) 
        R    正在运行,或在队列中的进程 
        S    处于休眠状态 
        T    停止或被追踪 
        Z    僵尸进程 
        W    进入内存交换(从内核2.6开始无效) 
        X    死掉的进程 

        <    高优先级 
        N    低优先级 
        L    有些页被锁进内存 
        s    包含子进程 
        +    位于后台的进程组; 
        l    多线程,克隆线程  multi-threaded (using CLONE_THREAD, like NPTL pthreads do) 

     

    linux部署业务的时候有时候会出现CPU或者内存很高的现象,需要查看哪些进程占用的高,参数以下命令:

    linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合:

    ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

    linux下获取占用内存资源最多的10个进程,可以使用如下命令组合:
    ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head

    命令组合解析(针对CPU的,MEN也同样道理):
    ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

    该命令组合实际上是下面两句命令:
    ps aux|head -1
    ps aux|grep -v PID|sort -rn -k +3|head

    查看占用cpu最高的进程

    ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

    或者top (然后按下M,注意这里是大写)

     

    查看占用内存最高的进程
    ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
    或者top (然后按下P,注意这里是大写)
    该命令组合实际上是下面两句命令:
    ps aux|head -1
    ps aux|grep -v PID|sort -rn -k +3|head

    其中第一句主要是为了获取标题(USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND)。
    接下来的grep -v PID是将ps aux命令得到的标题去掉,即grep不包含PID这三个字母组合的行,再将其中结果使用sort排序。
    sort -rn -k +3该命令中的-rn的r表示是结果倒序排列,n为以数值大小排序,而-k +3则是针对第3列的内容进行排序,再使用head命令获取默认前10行数据。(其中的|表示管道操作)

    补充:内容解释
    PID:进程的ID
    USER:进程所有者
    PR:进程的优先级别,越小越优先被执行
    NInice:值
    VIRT:进程占用的虚拟内存
    RES:进程占用的物理内存
    SHR:进程使用的共享内存
    S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
    %CPU:进程占用CPU的使用率
    %MEM:进程使用的物理内存和总内存的百分比
    TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
    COMMAND:进程启动命令名称

    可以使用以下命令查使用内存最多的K个进程

    方法1:
    ps -aux | sort -k4nr | head -K
    如果是10个进程,K=10,如果是最高的三个,K=3
    说明:ps -aux中(a指代all——所有的进程,u指代userid——执行该进程的用户id,x指代显示所有程序,不以终端机来区分)

    ps -aux的输出格式如下:
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.0  19352  1308 ?        Ss   Jul29   0:00 /sbin/init
    root         2  0.0  0.0      0     0 ?        S    Jul29   0:00 [kthreadd]
    root         3  0.0  0.0      0     0 ?        S    Jul29   0:11 [migration/0]

    sort -k4nr中(k代表从第几个位置开始,后面的数字4即是其开始位置,结束位置如果没有,则默认到最后;n指代numberic sort,根据其数值排序;r指代reverse,这里是指反向比较结果,输出时默认从小到大,反向后从大到小。)。本例中,可以看到%MEM在第4个位置,根据%MEM的数值进行由大到小的排序。
    head -K(K指代行数,即输出前几位的结果)
    |为管道符号,将查询出的结果导到下面的命令中进行下一步的操作。

    方法2:top (然后按下M,注意大写)

    二、可以使用下面命令查使用CPU最多的K个进程
    方法1:
    ps -aux | sort -k3nr | head -K

    方法2:top (然后按下P,注意大写) 

  • 相关阅读:
    怎样查看Oracle的数据库名称sid
    request.getRemoteAddr request.getRemoteHost()
    Oracle中添加自动编号的序列
    google chrome 快捷键
    MyEclipse快捷键大全( 再排版)
    Java正则表达式应用详解
    Spring3.1 Cache注解
    Java本周总结1.
    jquery ui 自动补全
    用字符串的length实现限制文本框长度
  • 原文地址:https://www.cnblogs.com/wsy0202/p/11847450.html
Copyright © 2020-2023  润新知