linuxwatchtop_linux 常用命令top、awk、sed等

本文详细介绍了Linux中常用的系统监控和文本处理工具,包括watch命令用于周期性执行程序并显示结果,tcpdump用于网络抓包,top命令展示系统进程资源占用,awk工具进行文本分析,以及sed进行流编辑。通过实例演示了这些工具的基本用法和高级功能,对于理解Linux系统管理和文本处理具有指导意义。
摘要由CSDN通过智能技术生成

1、watch命令 :周期性的执行下个程序,并全屏显示执行的结果

-n:指定周期秒数

-d:高亮显示变动过的地方

-t:关闭watch 命令在顶部的时间间隔命令显示

示例:

watch -n 1 -d netstat -ant

watch -n 1 -d 'pstree | grep http'

2、tcpdump命令:linux网络抓包工具

3、top命令:显示系统中各个进程的资源占用状况,类似于Windows的任务管理器

-b 批处理

-c 显示整个命令行而不只是显示命令名

-I 忽略失效过程

-s 保密模式

-S 累积模式

-i 设置间隔时间

-u 指定用户名

-p 指定进程

-n 循环显示的次数

信息:

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 若该进程在睡眠,则显示睡眠中的系统函数名

示例:

top -d 1 #设置top的显示间隔(以秒计)

top -n 3 #设置top退出前迭代的次数

top -p 12345 -p 6789//每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况

top -d 2 -c -p 123456 //每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数

4、awk:一个强大的文本分析工具,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。在命令行中使用,但更多是作为脚本来使用。

参考:https://www.cnblogs.com/xudon...

使用方法:

awk '{pattern + action}' {filenames}

awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file

参数:

-F fs or --field-separator fs #指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。

-v var=value or --asign var=value #赋值一个用户定义变量。

-f scripfile or --file scriptfile #从脚本文件中读取awk命令。

特殊:

$0 表示整个当前行

$1 每行第一个字段

NF 字段数量变量

NR 每行的记录号,多文件记录递增

FNR 与NR类似,不过多文件记录不递增,每个文件都从1开始

\t 制表符

\n 换行符

FS BEGIN时定义分隔符

RS 输入的记录分隔符, 默认为换行符(即文本是按一行一行输入)

~ 匹配,与==相比不是精确比较

!~ 不匹配,不精确比较

== 等于,必须全部相等,精确比较

!= 不等于,精确比较

&&  逻辑与

|| 逻辑或

+ 匹配时表示1个或1个以上

/[0-9][0-9]+/ 两个或两个以上数字

/[0-9][0-9]*/ 一个或一个以上数字

FILENAME 文件名

OFS 输出字段分隔符, 默认也是空格,可以改为制表符等

ORS 输出的记录分隔符,默认为换行符,即处理结果也是一行一行输出到屏幕

-F'[:#/]' 定义三个分隔符

使用示例:

awk -F":" '{print $1}' /etc/passwd

awk -F":" '{print $1,$3}' /etc/passwd #多了一个逗号,$1与$3使用空格分隔

awk -F":" '{print "Username:" $1 "\t\t Uid:" $3 }' /etc/passwd #自定义输出

awk -F: '{print NF}' /etc/passwd #显示每行有多少字段

awk -F: '{print $NF}' /etc/passwd #将每行第NF个字段的值打印出来

awk -F: 'NF==4 {print}' /etc/passwd #显示只有4个字段的行

awk -F: 'NF>2{print $0}' /etc/passwd #显示每行字段数量大于2的行

awk -F: '{print NR,NF,$NF,"\t",$0}' /etc/passwd #依次打印行号,字段数,最后字段值,制表符,每行内容

awk -F: 'NR==5 || NR==6{print}' /etc/passwd #显示第5行和第6行

//匹配代码块

//纯字符匹配 !//纯字符不匹配 ~//字段值匹配 !~//字段值不匹配 ~/a1|a2/字段值匹配a1或a2

awk '/mysql/{print $0}' /etc/passwd #三条指令结果一样

awk '!/mysql/{print $0}' /etc/passwd #输出不匹配mysql的行

awk '!/mysql|mail/{print}' /etc/passwd #输出不匹配mysql或mail的行

awk '/[2][7][7]*/{print $0}' /etc/passwd #匹配包含27为数字开头的行,如27,277,2777...

awk -F: '$1~/mail/{print $1}' /etc/passwd #$1匹配指定内容才显示

awk -F: '$1!~/mail|mysql/{print $1}' /etc/passwd

IF语句 必须用在{}中,且比较内容用()扩起来

awk -F: '{if($1~/mail/) print $1}' /etc/passwd

awk -F: '{if($1~/mail/) {print $1}}' /etc/passwd

awk -F: '{if($1~/mail/) {print $1} else {print $2}}' /etc/passwd #if...else...

条件表达式 == != > >=

awk -F":" '{if($1=="mysql") print $3}' /etc/passwd //与上面相同

awk -F":" '$1!="mysql"{print $3}' /etc/passwd //不等于

awk -F":" '$3>1000{print $3}' /etc/passwd //大于

逻辑运算符 && ||

awk -F: '{if($1~/mail/ && $3>8) print }' /etc/passwd

awk -F: '{if($1~/mail/ || $3>1000) print }' /etc/passwd

应用:

ls -l|awk 'NR!=1 && !/^d/{sum[$3]+=$5} END{for (i in sum) printf "%-6s %-5s %-3s %-2s \n",i," ",sum[i]/1024/1024,"MB"}'

5、sed:一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式,处理时,把当前处理的行存储在临时缓冲区中,称为『模式空间』(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,直到文件末尾。原文件内容并没有改变。

参考:http://www.runoob.com/linux/l...

参数:

参数说明:

-f

-h或--help 显示帮助。

-V或--version 显示版本信息。

-n :只打印模式匹配的行

-e :直接在命令行模式上进行sed动作编辑,此为默认选项

-i :直接修改文件内容

动作说明:

a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~

c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!

d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;

i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);

p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~

s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

= 显示文件行号

w filename

r filename 从另一个文件中读文本,类似输入重定向 <

q 第一个模式匹配完成后退出或立即退出

{} 在定位行执行的命令组,用分号隔开

\ 单词锚点

示例:

echo hello|sed 's/hello/(&)/' #将hello放在扩号中

sed -i '/DEVICE/c\Ethernet' test

nl /etc/passwd | sed '2i drink tea'

sed -i '/connect/s#YES#NO#' test #匹配connect的行,把YES替换成NO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值