• linux 查看内存和cpu占用比较多的进程



    1.可以使用一下命令查使用内存最多的10个进程    
        
    ps -aux | sort -k4nr | head -n 10
    2. 可以使用一下命令查使用CPU最多的10个进程    
        
    ps -aux | sort -k3nr | head -n 10

    1)命令解释
    ps aux: 列出目前所有的正在内存当中的程序
    a显示终端上地所有进程,包括其他用户地进程(有的进程没有终端)
    -a 显示所有终端机下执行的进程,除了阶段作业领导者之外。
    u  以用户为主的格式来显示进程状况。
    x  显示所有进程,不以终端机来区分。
    a会包括其他用户(否则只有用户本身); x会包括其他终端;
    aux就可以包括内存所有;

    2)pts是所谓的伪终端或虚拟终端,具体表现就是你打开一个终端,这个终端就叫pts/0,如果你再打开一个终端,这个新的终端就叫pts /1。
    还有tty1-tty6表示文字界面;
    pty=ptmx+pts虚拟终端; ty 是type的缩写;
    ptmx and pts - pseudo-terminal master and slave
    tty一词源于teletypes,终端设备的统称;

    3)使用ps aux 出现的列的含义
    USER:该 process 属于那个使用者账号的
    PID :该 process 的号码
    %CPU:该 process 使用掉的 CPU 资源百分比
    %MEM:该 process 所占用的物理内存百分比
    VSZ :该 process 使用掉的虚拟内存量 (Kbytes) 虚拟内存集,进程占用的虚拟内存空间
    RSS :该 process 占用的固定的内存量 (Kbytes) 物理内存集,进程战用实际物理内存空间.

    (物理内存是安装在主机板上的内存。
    虚拟内存是作业系统在硬盘上建立一个档案,把物理内存中不常用的部分拷贝起来,再把那个部分的物理内存清空,方便别的程序写入。虚拟内存的大小是可以自定,但是大小通常在物理内存的1到2倍之间,太大的话,虚拟内存的效能会下降。
    因为虚拟内存在硬盘上,所以它的速度是取决于硬盘的存取速度、碎片的多少等。另外,因为它不像物理内存一样,资料与停机后消失,所以虚拟内存是可以透过解密方法读取其中的资料。SWAP是linux的虚拟内存,相当于windows的虚拟内存)

    TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
    STAT:该程序目前的状态,主要的状态有
    R :该程序目前正在运作,或者是可被运作
    S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。
    T :该程序目前正在侦测或者是停止了
    Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
    START:该 process 被触发启动的时间
    TIME :该 process 实际使用 CPU 运作的时间
    COMMAND:该程序的实际指令

    4)  sort 参数

    -b   忽略每行前面开始出的空格字符。
      -c   检查文件是否已经按照顺序排序。
      -f   排序时,忽略大小写字母。
      -M   将前面3个字母依照月份的缩写进行排序。
      -n   依照数值的大小排序。
      -o<输出文件>   将排序后的结果存入指定的文件。
      -r   以相反的顺序来排序。
      -t<分隔字符>   指定排序时所用的栏位分隔字符。
      -k  选择以哪个区间进行排序。

    PS:linux对内存的一些思想

    我们通过free命令查看机器空闲内存时,会发现free的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。

    可以使用以下命令释放缓存:

      第一步,使用free命令查看内存,这其实没有什么实际作用,就是做个前后对比;
      第二步,执行sync命令,是为了确保文件系统的完整性(sync命令将所有未写的系统缓存写到磁盘中);
      第三步,执行echo 3 > /proc/sys/vm/drop_caches就开始释放内存了。
    这里说明一下/proc/sys/vm/drop_caches的作用:当写入1时,释放页面缓存;写入2时,释放目录文件和inodes;写入3时,释放页面缓存、目录文件和inodes。可见,整个操作过程就是释放磁盘缓存。

    Linux系统与Windows在对待内存的问题上是持不同意见的。Linux会尽量使用内存来提高效率,free查看剩余内存小并不是说内存不够用,还应该看swap是否被大量使用了。实际项目的经验告诉我们,如果是因为应用程序有内存泄漏、溢出的问题,从swap的使用情况是可以比较快速判断的,查看剩余内存是没有意义的或十分困难的。

    free命令里各项内存指标说明:

    total used free shared buffers cached
    Mem: 16425996 10727220 5698776 0 380904 9389832
    -/+ buffers/cache: 956484 15469512
    Swap: 8273464 212 8273252

    其中第一行用全局角度描述系统使用的内存状况:
    total——总物理内存
    used——已使用内存,一般情况这个值会比较大,因为这个值包括了cache+应用程序使用的内存
    free——完全未被使用的内存
    shared——应用程序共享内存
    buffers——缓存,主要用于目录方面,inode值等(ls大目录可看到这个值增加)
    cached——缓存,用于已打开的文件
    总结:
    total=used+free
    used=buffers+cached (maybe add shared also)

    第二行描述应用程序的内存使用:
    前个值表示-buffers/cache——应用程序使用的内存大小,used减去缓存值
    后个值表示+buffers/cache——所有可供应用程序使用的内存大小,free加上缓存值
    总结: 
    -buffers/cache=used-buffers-cached
    +buffers/cache=free+buffers+cached

    第三行表示swap的使用:
    used——已使用
    free——未使用

     注:部分内容摘自下面的文章,文章写的流畅易懂,建议阅读 https://book.2cto.com/201407/44607.html

  • 相关阅读:
    java堆和栈的区别
    什么是java 序列化,如何实现java 序列化?
    HashMap和Hashtable的区别
    [LeetCode] 548. Split Array with Equal Sum 分割数组成和相同的子数组
    [LeetCode] 533. Lonely Pixel II 孤独的像素 II
    [LeetCode] 531. Lonely Pixel I 孤独的像素 I
    [LeetCode] 205. Isomorphic Strings 同构字符串
    [LeetCode] 351. Android Unlock Patterns 安卓解锁模式
    Python list、tuple、dict区别
    Minimum number of swaps required to sort an array
  • 原文地址:https://www.cnblogs.com/jycjy/p/7493632.html
Copyright © 2020-2023  润新知