linuxtop详解
A. linux系统top给出的信息都有哪些
Linux新手,个人认为首先就应该了解一下top命令各项的含义.
不用有事就问什么搜索引擎,先看看man top.
top - 16:12:56 up 1 day, 22 min, 4 users, load average: 0.02, 0.04, 0.05
Tasks: 158 total, 1 running, 156 sleeping, 0 stopped, 1 zombie
%Cpu(s): 0.7 us, 0.3 sy, 0.0 ni, 98.8 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 1017912 total, 895892 used, 122020 free, 15312 buffers
KiB Swap: 1045500 total, 19608 used, 1025892 free. 230012 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5761 eechen 20 0 32144 1548 1076 R 6.2 0.2 0:00.01 top
16:12:56 up 1 day, 22 min, 4 users, load average: 0.02, 0.04, 0.05
这句等同于执行 uptime 命令返回的内容.
16:12:56 是当前时间(date).
up 1 day, 22 min 表示系统已经运行1天又22分钟(uptime -p).
4 users 表示当前登录系统的用户(w,who).
load average 表示系统负载,分别是1分钟,5分钟,15分钟前到现在的负载平均值.
Tasks: 158 total 表示系统的进程数(数目等于ps -ef|wc -l的值减去2),按大写H可以切换到线程模式.
running表示正在运行的进程,sleeping表示睡眠的进程,stopped表示暂停的进程,zombie表示已结束但还没有从进程表中删除的僵尸进程.
total表示总内存,used表示已经使用的内存,free表示空闲的内存,按E可以切换单位.
buffers(Buffer Cache)表示块设备的读写缓冲区占用的内存,cached(Page Cache)表示文件系统缓存占用的内存.
buffers:块设备缓冲 cached:文件系统缓存
如果cached的值很大,说明cache住的文件数很多.如果频繁访问到的文件都能被cache住,那么磁盘的读I/O就非常小.
所谓块设备是指对其信息的存取以"块"为单位,如通常的光盘,硬磁盘,软磁盘,磁带等,块长取512字节或1024字节或4096字节.
块设备可以直接通过块设备特别文件来访问,为了提高数据传输效率,块设备驱动程序内部采用块缓冲技术.
Swap是交换空间,交换空间在物理内存(RAM)被充满时被使用.
如果系统需要更多的内存资源,而物理内存已经充满,内存中不活跃的页就会被移到交换空间去.
虽然交换空间可以为带有少量内存的机器提供帮助,但是这种方法不应该被当做是对内存的取代.
交换空间位于硬盘驱动器上,它比进入物理内存要慢.
load average的理解:
load average指的是处于task_running或task_uninterruptible状态的进程(或线程)数的平均值.
处于task_running状态的进程(或线程),可能正在使用CPU或排队等待使用CPU.
处于task_uninterruptible状态的进程(或线程),可能正在等待I/O,比如等待磁盘I/O.这时I/O等待占用的CPU时间百分比iowait(wa)可能会比较高.
sudo strace -p `pidof top` 可见top从/proc读取了很多信息.
man proc 查看 /proc/loadavg 的说明:
man proc | col -b > proc.txt
/proc/loadavg 内容:
0.22 0.13 0.14 2/374 5306
0.22 0.13 0.14表示在过去的1分钟,5分钟,15分钟,
正在运行(task_running)或等待IO(task_uninterruptible)的任务的数量.
2/374中的2表示当前运行的线程数,374则表示系统当前存在的内核调度实体(进程/线程)的数量.
5306是系统最近创建的进程PID编号.
又比如:
load average: 31.09, 29.87, 29.92
表示在过去的1分钟,5分钟,15分钟的时间里,CPU任务队列中平均有30个程序(这里应该是30个java线程)在使用CPU.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20248 root 20 0 0.227t 0.012t 18748 S 3090 5.2 29812:58 java
Java进程的CPU使用率%CPU达到3090%,表示这个Java进程正在使用31个CPU核心,
这样对上了上面load average得出的数据,也就是有30个左右的Java线程正在使用30个CPU核心.
按H(区分大小写)切换到线程模式,因为一个线程最多只能使用一个核心,所以线程模式下显示的CPU使用率不会超过100%.
当CPU和磁盘都忙不过来的时候,开再多的进程也没有任何意义,只会徒增CPU上下文切换和磁盘I/O等待,得不偿失.
系统负载高,普遍是因为系统进程数太多,I/O太多导致的.
load average小于1表示系统空闲,大于1表示系统开始繁忙.
Linux服务器的任务(进程)数量保持在200个以下是比较好的,最好不要超过300个.
us, user : time running un-niced user processes 用户空间进程占用CPU时间百分比
sy, system : time running kernel processes 内核进程占用CPU时间百分比
ni, nice : time running niced user processes 用户空间内改变过优先级的进程占用CPU时间百分比
id, idle : time spent in the kernel idle handler 空闲CPU时间百分比(100%表示系统完全空闲)
wa, iowait : time waiting for I/O completion I/O等待占用的CPU时间百分比
hi : time spent servicing hardware interrupts 硬件中断占用CPU时间百分比
si : time spent servicing software interrupts 软件中断占用CPU时间百分比
st : time stolen from this vm by the hypervisor 虚拟化hypervisor从当前虚拟机vm偷走的时间
如果st这个值很高的话,说明你的VPS提供商的CPU资源有限,而你没能抢过别人,很有可能就是VPS提供商超售了.
按F选择要显示的列和查看每列的含义,默认有下面这些列:
PID = Process Id
USER = Effective User Name
PR = Priority PR和NI的值越高越友好即越不竞争资源,比如PR 20和NI 0,另外,PR=NI+20.
NI = Nice Value 负值表示高优先级,正值表示低优先级,比如kworker的NI为-20,PR为0.
VIRT = Virtual Image (KiB)
RES = Resident Size (KiB) 常驻内存,按E切换单位.
SHR = Shared Memory (KiB)
S = Process Status
%CPU = CPU Usage 四核处理器在Tasks模式下满载为400%,在Threads模式(按H切换)下满载为100%(一个线程最多只能使用一个核心).按Shift+P按CPU使用率排序.
%MEM = Memory Usage (RES) 满载为100%,按Shift+M按RES内存排序.
TIME+ = CPU Time, hundredths 进程使用的CPU时间总计.比如2:32.45代表2分钟32.45秒.
COMMAND = Command Name/Line
按F进入域管理窗口后按A可以切换显示模式,按空格选中要显示的列,按S按指定列排序,用向右方向键选中列后可以调整顺序.修改后按Shift+W保存设置到~/.toprc文件.
top里面按Shift+M是按内存排序,按E是切换内存单位,按Shfit+W保存设置.
然后执行top -n1 -b可以看到按内存排序的所有进程的信息.
或者ps后用sort排序:
ps aux | sort -k4nr | head -n5
top里按C或者使用-c参数可以看到进程的绝对路径和启动参数,就可以得到类似ps -ef和ps aux提供的信息了.
看进程路径: top -p `pidof firefox` -c -n1
看进程线程: top -p `pidof firefox` -H -n1
Linux Process Status:
http://blog.csdn.net/tianlesoftware/article/details/6457487
R (task_running) : 可执行状态
S (task_interruptible): 可中断的睡眠状态
D (task_uninterruptible): 不可中断的睡眠状态
T (task_stopped or task_traced): 暂停状态或跟踪状态
Z (task_dead - exit_zombie): 退出状态,进程成为僵尸进程
X (task_dead - exit_dead): 退出状态,进程即将被销毁
running进程:
只有在该状态的进程才可能在CPU上运行。
而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的可执行队列中)。
进程调度器的任务就是从各个CPU的可执行队列中分别选择一个进程在该CPU上运行。
很多操作系统教科书将正在CPU上执行的进程定义为RUNNING状态、而将可执行但是尚未被调度执行的进程定义为READY状态,这两种状态在Linux下统一为TASK_RUNNING状态。
sleeping进程:
处于这个状态的进程因为等待某某事件的发生(比如等待socket连接、等待信号量),而被挂起。
这些进程的task_struct结构被放入对应事件的等待队列中。当这些事件发生时(由外部中断触发、或由其他进程触发),对应的等待队列中的一个或多个进程将被唤醒。
通过ps命令我们会看到,一般情况下,进程列表中的绝大多数进程都处于task_interruptible状态(除非机器的负载很高)。
毕竟CPU就这么一两个,进程动辄几十上百个,如果不是绝大多数进程都在睡眠,CPU又怎么响应得过来。
stopped进程:
向进程发送一个sigstop信号,它就会因响应该信号而进入task_stopped状态,除非该进程本身处于task_uninterruptible状态而不响应信号。
sigstop与sigkill信号一样,是非常强制的。不允许用户进程通过signal系列的系统调用重新设置对应的信号处理函数。
向进程发送一个sigcont信号,可以让其从task_stopped状态恢复到task_running状态。
当进程正在被跟踪时,它处于task_traced这个特殊的状态。“正在被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作。
比如在gdb中对被跟踪的进程下一个断点,进程在断点处停下来的时候就处于task_traced状态。而在其他时候,被跟踪的进程还是处于前面提到的那些状态。
对于进程本身来说,task_stopped和task_traced状态很类似,都是表示进程暂停下来。
而task_traced状态相当于在task_stopped之上多了一层保护,处于task_traced状态的进程不能响应sigcont信号而被唤醒。
只能等到调试进程通过ptrace系统调用执行ptrace_cont、ptrace_detach等操作(通过ptrace系统调用的参数指定操作),或调试进程退出,被调试的进程才能恢复task_running状态。
zombie进程:
在Linux进程的状态中,僵尸进程是非常特殊的一种,它是已经结束了的进程,但是没有从进程表中删除。
太多了会导致进程表里面条目满了,进而导致系统崩溃,倒是不占用其他系统资源。
它已经放弃了几乎所有内存空间,没有任何可执行代码,也不能被调度,
仅仅在进程列表中保留一个位置,记载该进程的退出状态等信息供其他进程收集,除此之外,僵尸进程不再占有任何内存空间。
进程在退出的过程中,处于TASK_DEAD状态。在这个退出过程中,进程占有的所有资源将被回收,除了task_struct结构(以及少数资源)以外。
于是进程就只剩下task_struct这么个空壳,故称为僵尸。
之所以保留task_struct,是因为task_struct里面保存了进程的退出码、以及一些统计信息。
而其父进程很可能会关心这些信息。比如在shell中,$?变量就保存了最后一个退出的前台进程的退出码,而这个退出码往往被作为if语句的判断条件。
当然,内核也可以将这些信息保存在别的地方,而将task_struct结构释放掉,以节省一些空间。
但是使用task_struct结构更为方便,因为在内核中已经建立了从pid到task_struct查找关系,还有进程间的父子关系。
释放掉task_struct,则需要建立一些新的数据结构,以便让父进程找到它的子进程的退出信息。
子进程在退出的过程中,内核会给其父进程发送一个信号,通知父进程来“收尸”。
父进程可以通过wait系列的系统调用(如wait4、waitid)来等待某个或某些子进程的退出,并获取它的退出信息。
然后wait系列的系统调用会顺便将子进程的尸体(task_struct)也释放掉。
这个信号默认是SIGCHLD,但是在通过clone系统调用创建子进程时,可以设置这个信号。
如果他的父进程没安装SIGCHLD信号处理函数调用wait或waitpid()等待子进程结束,又没有显式忽略该信号,那么它就一直保持僵尸状态,子进程的尸体(task_struct)也就无法释放掉。
如果这时父进程结束了,那么init进程自动会接手这个子进程,为它收尸,它还是能被清除的。
但是如果如果父进程是一个循环,不会结束,那么子进程就会一直保持僵尸状态,这就是为什么系统中有时会有很多的僵尸进程。
当进程退出的时候,会将它的所有子进程都托管给别的进程(使之成为别的进程的子进程)。
托管的进程可能是退出进程所在进程组的下一个进程(如果存在的话),或者是1号进程。
所以每个进程、每时每刻都有父进程存在。除非它是1号进程。1号进程,pid为1的进程,又称init进程。
Linux系统启动后,第一个被创建的用户态进程就是init进程。它有两项使命:
1、执行系统初始化脚本,创建一系列的进程(它们都是init进程的子孙);
2、在一个死循环中等待其子进程的退出事件,并调用waitid系统调用来完成“收尸”工作;
init进程不会被暂停、也不会被杀死(这是由内核来保证的)。它在等待子进程退出的过程中处于task_interruptible状态,“收尸”过程中则处于task_running状态。
B. Linux怎样使用top命令查看系统状态
使用SSHClient客户端连接到远程Linux系统。使用top命令查看系统的当前运行的情况。如图对top命令执行的结果做了简单的图解,下面针对每一项做详细的解释。
top命令的第一行“top - 19:56:47 up 39 min, 3 users, load average: 0.00, 0.00, 0.00”显示的内容依次为“系统当前时间 、系统到目前为止已运行的时间、当前登录系统的用户数量、系统负载(任务队列的平均长度)三个值分别为1分钟、5分钟、15分钟前到现在的平均值【这三个一般会小于1,如果持续高于5,请仔细查看那个程序影响系统的运行】”
top命令的第二行“Tasks: 120 total, 2 running, 118 sleeping, 0 stopped, 0 zombie”显示的内容依次“所有启动的进程数”、“正在运行的进程数”、“挂起的进程数”、“停止的进程数”、“僵尸进程数”。
top命令的第三行“Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st”显示的内容依次为“用户空间占用CPU百分比”、“内核空间占用CPU百分比”、“用户空间内改变过优先级的进程占用CPU百分比”、“空闲CPU百分比”、“等待输入输出CPU时间百分比”、“CPU服务于硬件中断所耗费的时间总额”、“CPU服务软中断所耗费的时间总额”、“Steal Time”
top命令第四行“Mem: 508820k total, 480172k used, 28648k free, 41944k buffers”显示内容依次为“物理内存总量”、“已使用的物理内存”、“空闲物理内存”、“内核缓存内存量”。
top命令第5行“Swap: 392184k total, 0k used, 392184k free, 259152k cached”显示内容依次为“交换区总量”、“已使用交互区总量”、“空闲交换区总量”、“缓冲的交换区总量”。
top命令第5行“PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND ”显示内容依次为“进程ID”、“进程所有者”、“优先级”、“nice值,负值表示高优先级,正值表示低优先级”、“进程使用的虚拟内存总量”、“进程使用的、未被换出的物理内存大小”、“共享内存大小”、“进程状态”、“上次更新到现在的CPU时间占用百分比”、“进程使用的物理内存百分比”、“进程使用CPU总时间”、“命令名、命令行”。
C. linux怎样使用top命令查看系统状态
Linux的top命令可以动态显示Linux所有进程的资源占用情况(有点像Windows系统的任务管理器),它还可以对进程根据资源占用率进行排序,可以根据CPU占用率进行排序,也可以根据内存占用率进行排序。
top命令最常用的参数是-d参数,-d参数表示top命令显示的界面更新的秒数,默认top命令的界面是5秒更新一次,常常需要将-d参数设置成2,表示2秒更新一次。接下来就可以输入top -d 2来执行看看。
top命令执行起来以后,在top的运行界面上可以使用几个按键命令(直接按下键盘上对应的按键),有两个按键命令用于对进程按占用率进行排序:
按键M:让top显示的进程信息以内存的使用率进行排序(top命令默认是以CPU使用率排序的);
按键P:让top显示的进程信息重新以CPU使用率进行排序;
按键Q:退出top命令的界面。
D. “linux top命令”是什么意思
top命令用于显示系统运行的进程信息,作用类似于windows中的任务管理器,只不过top不是图形化的,而是显示实时文本信息
统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
序号列名含义
PID 进程id
PPID 父进程id
RUSER Realusername
UID 进程所有者的用户id
USER 进程所有者的用户名
GROUP 进程所有者的组名
TTY 启动进程的终端名。不是从终端启动的进程则显示为?
PR 优先级
NInice 值。负值表示高优先级,正值表示低优先级
P 最后使用的CPU,仅在多CPU环境下有意义
%CPU 上次更新到现在的CPU时间占用百分比
TIME 进程使用的CPU时间总计,单位秒
TIME+ 进程使用的CPU时间总计,单位1/100秒
%MEM 进程使用的物理内存百分比
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE 可执行代码占用的物理内存大小,单位kb
DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
nFLT 页面错误次数
nDRT 最后一次写入到现在,被修改过的页面数。
S 进程状态。
D= 不可中断的睡眠状态
R= 运行
S= 睡眠
T= 跟踪/停止
Z= 僵尸进程
COMMAND 命令名/命令行
WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
Flags 任务标志,参考sched.h
E. Linux里面top命令作用是什么
使用SSHClient客户端连接到远程Linux系统。使用top命令查看系统的当前运行的情况。对top命令执行的结果做了简单的图解,下面针对每一项做详细的解释
F. Linux系统下常用性能分析工具top命令,怎么详解
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。
top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48
Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 191272k total, 173656k used, 17616k free, 22052k buffers
Swap: 192772k total, 0k used, 192772k free, 123988k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1379 root 16 0 7976 2456 1980 S 0.7 1.3 0:11.03 sshd
14704 root 16 0 2128 980 796 R 0.7 0.5 0:02.72 top
1 root 16 0 1992 632 544 S 0.0 0.3 0:00.90 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:
01:06:48 当前时间
up 1:22 系统运行时间,格式为时:分
1 user 当前登录用户数
load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。
三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:
Tasks: 29 total 进程总数
1 running 正在运行的进程数
28 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s): 0.3% us 用户空间占用CPU百分比
1.0% sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id 空闲CPU百分比
0.0% wa 等待输入输出的CPU时间百分比
0.0% hi
0.0% si
最后两行为内存信息。内容如下:
Mem: 191272k total 物理内存总量
173656k used 使用的物理内存总量
17616k free 空闲内存总量
22052k buffers 用作内核缓存的内存量
Swap: 192772k total 交换区总量
0k used 使用的交换区总量
192772k free 空闲交换区总量
123988k cached 缓冲的交换区总量。
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。
进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。
序号 列名 含义
a PID 进程id
b PPID 父进程id
c RUSER Real user name
d UID 进程所有者的用户id
e USER 进程所有者的用户名
f GROUP 进程所有者的组名
g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
h PR 优先级
i NI nice值。负值表示高优先级,正值表示低优先级
j P 最后使用的CPU,仅在多CPU环境下有意义
k %CPU 上次更新到现在的CPU时间占用百分比
l TIME 进程使用的CPU时间总计,单位秒
m TIME+ 进程使用的CPU时间总计,单位1/100秒
n %MEM 进程使用的物理内存百分比
o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
r CODE 可执行代码占用的物理内存大小,单位kb
s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t SHR 共享内存大小,单位kb
u nFLT 页面错误次数
v nDRT 最后一次写入到现在,被修改过的页面数。
w S 进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
x COMMAND 命令名/命令行
y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
z Flags 任务标志,参考 sched.h
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。
更改显示内容通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。
按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。
命令使用
1. 工具(命令)名称
top
2.工具(命令)作用
显示系统当前的进程和其他状况; top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.
3.环境设置
在Linux下使用。
4.使用方法
4.1使用格式
top [-] [d]
[q] [c] [C] [S] [s] [n]
4.2参数说明
d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
p 通过指定监控进程ID来仅仅监控某个进程的状态。
q该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
S 指定累计模式
s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
i 使top不显示任何闲置或者僵死进程。
c 显示整个命令行而不只是显示命令名
4.3其他
下面介绍在top命令执行过程中可以使用的一些交互命令。从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。
Ctrl+L 擦除并且重写屏幕。
h或者? 显示帮助画面,给出一些简短的命令总结说明。
k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
i 忽略闲置和僵死进程。这是一个开关式命令。
q 退出程序。
r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
S 切换到累计模式。
s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
f或者F 从当前显示中添加或者删除项目。
o或者O 改变显示项目的顺序。
l 切换显示平均负载和启动时间信息。
m 切换显示内存信息。
t 切换显示进程和CPU状态信息。
c 切换显示命令名称和完整命令行。
M 根据驻留内存大小进行排序。
P 根据CPU使用百分比大小进行排序。
T 根据时间/累计时间进行排序。
W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法
G. 在linux中top命令的具体用法是什么
top命令查看当前刷新进程
实时显示 process 的动态
top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
例如:
输入 top -n 10 后将屏幕显示10次刷新的进程
H. linux命令之top该怎么用top命令详解
top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台显示CPU、内存使用和执行时间,直到按ctrl+C终止该程序为止。
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
常用选项
-b:以批处理模式操作;
-c:显示完整的治命令;
-d:屏幕刷新间隔时间;
-I:忽略失效过程;
-s:保密模式;
-S:累积模式;
-i<时间>:设置间隔时间;
-u<用户名>:指定用户名;
-p<进程号>:指定进程;
-n<次数>:循环显示的次数
top命令输出各参数介绍
系统运行时间和平均负载
任务
第二行显示的是任务或者进程的总结。进程可以处于不同的状态。这里显示了全部进程的数量。除此之外,还有正在运行、睡眠、停止、僵尸进程的数量(僵尸是一种进程的状态)。这些进程概括信息可以用't'切换显示。
CPU 状态
us, user: 运行(未调整优先级的) 用户进程的CPU时间
sy,system: 运行内核进程的CPU时间
ni,niced:运行已调整优先级的用户进程的CPU时间
wa,IO wait: 用于等待IO完成的CPU时间
hi:处理硬件中断的CPU时间
si: 处理软件中断的CPU时间
st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。
内存使用状况
接下来两行显示内存使用率,有点像'free'命令。第一行是物理内存使用,第二行是虚拟内存使用(交换空间)。物理内存显示如下:全部可用内存、已使用内存、空闲内存、缓冲内存。相似地:交换部分显示的是:全部、已使用、空闲和缓冲交换空间。内存显示可以用'm'命令切换。
字段列
PID :进程ID,进程的唯一标识符
USER :进程所有者的实际用户名。
PR :进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。
NI :进程的nice值(优先级)。越小的值意味着越高的优先级。
VIRT :进程使用的虚拟内存。
RES :驻留内存大小。驻留内存是任务使用的非交换物理内存大小。
SHR :SHR是进程使用的共享内存。
S :这个是进程的状态。它有以下不同的值:
D - 不可中断的睡眠态。
R – 运行态
S – 睡眠态
T – 被跟踪或已停止
Z – 僵尸态
%CPU :自从上一次更新时到现在任务所使用的CPU时间百分比。
%MEM:进程使用的可用物理内存百分比。
TIME+ :任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。
COMMAND :运行进程所使用的命令。
I. linux下的top命令
top命令说白了就是linux实时监视进程的命令:第一个值是进程号,然后用户是root,后面%cpu是cpu占用率,%mem是内存占用率等等,该命令每秒刷新一次。如果不在前台执行该命令则会占用前台,使用ctrl+c 结束监视 。实际用处是看看某个进程的内存,cpu负载率。也可以使用ps命令来查看进程信息,不过ps不是实时的。里面的信息重不重要,这个不好说,要看你怎么用了,你用这些信息他就重要呗,你就是看看你cpu负载率,那就不重要。其实top就相当于你windows的任务管理器,你windows ctrl+alt+.进入任务管理器,然后点到进程那个标签就是了。关于linux的更多资料,请访问《linux就该这么学》官网。
J. Linux系统下top命令的每个参数代表什么意思
各参数含义
一、top前5行统计信息
第1行:top - 05:43:27 up 4:52, 2 users, load average: 0.58, 0.41, 0.30
第1行是任务队列信息,其参数如下:
内容 含义
05:43:27 表示当前时间
up 4:52 系统运行时间 格式为时:分
2 users 当前登录用户数
load average: 0.58, 0.41, 0.30 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
load average: 如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第2行:Tasks: 159 total, 1 running, 158 sleeping, 0 stopped, 0 zombie
第3行:%Cpu(s): 37.0 us, 3.7 sy, 0.0 ni, 59.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
第2、3行为进程和CPU的信息
当有多个CPU时,这些内容可能会超过两行,其参数如下:
内容 含义
159 total 进程总数
1 running 正在运行的进程数
158 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
37.0 us 用户空间占用CPU百分比
3.7 sy 内核空间占用CPU百分比
0.0 ni 用户进程空间内改变过优先级的进程占用CPU百分比
59.3 id 空闲CPU百分比
0.0 wa 等待输入输出的CPU时间百分比
0.0 hi 硬中断(Hardware IRQ)占用CPU的百分比
0.0 si 软中断(Software Interrupts)占用CPU的百分比
0.0 st
第4行:KiB Mem: 1530752 total, 1481968 used, 48784 free, 70988 buffers
第5行:KiB Swap: 3905532 total, 267544 used, 3637988 free. 617312 cached Mem
第4、5行为内存信息
其参数如下:
内容 含义
KiB Mem: 1530752 total 物理内存总量
1481968 used 使用的物理内存总量
48784 free 空闲内存总量
70988 buffers 用作内核缓存的内存量
KiB Swap: 3905532 total 交换区总量
267544 used 使用的交换区总量
3637988 free 空闲交换区总量
617312 cached Mem 缓冲的交换区总量。
上述最后提到的缓冲的交换区总量,这里解释一下,所谓缓冲的交换区总量,即内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。
计算可用内存数有一个近似的公式:
第四行的free + 第四行的buffers + 第五行的cached
二、进程信息
列名 含义
PID 进程id
PPID 父进程id
RUSER Real user name
UID 进程所有者的用户id
USER 进程所有者的用户名
GROUP 进程所有者的组名
TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
PR 优先级
NI nice值。负值表示高优先级,正值表示低优先级
P 最后使用的CPU,仅在多CPU环境下有意义
%CPU 上次更新到现在的CPU时间占用百分比
TIME 进程使用的CPU时间总计,单位秒
TIME+ 进程使用的CPU时间总计,单位1/100秒
%MEM 进程使用的物理内存百分比
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP 进程使用的虚拟内存中,被换出的大小,单位kb
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE 可执行代码占用的物理内存大小,单位kb
DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
nFLT 页面错误次数
nDRT 最后一次写入到现在,被修改过的页面数。
S 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
COMMAND 命令名/命令行
WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
Flags 任务标志
三、
1.top命令默认值显示前面一部分的进程,若是想要查看全部的进程信息,则需要使用命令:top -ab -n 1,在这个命令中,a表示按内存倒序排列,b表示将所有列输出,n表示只执行一次。
2.在使用top -ab -n 1将所有进程信息输出之后,可以使用AWK等类似工具统计信息,例如:统计出COMMAND为httpd的所有进程占用的内存。
3.也可以使用命令top -an -n 1 | grep httpd,查看所有httpd的进程信息,如下图: