|
暂时没什么灵感可以写,就简单整理一下Linux的一些基础知识,供自己参考,同时也是一种温故而知新的方式~!
在张戈的博客中,还有其他几篇实用且内容丰富的博客文章,您可能也会感兴趣:
Linux系统CPU平均负载详解
教你如何检查Linux的CPU负载
Linux服务器进程查看命令详解
文件目录权限及chmod命令简析
Linux系统内存监控与性能诊断工具命令详解
PS:更多相关博文请访问系统运维或者站内搜索。当然如果你还有其他Linux相关知识需求,也欢迎留言。
熟悉Linux的人可能对top命令很熟悉(不同的系统名字可能不一样,比如IBM的aix中就是topas),它主要用来监控系统实时的负载率、进程资源使用率等系统状态属性,查看是否正常。
我们来看看top命令的截图:
(1)系统和任务统计:
前8行是系统整体的统计信息,第一行是任务队列信息,是命令执行的结果,其内容如下:
01:06:48
当前时间
1:22
系统运行时间,格式为时:分
1 位用户
当前登录用户数
负载:0.06、0.60、0.48
系统负载,即任务队列的平均长度。
三个数值分别是1分钟、5分钟、15分钟前到现在的平均值。注意:这三个值可以用来判断系统是否超载——如果该值持续大于系统中的CPU数量,那么你就需要优化你的程序或架构了。
(2)进程和CPU统计信息:
第2行到第6行是进程和CPU的信息,当有多个CPU时,这个内容可能会超过两行,内容如下:
任务:共 29 个
总进程数
1
正在运行的进程数
二十八
休眠进程数
停止的进程数
僵尸进程数
CPU:0.3% 我们
用户空间占用的CPU百分比
1.0% 系统
内核空间使用的CPU百分比
0.0%
用户进程空间中优先级发生变化的进程使用的 CPU 百分比
98.7% 同上
空闲 CPU 百分比
0.0% WA
等待输入或输出所花费的 CPU 时间百分比
0.0% 好
IRQ 是“中断请求”的意思是。
0.0% 硅
中断请求
(3)最后两行是内存信息:
记忆:总计
总物理内存
用过的
使用的物理内存总量
自由的
总可用内存
用作内核缓存的内存量
掉期:总计
总交换空间
已使用 0k
使用的交换空间总量
自由的
可用交换空间总量
缓冲的交换总量。
内存中的内容被换出到交换区域然后又换回内存,但是使用的交换区域并没有被覆盖。
这个值是这些内容在内存中已经存在的交换区域的大小。
当对应的内存再次换出时,就不需要对交换区进行写入了。
PS:可用内存和已用内存如何计算?
除了free -m,还可以看看top:
<p><pre> Mem: 255592k total, 167568k used, 88024k free, 25068k buffers
Swap: 524280k total, 0k used, 524280k free, 85724k cached</pre></p>
3.1 如何计算程序实际可用的内存量?
是: 免费 + ( + )
+ ( + ) =
3.2 如何计算程序使用的内存量?
是:使用 – ( + )
–(+)=
3.3 如何判断系统内存是否不足?
如果你的 swap used 值大于 0,那么基本可以确定你遇到了内存瓶颈。要么优化你的代码,要么增加内存。
3.4 与缓存的区别
A 是尚未“写入”磁盘的。A 缓存是已从磁盘“读取”并待用。从应用程序的角度来看,/ 等于可用,因为 / 是为了提高文件读写的性能。当应用程序需要使用内存时,/ 会很快被回收。
因此从应用程序的角度来看,[可用内存] = [系统可用内存] + [] + []
指用于块设备的缓冲区大小。它只记录文件系统和页内数据。
它用于缓冲文件。
也就是说:它用来存储目录的内容,权限等,直接用来记住我们打开的文件。如果想知道它是否真的有效,可以试试。对一个比较大的日志文件,比如nginx的.log,执行两次cat,可以明显感觉到第二次打开速度快了很多。
因为Linux会将你不使用的内存暂时作为文件和数据缓存,以提高系统性能。当你需要这部分内存时,系统会自动释放它(与此不同,即使你有很多空闲内存,它也会访问磁盘)
(4)流程信息区:
统计区域显示了每个进程的详细信息。首先,我们来看一下每列的含义。
序列号
列名称
意义
PID
进程 ID
局部局部性病变
父进程 ID
鲁用户
真实用户名
唯一标识
进程所有者的用户 ID
用户
进程所有者的用户名
团体
进程所有者的组名
终端电话
启动进程的终端的名称。不是从终端启动的进程显示为?
公共关系
优先事项
国家科学院
好值。负值表示高优先级,正值表示低优先级
最后使用的CPU,这只在多CPU环境中有意义
%中央处理器
自上次更新以来占用的 CPU 时间百分比
时间
该进程使用的总 CPU 时间(以秒为单位)
时间+
该进程使用的总 CPU 时间,以 1/100 秒为单位
%内存
进程使用的物理内存百分比
虚拟仿真测试系统
进程使用的虚拟内存总量,以kb为单位。VIRT=SWAP+RES
交换
被换出的进程使用的虚拟内存的大小(以KB为单位)。
可再生能源
进程使用的还未被换出的物理内存大小,单位为kb。RES=CODE+DATA
代码
可执行代码占用的物理内存大小,以KB为单位
数据
可执行代码以外部分(数据段+堆栈)占用的物理内存大小,单位为KB
自发性高血压
共享内存大小,单位:KB
正常FLT
页面错误计数
抗逆转录病毒
自上次写入以来修改的页面数。
进程状态。
D = 不可中断的睡眠状态
R = 运行
S = 睡眠
T=跟踪/停止
Z = 僵尸进程
命令名/命令行
西哈努克市
如果进程正在休眠,则显示休眠的系统函数名称
标志
任务标志,参考sched.h
(5)查看指定列
默认情况下,只显示比较重要的PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+等列。
您可以使用以下快捷键来改变显示的内容:
5.1 f键选择显示内容
使用f键选择显示的内容,按f键后会显示一列列表,按az显示或者隐藏相应列,最后按enter键确认。
5.2 o 键改变显示顺序
按 o 键可以改变列的显示顺序,按小写 az 可将相应列向右移动,按大写 AZ 可将相应列向左移动,最后按 Enter 键确认。
5.3 F/O 键按列对流程进行排序
按下大写的 F 或 O 键,然后按 az 将按相应的列对进程进行排序,而大写的 R 键将反转当前排序。
(6)常用交互命令
从使用角度来说,掌握这些命令比掌握选项更重要,这些命令都是单字母的,如果在命令行选项中使用s选项,这些命令中的一些可能会被屏蔽。
<p><pre class="lang:default decode:true"> 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 配置文件的推荐方法。</pre></p>
(7)最终技能:顶级指挥技巧
<p><pre class="lang:default decode:true"> 1、输入大写 P,则结果按 CPU 占用降序排序。
2、输入大写 M,结果按内存占用降序排序。
3、按数字 1 则可以显示所有 CPU 核心的负载情况。
4、top -d 5 每隔 5 秒刷新一次,默认 1 秒
5、top -p 4360,4358 监控指定进程
6、top -U johndoe ‘U’为 真实/有效/保存/文件系统用户名。
7、top -u 500 ‘u’为有效用户标识
8、top -bn 1 显示所有进程信息,top -n 1 只显示一屏信息,供管道调用
9、top -M #show memory summary in megabytes not kilobytes
10、top -p 25097 -n 1 -b # -b 避免输出控制字符,管道调用出现乱码
11、top 翻页:top -bn1 | less</pre></p>
12、增强的top:htop,更强大的交互式进程管理器: |
|