一、top命令查看服务器状况时的快捷键、交互命令及切换排序方式
top命令可查看服务器丰富的状态信息,之前有一篇相关的文章,linux服务器维护load average、wait、IO中kswapd0过高以及使用iostat和iotop命令排查原因的过程_io kswapd0-CSDN博客。在进入top命令界面之后实际还有很多功能快捷键包括:
1. top命令界面之后很多功能快捷键键意义
1 --数字1可以切换显示各颗CPU的使用率情况列表
M —根据驻留内存大小进行排序
P —根据CPU使用百分比大小进行排序
T —根据时间/累计时间进行排序
c —切换显示命令名称和完整命令行
t —切换显示进程和CPU信息
m —切换显示内存信息
l —切换显示平均负载和启动时间信息
o —改变显示项目的顺序,
Current Fields: AEWuOHTIQNMcKdfbgyjplsXvzr for window 1:Def Upper case letter moves field left, lower case right
--进入之后以大写小写字母将显示顺序切换。大写字母会将对应的行上移,小写会将对应的行下移。
f —从当前显示中添加或删除项目
S —切换到累计模式
s —改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;如果值设的很小,不但看不清结果,同时还会是系统负载大大增加
q —退出top程序
i —忽略闲置和僵尸进程。这是一个开关式的命令
k —终止一个进程,系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束进程;默认的信号是15;但是在安全模式中此命令被屏蔽
2. Top命令中的一些信息:
total 进程总数
running 正在运行的进程数
sleeping 睡眠的进程数
stopped 停止的进程数
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:硬件CPU中断占用百分比
0.0%si:软中断占用百分比
0.0%st:虚拟机占用百分比
序号 列名 含义
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 任务标志
二、awk命令的正则运算符详细介绍及{m,n}不起作用的问题解决
awk作为文本处理利器之一,离不开正则表达式的使用。在linux众多文本处理工具(awk,sed,grep,perl)里面用到正则表达式。其实就只有3种类型。(BREs,EREs,PREs),awk的正则表达式,是属于扩展的正则表达式(Extended Regular Expression 又叫 Extended RegEx 简称 EREs)。publish:December 19, 2017 -Tuesday
今天我在使用awk进行一个匹配量匹配时发现使用{m,n}格式时不好使。查找资料发现需要另加一项参数:
-W re-interval or --re-inerval 允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。测试命令如下:
[root@123 ~]# awk --re-interval '/2{3,6}/' z.log
测试行1222
[root@123 ~]# awk '/2{3,6}/' z.log
[root@123 ~]#
[root@123 ~]# awk -W re-interval '/2{3,6}/' z.log
8=秋天1222
awk --help后其它几个值得看的-W参数的意义
-W compact or --compat, -W traditional or --traditional
#在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。
-W copyleft or --copyleft, -W copyright or --copyright #打印简短的版权信息。
-W help or --help, -W usage or --usage #打印全部awk选项和每个选项的简短说明。
-W lint or --lint #打印不能向传统unix平台移植的结构的警告。
-W lint-old or --lint-old #打印关于不能向传统unix平台移植的结构的警告。
-W posix #打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,
#将新行作为一个域分隔符;操作符**和**=不能代替^和^=;fflush无效。
-W source program-text or --source program-text #使用program-text作为源代码,可与-f命令混用。
awk的Extended Regular Expression (ERES)基础表达式符号介绍
字符 | 功能 |
---|---|
+ | 指定如果一个或多个字符或扩展正则表达式的具体值(在 +(加号)前)在这个字符串中,则字符串匹配。 |
? | 指定如果零个或一个字符或扩展正则表达式的具体值(在 ?(问号)之前)在字符串中,则字符串匹配。 |
| | 指定如果以 |(垂直线)隔开的字符串的任何一个在字符串中,则字符串匹配。 |
( ) | 在正则表达式中将字符串组合在一起。 |
{m} | 指定如果正好有 m 个模式的具体值位于字符串中,则字符串匹配。下面本个需要用re-interval |
{m,} | 指定如果至少 m 个模式的具体值在字符串中,则字符串匹配。 |
{m, n} | 指定如果 m 和 n 之间(包含的 m 和 n)个模式的具体值在字符串中(其中m<= n),则字符串匹配。 |
[String] | 指定正则表达式与方括号内 String 变量指定的任何字符匹配。 |
[^ String] | 在 [ ](方括号)和在指定字符串开头的 ^ (插入记号) 指明正则表达式与方括号内的任何字符不匹配。 |
~,!~ | 表示指定变量与正则表达式匹配(代字号)或不匹配(代字号、感叹号)的条件语句。命令行: |
^ | 指定字段或记录的开头。 |
$ | 指定字段或记录的末尾。 |
. (句号) | 表示除了在空白末尾的终端换行字符以外的任何一个字符。 |
*(星号) | 表示零个或更多的任意字符。 |
\ (反斜杠) | 转义字符。当位于在扩展正则表达式中具有特殊含义的任何字符之前时,转义字符除去该字符的任何特殊含义。 将与模式 a // 匹配,因为反斜杠否定斜杠作为正则表达式定界符的通常含义。要将反斜杠本身指定为字符,则使用双反斜杠。有关反斜杠及其使用的更多信息,请参阅以下关于转义序列的内容。 |