linux top命令
父目录:linux基础入门
- 一.linux进程管理
- 1.什么是进程(process)
- 2.进程与程序(process & program)
- 3.命令执行过程fork and exec
- 4.进程角度理解Linux的多用户多任务多终端环境
- 二.查看系统进程的状态信息
- 1.ps打印当前时刻进程的运行状态
- 2.top观察进程状态的动态变化
- 3.pstree以树状结构显示系统中进程的父子关系
- 三.kill或者killall给进程发送信号(signal)
- 四.进程优先级Priority和Nice值
- 1.nice :新执行的指令即给予新的 nice 值
- 2.renice :已存在进程的 nice 重新调整
- 五.进程特殊权限UUID、SUID、SGID
- 六./proc目录的意义
- 七.与进程相关的其他命令
- 1.fuser找出正在使用某个文件的进程
- 2.lsof列出进程所打开的文件名
- 3.pidof通过进程名打印进程的PID
2.top观察进程状态的动态变化
回到顶部[root@initroot ~]# top [-d 数字] | top [-bnp]选项与参数:
-d: 后面接数字,单位为秒, 表示top刷新的时间频率。默认是5秒;其实 top 的功能非常多!可以用的按键也非常的多!可以参考 man top 的内部说明文件! 这里仅是列出一些自己常用的选项而已。 利用top观察系统运行状态信息:
-b: 以批次的方式执行top, 还有更多的参数可以使用喔! 通常会搭配数据流重导向来将批次的结果输出成为文件。
-n: 与-b搭配,意义是,需要进行几次top的输出结果。
-p: 指定某些个PID来进行观察监测而已。
[root@initroot ~]# top top - 13:43:33 up 4:25, 1 user, load average: 0.58, 0.47, 0.47 Tasks: 182 total, 2 running, 148 sleeping, 0 stopped, 1 zombie %Cpu(s): 15.4 us, 2.5 sy, 0.0 ni, 81.5 id, 0.4 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 5069456 total, 276332 free, 2437764 used, 2355360 buff/cache KiB Swap: 2097148 total, 2096880 free, 268 used. 2300408 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10 root 20 0 0 0 0 R 6.2 0.0 0:16.85 rcu_sched 964 root 20 0 643264 159536 87232 S 6.2 3.1 2:55.09 Xorg 1 root 20 0 159856 9104 6684 S 0.0 0.2 0:01.16 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp 6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-kb 8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq 9 root 20 0 0 0 0 S 0.0 0.0 0:01.82 ksoftirqd/0 11 root rt 0 0 0 0 S 0.0 0.0 0:00.04 migration/0 12 root -51 0 0 0 0 S 0.0 0.0 0:00.00 idle_inject/0 13 root 20 0 0 0 0 I 0.0 0.0 0:00.00 kworker/0:1-eve 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0 15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 16 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 netns 17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_kthre 18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kauditd 19 root 20 0 0 0 0 S 0.0 0.0 0:00.01 khungtaskd 20 root 20 0 0 0 0 S 0.0 0.0 0:00.00 oom_reaper 21 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 writeback 22 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kcompactd0 23 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd 24 root 39 19 0 0 0 S 0.0 0.0 0:00.00 khugepaged 25 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 crypto 26 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kintegrityd 27 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kblockd 28 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 tpm_dev_wq 29 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 ata_sff 30 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 md 31 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 edac-poller 32 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 devfreq_wq 33 root rt 0 0 0 0 S 0.0 0.0 0:00.00 watchdogd 37 root 20 0 0 0 0 S 0.0 0.0 0:00.11 kswapd0 38 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/u3:0 39 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ecryptfs-kthrea 128 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kthrotld 129 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 acpi_thermal_pm 130 root 20 0 0 0 0 S 0.0 0.0 0:00.01 scsi_eh_0 131 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_0 132 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_1 133 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_1 136 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 ipv6_addrconf 147 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kstrp 166 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 charger_manager 167 root 0 -20 0 0 0 I 0.0 0.0 0:01.32 kworker/0:1H-kb 210 root 20 0 0 0 0 S 0.0 0.0 0:00.02 scsi_eh_2 211 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_2 214 root -51 0 0 0 0 S 0.0 0.0 0:07.19 irq/18-vmwgfx 215 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 ttm_swap 334 root 20 0 0 0 0 S 0.0 0.0 0:00.46 jbd2/sda1-8不同于 ps 是静态的结果输出, top 这个程序可以持续的监测 整个系统的进程工作状态。top默认会5秒钟刷新一次,可以用-d指定top的刷新时间,例如2秒钟刷新一次:top -d 2。 top显示的画面主要分为上下两个部分,上面部分为整个系统的资源使用状态,下半部分列出了每个进程的状态信息。
仔细观察会发现上下两个部分的中间由空行隔开,其实这个可不止是空行,这还是一个指令提示输入行。 在top界面环境下还可以执行很多按键指令,某些按键指令需要用户输入,这时候这个空行就变成指令参数输入行了。
常用的按键指令有:
? :显示在top当中可以输入的按键指令;基本上总共有六行,显示的内容依序是:
P :以CPU的使用资源排序显示;
M :以Memory的使用资源排序显示;
N :以PID来排序!
T :由该Process使用的CPU时间累积(TIME+)排序。
k :给予某个PID一个讯号(signal)
r :给予某个PID重新制订一个nice值。
q :离开top软件的按键。
第一行(top...):这一行显示的信息分别为:至于top下半部分的画面,则是每个 process状态信息情况。比较需要注意的是:
o 目前的时间,亦即是 00:53:59 那个项目;
o 开机到目前为止所经过的时间,亦即是 up 6:07, 那个项目;
o 已经登入系统的用户人数,亦即是 3 users, 项目;
o 系统在 1, 5, 15 分钟的平均工作负载。我们在第十五章谈到的 batch 工作方式为负载小于 0.8 就是这个负载啰! 代表的是 1, 5, 15 分钟,系统平均要负责运作几个进程(工作)的意思。 越小代表系统越闲置,若高于 1 得要注意你的系统进程是否太过繁复了!
第二行(Tasks...):显示的是目前进程的总量与个别进程在什么状态(running, sleeping, stopped, zombie)。 比较 需要注意的是最后的 zombie 那个数值,如果不是 0 !好好看看到底是那个 process 变成僵尸了吧?
第三行(%Cpus...):显示的是 CPU 的整体负载,每个项目可使用 ? 查阅。需要特别注意的是 wa 项目,那 个项目代表的是 I/O wait, 通常你的系统会变慢都是 I/O 产生的问题比较大!因此这里得要注意这个项目 耗用 CPU 的资源喔! 另外,如果是多核心的设备,可以按下数字键『1』来切换成不同 CPU 的负载率。
第四行与第五行:表示目前的物理内存与虚拟内存 (Mem/Swap) 的使用情况。 再次重申,要注意的是 swap 的使用量要尽量的少!如果 swap 被用的很大量,表示系统的物理内存实在不足!
第六行:这个是当在 top 程序当中输入指令时,显示状态的地方。
PID :每个 process 的 ID 啦!top 默认使用 CPU 使用率 (%CPU) 作为排序的重点,如果你想要使用内存使用率排序,则可以按 下M键, 若要恢复则按下P即可。如果想要离开top则按下q吧!如果你想要将top的结果输出成为文件时, 可以这样做:
USER:该 process 所属的使用者;
PR :Priority 的简写,进程的优先执行顺序,越小越早被执行;
NI :Nice 的简写,与 Priority 有关,也是越小越早被执行;
%CPU:CPU 的使用率;
%MEM:内存的使用率;
TIME+:CPU 使用时间的累加;
将top的信息进行 2 次,然后将结果输出到 /tmp/top.txt
[root@initroot ~]# top -b -n 2 > /tmp/top.txt这样就可以将 top 的信息存到 /tmp/top.txt 文件中了。
这可以帮助你将某个时段 top 观察到的结果存成文件,可以用在你想要在系统后台底下执行。 由于是后台执行,与终端机的屏幕大小无关,因此可以得到全部的进程画面!
可以指定进程的PID,只观察某个进程的状态。
$$变量为当前进程的PID,可以使用echo显示,然后用top持续观察该进程的状态:
[root@initroot ~]# echo $$ 6632 #bash进程的PID [root@initroot ~]# top -d 2 -p 6632 top - 14:03:04 up 4:44, 1 user, load average: 0.31, 0.33, 0.34 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s): 14.9 us, 4.1 sy, 0.0 ni, 81.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 5069456 total, 310236 free, 2405552 used, 2353668 buff/cache KiB Swap: 2097148 total, 2096880 free, 268 used. 2330928 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6632 root 20 0 24400 5228 3660 S 0.0 0.1 0:00.02 bash如果想要在 top 底下进行一些动作呢? 比方说,修改 NI 这个数值呢?可以这样做:
上面的 NI 值是 0 ,想要改成 10 的话?在top 画面当中直接按下 r 之后,会出现如下的图样:
top - 14:09:31 up 4:51, 1 user, load average: 0.66, 0.49, 0.39 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s): 18.0 us, 4.6 sy, 0.0 ni, 77.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 5069456 total, 309052 free, 2406012 used, 2354392 buff/cache KiB Swap: 2097148 total, 2096880 free, 268 used. 2328520 avail Mem PID to renice [default pid = 6632] #这里出现光标提示符,等待用户输入,根据提示输入相应的参数信息即可 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6632 root 20 0 24400 5228 3660 S 0.0 0.1 0:00.02 bash在指令提示行根据指令提示,输入相关参数即可修改进程的优先级。一般来说,如果想要找出最损耗 CPU 资源的那个进程时,大多使用的就是 top 这支程序啦!然后强制以 CPU 使用资源来排序 (在 top 当中按下 P 即可), 就可以很快的知道啦!
top命令可以实时显示系统的运行时信息
initroot编辑整理,转载请注明www.initroot.com
100次点赞
100次阅读