• linux学习笔记27--监控命令ps和top,free


    Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。

    要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。

    ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 工具。

    kill 命令用于杀死进程。

    linux上进程有5种状态: 

    1. 运行(正在运行或在运行队列中等待) 

    2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 

    3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 

    4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) 

    5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) 

    ps工具标识进程的5种状态码: 

    D 不可中断 uninterruptible sleep (usually IO) 

    R 运行 runnable (on run queue) 

    S 中断 sleeping 

    T 停止 traced or stopped 

    Z 僵死 a defunct (”zombie”) process 

     

    1.命令格式:

    ps[参数]

    2.命令功能:

    用来显示当前进程的状态

    3.命令参数:

    a  显示所有进程

    -a 显示同一终端下的所有程序

    -A 显示所有进程

    c  显示进程的真实名称

    -N 反向选择

    -e 等于“-A”

    e  显示环境变量

    f  显示程序间的关系

    -H 显示树状结构

    r  显示当前终端的进程

    T  显示当前终端的所有程序

    u  指定用户的所有进程

    -au 显示较详细的资讯

    -aux 显示所有包含其他使用者的行程 

    -C<命令> 列出指定命令的状况

    --lines<行数> 每页显示的行数

    --width<字符数> 每页显示的字符数

    --help 显示帮助信息

    --version 显示版本显示

    4.使用实例:

    实例1:显示所有进程信息

    命令:

    ps -A

    输出:

    [root@localhost test6]# ps -A

      PID TTY          TIME CMD

        1 ?        00:00:00 init

        2 ?        00:00:01 migration/0

        3 ?        00:00:00 ksoftirqd/0

        4 ?        00:00:01 migration/1

        5 ?        00:00:00 ksoftirqd/1

        6 ?        00:29:57 events/0

        7 ?        00:00:00 events/1

        8 ?        00:00:00 khelper

       49 ?        00:00:00 kthread

       54 ?        00:00:00 kblockd/0

       55 ?        00:00:00 kblockd/1

       56 ?        00:00:00 kacpid

      217 ?        00:00:00 cqueue/0

      ……省略部分结果

    说明:

    实例2:显示指定用户信息

    命令:

    ps -u root

    输出:

    [root@localhost test6]# ps -u root

      PID TTY          TIME CMD

        1 ?        00:00:00 init

        2 ?        00:00:01 migration/0

        3 ?        00:00:00 ksoftirqd/0

        4 ?        00:00:01 migration/1

        5 ?        00:00:00 ksoftirqd/1

        6 ?        00:29:57 events/0

        7 ?        00:00:00 events/1

        8 ?        00:00:00 khelper

       49 ?        00:00:00 kthread

       54 ?        00:00:00 kblockd/0

       55 ?        00:00:00 kblockd/1

       56 ?        00:00:00 kacpid

        ……省略部分结果

    说明:

    实例3:显示所有进程信息,连同命令行

    命令:

    ps -ef

    输出:

    [root@localhost test6]# ps -ef

    UID        PID  PPID  C STIME TTY          TIME CMD

    root         1     0  0 Nov02 ?        00:00:00 init [3]                  

    root         2     1  0 Nov02 ?        00:00:01 [migration/0]

    root         3     1  0 Nov02 ?        00:00:00 [ksoftirqd/0]

    root         4     1  0 Nov02 ?        00:00:01 [migration/1]

    root         5     1  0 Nov02 ?        00:00:00 [ksoftirqd/1]

    root         6     1  0 Nov02 ?        00:29:57 [events/0]

    root         7     1  0 Nov02 ?        00:00:00 [events/1]

    root         8     1  0 Nov02 ?        00:00:00 [khelper]

    root        49     1  0 Nov02 ?        00:00:00 [kthread]

    root        54    49  0 Nov02 ?        00:00:00 [kblockd/0]

    root        55    49  0 Nov02 ?        00:00:00 [kblockd/1]

    root        56    49  0 Nov02 ?        00:00:00 [kacpid]

    ……省略部分结果

    说明:

    实例4: ps 与grep 常用组合用法,查找特定进程

    命令:

    ps -ef|grep ssh

    输出:

    [root@localhost test6]# ps -ef|grep ssh

    root      2720     1  0 Nov02 ?        00:00:00 /usr/sbin/sshd

    root     17394  2720  0 14:58 ?        00:00:00 sshd: root@pts/0 

    root     17465 17398  0 15:57 pts/0    00:00:00 grep ssh

    说明:

    实例5:将目前属于您自己这次登入的 PID 与相关信息列示出来

    命令:

    ps -l

    输出:

    [root@localhost test6]# ps -l

    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD

    4 S     0 17398 17394  0  75   0 - 16543 wait   pts/0    00:00:00 bash

    4 R     0 17469 17398  0  77   0 - 15877 -      pts/0    00:00:00 ps

    说明:

    各相关信息的意义:

    F 代表这个程序的旗标 (flag), 4 代表使用者为 super user

    S 代表这个程序的状态 (STAT),关于各 STAT 的意义将在内文介绍

    UID 程序被该 UID 所拥有

    PID 就是这个程序的 ID !

    PPID 则是其上级父程序的ID

    C CPU 使用的资源百分比

    PRI 这个是 Priority (优先执行序) 的缩写,详细后面介绍

    NI 这个是 Nice 值,在下一小节我们会持续介绍

    ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-"

    SZ 使用掉的内存大小

    WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作

    TTY 登入者的终端机位置

    TIME 使用掉的 CPU 时间。

    CMD 所下达的指令为何

    在预设的情况下, ps 仅会列出与目前所在的 bash shell 有关的 PID 而已,所以, 当我使用 ps -l 的时候,只有三个 PID。

    实例6:列出目前所有的正在内存当中的程序

    命令:

    ps aux

    输出:

    [root@localhost test6]# ps aux

    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

    root         1  0.0  0.0  10368   676 ?        Ss   Nov02   0:00 init [3]                  

    root         2  0.0  0.0      0     0 ?        S<   Nov02   0:01 [migration/0]

    root         3  0.0  0.0      0     0 ?        SN   Nov02   0:00 [ksoftirqd/0]

    root         4  0.0  0.0      0     0 ?        S<   Nov02   0:01 [migration/1]

    root         5  0.0  0.0      0     0 ?        SN   Nov02   0:00 [ksoftirqd/1]

    root         6  0.0  0.0      0     0 ?        S<   Nov02  29:57 [events/0]

    root         7  0.0  0.0      0     0 ?        S<   Nov02   0:00 [events/1]

    root         8  0.0  0.0      0     0 ?        S<   Nov02   0:00 [khelper]

    root        49  0.0  0.0      0     0 ?        S<   Nov02   0:00 [kthread]

    root        54  0.0  0.0      0     0 ?        S<   Nov02   0:00 [kblockd/0]

    root        55  0.0  0.0      0     0 ?        S<   Nov02   0:00 [kblockd/1]

    root        56  0.0  0.0      0     0 ?        S<   Nov02   0:00 [kacpid]

    ……省略部分结果

    说明:

    USER:该 process 属于那个使用者账号的

    PID :该 process 的号码

    %CPU:该 process 使用掉的 CPU 资源百分比

    %MEM:该 process 所占用的物理内存百分比

    VSZ :该 process 使用掉的虚拟内存量 (Kbytes)

    RSS :该 process 占用的固定的内存量 (Kbytes)

    TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。

    STAT:该程序目前的状态,主要的状态有

    R :该程序目前正在运作,或者是可被运作

    S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。

    T :该程序目前正在侦测或者是停止了

    Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态

    START:该 process 被触发启动的时间

    TIME :该 process 实际使用 CPU 运作的时间

    COMMAND:该程序的实际指令

    实例7:列出类似程序树的程序显示

    命令:

    ps -axjf

    输出:

    [root@localhost test6]# ps -axjf

    Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ

     PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND

        0     1     1     1 ?           -1 Ss       0   0:00 init [3]                  

        1     2     1     1 ?           -1 S<       0   0:01 [migration/0]

        1     3     1     1 ?           -1 SN       0   0:00 [ksoftirqd/0]

        1     4     1     1 ?           -1 S<       0   0:01 [migration/1]

        1     5     1     1 ?           -1 SN       0   0:00 [ksoftirqd/1]

        1     6     1     1 ?           -1 S<       0  29:58 [events/0]

        1     7     1     1 ?           -1 S<       0   0:00 [events/1]

        1     8     1     1 ?           -1 S<       0   0:00 [khelper]

        1    49     1     1 ?           -1 S<       0   0:00 [kthread]

       49    54     1     1 ?           -1 S<       0   0:00  \_ [kblockd/0]

       49    55     1     1 ?           -1 S<       0   0:00  \_ [kblockd/1]

       49    56     1     1 ?           -1 S<       0   0:00  \_ [kacpid]

    说明:

    实例8:找出与 cron 与 syslog 这两个服务有关的 PID 号码

    命令:

    输出:

    [root@localhost test6]# ps aux | egrep '(cron|syslog)'

    root      2682  0.0  0.0  83384  2000 ?        Sl   Nov02   0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

    root      2735  0.0  0.0  74812  1140 ?        Ss   Nov02   0:00 crond

    root     17475  0.0  0.0  61180   832 pts/0    S+   16:27   0:00 egrep (cron|syslog)

    [root@localhost test6]#

    说明:

    其他实例:

    1. 可以用 | 管道和 more 连接起来分页查看

    命令:

    ps -aux |more

    2. 把所有进程显示出来,并输出到ps001.txt文件

    命令:

    ps -aux > ps001.txt

    3. 输出指定的字段

    命令:

     ps -o pid,ppid,pgrp,session,tpgid,comm

    输出:

    [root@localhost test6]# ps -o pid,ppid,pgrp,session,tpgid,comm

      PID  PPID  PGRP  SESS TPGID COMMAND

    17398 17394 17398 17398 17478 bash

    17478 17398 17478 17398 17478 ps

    [root@localhost test6]#

    ##########################

    top

    ###########################

    统计信息区:

    前五行是当前系统情况整体的统计信息区。下面我们看每一行信息的具体意义。

    第一行,任务队列信息,同 uptime 命令的执行结果,具体参数说明情况如下:

    14:06:23 — 当前系统时间

    up 70 days, 16:44 — 系统已经运行了70天16小时44分钟(在这期间系统没有重启过的吆!)

    2 users — 当前有2个用户登录系统

    load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。

    load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

    第二行,Tasks — 任务(进程),具体信息说明如下:

    系统现在共有206个进程,其中处于运行中的有1个,205个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。

    第三行,cpu状态信息,具体属性说明如下:

    5.9%us — 用户空间占用CPU的百分比。

    3.4% sy — 内核空间占用CPU的百分比。

    0.0% ni — 改变过优先级的进程占用CPU的百分比

    90.4% id — 空闲CPU百分比

    0.0% wa — IO等待占用CPU的百分比

    0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比

    0.2% si — 软中断(Software Interrupts)占用CPU的百分比

    备注:在这里CPU的使用比率和windows概念不同,需要理解linux系统用户空间和内核空间的相关知识!

    第四行,内存状态,具体信息如下:

    32949016k total — 物理内存总量(32GB)

    14411180k used — 使用中的内存总量(14GB)

    18537836k free — 空闲内存总量(18GB)

    169884k buffers — 缓存的内存量 (169M)

    第五行,swap交换分区信息,具体信息说明如下:

    32764556k total — 交换区总量(32GB)

    0k used — 使用的交换区总量(0K)

    32764556k free — 空闲交换区总量(32GB)

    3612636k cached — 缓冲的交换区总量(3.6GB)

    备注:

    第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。

    如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:18537836k +169884k +3612636k = 22GB左右。

    对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

    第六行,空行。

    第七行以下:各进程(任务)的状态监控,项目列信息说明如下:

    PID — 进程id

    USER — 进程所有者

    PR — 进程优先级

    NI — nice值。负值表示高优先级,正值表示低优先级

    VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

    RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

    SHR — 共享内存大小,单位kb

    S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

    %CPU — 上次更新到现在的CPU时间占用百分比

    %MEM — 进程使用的物理内存百分比

    TIME+ — 进程使用的CPU时间总计,单位1/100秒

    COMMAND — 进程名称(命令名/命令行)

    其他使用技巧:

    1.多U多核CPU监控

    在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况:

     

    观察上图,服务器有16个逻辑CPU,实际上是4个物理CPU。再按数字键1,就会返回到top基本视图界面。

    2.高亮显示当前运行进程

    敲击键盘“b”(打开/关闭加亮效果),top的视图变化如下:

         

    我们发现进程id为2570的“top”进程被加亮了,top进程就是视图第二行显示的唯一的运行态(runing)的那个进程,可以通过敲击“y”键关闭或打开运行态进程的加亮效果。

    3.进程字段排序

    默认进入top时,各进程是按照CPU的占用量来排序的,在下图中进程ID为28894的java进程排在第一(cpu占用142%),进程ID为574的java进程排在第二(cpu占用16%)。

          

        敲击键盘“x”(打开/关闭排序列的加亮效果),top的视图变化如下:

           

    可以看到,top默认的排序列是“%CPU”。

    4. 通过”shift + >”或”shift + <”可以向右或左改变排序列

    下图是按一次”shift + >”的效果图,视图现在已经按照%MEM来排序。

             

    实例2:显示 完整命令

    命令:

    top -c

    输出:

          

    说明:

    实例3:以批处理模式显示程序信息

    命令:

    top -b

    输出:

    说明:

    实例4:以累积模式显示程序信息

    命令:

    top -S

    输出:

    说明:

    实例5:设置信息更新次数

    命令:

      top -n 2

    输出:

    说明:

    表示更新两次后终止更新显示

    实例6:设置信息更新时间

    命令:

    top -d 3

    输出:

    说明:

    表示更新周期为3秒

    实例7:显示指定的进程信息

    命令:

    top -p 574

    输出:

    说明:

         5.top交互命令

    在top 命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了s 选项, 其中一些命令可能会被屏蔽。

    h 显示帮助画面,给出一些简短的命令总结说明

    k 终止一个进程。

    i 忽略闲置和僵死进程。这是一个开关式命令。

    q 退出程序

    r 重新安排一个进程的优先级别

    S 切换到累计模式

    s 改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s

    f或者F 从当前显示中添加或者删除项目

    o或者O 改变显示项目的顺序

    l 切换显示平均负载和启动时间信息

    m 切换显示内存信息

    t 切换显示进程和CPU状态信息

    c 切换显示命令名称和完整命令行

    M 根据驻留内存大小进行排序

    P 根据CPU使用百分比大小进行排序

    T 根据时间/累计时间进行排序

    W 将当前设置写入~/.toprc文件中 

    ####################

    free 命令

    ###################

     

    free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free命令是最经常使用的命令之一。

    1.命令格式:

    free [参数]

    2.命令功能:

    free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略

    3.命令参数:

    -b  以Byte为单位显示内存使用情况。 

    -k  以KB为单位显示内存使用情况。 

    -m  以MB为单位显示内存使用情况。

    -g   以GB为单位显示内存使用情况。 

    -o  不显示缓冲区调节列。 

    -s<间隔秒数>  持续观察内存使用状况。 

    -t  显示内存总和列。 

    -V  显示版本信息。 

    4.使用实例:

    实例1:显示内存使用情况

    命令:

    free

    free -g

    free -m

    输出:

    [root@SF1150 service]# free

                 total       used       free     shared    buffers     cached

    Mem:      32940112   30841684    2098428          0    4545340   11363424

    -/+ buffers/cache:   14932920   18007192

    Swap:     32764556    1944984   30819572

    [root@SF1150 service]# free -g

                 total       used       free     shared    buffers     cached

    Mem:            31         29          2          0          4         10

    -/+ buffers/cache:         14         17

    Swap:           31          1         29

    [root@SF1150 service]# free -m

                 total       used       free     shared    buffers     cached

    Mem:         32168      30119       2048          0       4438      11097

    -/+ buffers/cache:      14583      17584

    Swap:        31996       1899      30097

    说明:

    下面是对这些数值的解释:

    total:总计物理内存的大小。

    used:已使用多大。

    free:可用有多少。

    Shared:多个进程共享的内存总额。

    Buffers/cached:磁盘缓存的大小。

    第三行(-/+ buffers/cached):

    used:已使用多大。

    free:可用有多少。

    第四行是交换分区SWAP的,也就是我们通常所说的虚拟内存。

    区别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。

     这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是2098428KB,已用内存是30841684KB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.

    第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。

    所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。

    如本机情况的可用内存为:

    18007156=2098428KB+4545340KB+11363424KB

    接下来解释什么时候内存会被交换,以及按什么方交换。 

    当可用内存少于额定值的时候,就会开会进行交换.如何看额定值: 

    命令:

    cat /proc/meminfo 

    输出:

    [root@SF1150 service]# cat /proc/meminfo

    MemTotal:     32940112 kB

    MemFree:       2096700 kB

    Buffers:       4545340 kB

    Cached:       11364056 kB

    SwapCached:    1896080 kB

    Active:       22739776 kB

    Inactive:      7427836 kB

    HighTotal:           0 kB

    HighFree:            0 kB

    LowTotal:     32940112 kB

    LowFree:       2096700 kB

    SwapTotal:    32764556 kB

    SwapFree:     30819572 kB

    Dirty:             164 kB

    Writeback:           0 kB

    AnonPages:    14153592 kB

    Mapped:          20748 kB

    Slab:           590232 kB

    PageTables:      34200 kB

    NFS_Unstable:        0 kB

    Bounce:              0 kB

    CommitLimit:  49234612 kB

    Committed_AS: 23247544 kB

    VmallocTotal: 34359738367 kB

    VmallocUsed:    278840 kB

    VmallocChunk: 34359459371 kB

    HugePages_Total:     0HugePages_Free:      0HugePages_Rsvd:      0Hugepagesize:     2048 kB

    交换将通过三个途径来减少系统中使用的物理页面的个数:  

    1.减少缓冲与页面cache的大小, 

    2.将系统V类型的内存页面交换出去,  

    3.换出或者丢弃页面。(Application 占用的内存页,也就是物理内存不足)。 

    事实上,少量地使用swap是不是影响到系统性能的。

    那buffers和cached都是缓存,两者有什么区别呢?

    为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。

    磁盘的操作有逻辑级(文件系统)和物理级(磁盘块),这两种Cache就是分别缓存逻辑和物理级数据的。

    Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成。当page cache的数据需要刷新时,page cache中的数据交给buffer cache,因为Buffer Cache就是缓存磁盘块的。但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。

    Buffer cache是针对磁盘块的缓存,也就是在没有文件系统的情况下,直接对磁盘进行操作的数据会缓存到buffer cache中,例如,文件系统的元数据都会缓存到buffer cache中。

    简单说来,page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。在有文件系统的情况下,对文件操作,那么数据会缓存到page cache,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache。

    所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准.

    如果是应用服务器的话,一般只看第二行,+buffers/cache,即对应用程序来说free的内存太少了,也是该考虑优化程序或加内存了。

    实例2:以总和的形式显示内存的使用信息

    命令:

      free -t 

    输出:

    [root@SF1150 service]#  free -t 

                 total       used       free     shared    buffers     cached

    Mem:      32940112   30845024    2095088          0    4545340   11364324

    -/+ buffers/cache:   14935360   18004752Swap:     32764556    1944984   30819572Total:    65704668   32790008   32914660[root@SF1150 service]#

    说明:

    实例3:周期性的查询内存使用信息

    命令:

    free -s 10

    输出:

    [root@SF1150 service]#  free -s 10

                 total       used       free     shared    buffers     cached

    Mem:      32940112   30844528    2095584          0    4545340   11364380

    -/+ buffers/cache:   14934808   18005304Swap:     32764556    1944984   30819572

                 total       used       free     shared    buffers     cached

    Mem:      32940112   30843932    2096180          0    4545340   11364388

    -/+ buffers/cache:   14934204   18005908Swap:     32764556    1944984   30819572

    说明:

    每10s 执行一次命令

    ########################

    我常用的ps 和top命令:

    ps -aux :显示所有的进程。

    ps -ef 

    top 

    free -m

  • 相关阅读:
    《我是一只IT小小鸟》
    &&、||、?:、,四个运算符的求值顺序
    C Traps and Pitfalls 练习4.2
    “检测到LoaderLock”的解决办法
    VS中代码对齐等快捷键
    贪心 Greedy Algorithms
    这些最基本的程序优化方法你用过吗?
    内存区划分、内存分配、常量存储区、堆、栈、自由存储区、全局区[C++][内存管理][转载]
    [原创]让对话框的控件支持tooltips
    Debug 运行正常但 Release 失败的问题,Debug 和 Release 编译方式的本质区别
  • 原文地址:https://www.cnblogs.com/gaochsh/p/6702070.html
Copyright © 2020-2023  润新知