当前位置: 首页 > Linux

Linux常用命令top、awk、sed等

时间:2023-04-07 01:32:48 Linux

1。watch命令:周期性执行下一个程序,并全屏显示执行结果-n:指定循环的秒数-d:高亮显示变化的地方-t:关闭时间间隔命令watch命令显示示例在顶部:watch-n1-dnetstat-antwatch-n1-d'pstree|grephttp'2、tcpdump命令:linux网络抓包工具3、top命令:显示系统中各个进程的资源使用情况,类似windows的任务管理器-b批处理-c显示整个命令行,而不是只显示命令名-I忽略失效进程-s机密模式-S累积模式-i<时间>设置间隔时间-u<用户名>指定用户名-p<进程号>指定进程-n<进程号times>循环显示次数信息:PID进程idPPID父进程idRUSER真实用户名UID进程所有者的用户idUSER进程所有者的用户名GROUP进程所有者的组名TTY启动进程的终端名称。不是从终端启动的进程显示为?PR优先NInice值。负值表示高优先级,正值表示低优先级P最近使用的CPU,只在多CPU环境下有意义%CPU从上次更新到现在占用的CPU时间百分比进程,单位秒TIME+进程使用的CPU总时间,单位是1/100秒%MEM进程使用的物理内存百分比VIRT进程使用的虚拟内存总量,单位是kb。VIRT=SWAP+RES在SWAP进程使用的虚拟内存中,换出的大小以kb为单位。RES进程使用且未换出的物理内存大小,以kb为单位。RES=CODE+DATACODE可执行代码占用的物理内存大小,单位为kbDATA可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位为kbSHR共享内存大小,单位为kbnFLT缺页次数nDRT自上次写入以来已修改的页数。S过程状态。(D=不可中断睡眠状态,R=运行,S=睡眠,T=trace/stop,Z=僵尸进程)sleep:top-d1#设置top的显示间隔(秒)top-n3#设置top退出前的迭代次数top-p12345-p6789//每5秒显示pid12345和pid6789资源两个进程的使用情况top-d2-c-p123456//每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{}'fileparameters:-Ffsor--field-separatorfs#指定输入文件折叠分隔符,fs为字符串或正则表达式,如-F:。-vvar=valueor--asignvar=value#分配一个用户定义的变量。-fscripfileor--filescriptfile#从脚本文件中读取awk命令。特殊:$0代表整个当前行$1每行第一个字段NF字段号可变NR每行记录数,多文件记录递增FNR与NR类似,但多文件记录不递增,每个文件从1\tTabcharacter\nNewlinecharacterFSBEGIN定义定界符RS输入记录分隔符,默认为换行符(即文本逐行输入)~匹配,与==比较不是一个精确比较!~不匹配,没有精确比较==相等,都必须相等,精确比较!=不相等,精确比较&& 逻辑与||logicalor+匹配时表示1个或多个/[0-9][0-9]+/两个或多个数字/[0-9][0-9]*/一个或多个数字FILENAME文件名OFS输出字段分隔符,默认也是空格,可以改成制表符或者其他ORS输出记录分隔符,默认换行,即处理结果也逐行输出到屏幕-F'[:#/]'定义三个分隔符用法示例:awk-F":"'{print$1}'/etc/passwdawk-F":"'{print$1,$3}'/etc/passwd#多一个逗号,$1和$3是以空格分隔awk-F":"'{print"用户名:"$1"\t\tUid:"$3}'/etc/passwd#自定义输出awk-F:'{printNF}'/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个字段的行Lineawk-F:'{printNR,NF,$NF,"\t",$0}'/etc/passwd#依次打印行号、字段数、最后一个字段值、制表符、每行内容awk-F:'NR==5||NR==6{print}'/etc/passwd#显示第5行和第6行//匹配代码块//纯字符匹配!//纯字符不匹配~//字段值匹配!~//字段值匹配不匹配~/a1|a2/字段值匹配a1或a2awk'/mysql/{print$0}'/etc/passwd#三个指令的结果相同awk'!/mysql/{print$0}'/etc/passwd#不匹配mysqlawk的输出行'!/mysql|mail/{print}'/etc/passwd#不匹配mysql或mailawk的输出行'/[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/)打印$1}'/etc/passwdawk-F:'{if($1~/mail/){print$1}}'/etc/passwdawk-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//notequaltoawk-F":"'$3>1000{print$3}'/etc/passwd//大于逻辑运算符&& ||awk-F:'{if($1~/mail/&&$3>8)print}'/etc/passwdawk-F:'{if($1~/mail/||$3>1000)print}'/etc/密码应用:ls-l|awk'NR!=1&&!/^d/{sum[$3]+=$5}END{for(iinsum)printf"%-6s%-5s%-3s%-2s\n",i,"",sum[i]/1024/1024,"MB"}'5.sed:流编辑器,是文本处理中非常有用的工具。它可以与正则表达式完美配合。处理时,将当前处理的行存储在一个临时缓冲区中,称为“模式空间”,然后使用sed命令处理缓冲区中的内容。处理完成后,将缓冲区的内容发送到屏幕,然后处理下一行,直到文件结束。原始文件的内容没有改变。参考:http://www.runoob.com/linux/l...参数:参数说明:-f<脚本文件>或--file=<脚本文件>使用选项中指定的脚本文件来处理输入文本文档。-h或--help显示帮助。-V或--version显示版本信息。-n:只打印符合模式的行-e:直接在命令行模式下编辑sed动作,这是默认选项-i:直接修改文件内容动作说明:a:新建,a即可后面跟着一个字符串,而这些字符串会换行出现(目前是下一行)~c:replace,c后面可以跟字符串,这些字符串可以替换n1和n2之间的行!d:删除,因为是删除,所以d后面一般没有dongdong;i:插入,i后面可以跟字符串,这些字符串会换行出现(当前上一行);p:Print表示将选定的数据打印出来。通常p会和参数sed-n~s:replace一起运行,可以直接进行替换工作!通常这个动作可以搭配正则记法!比如1,20s/old/new/g就够了!=显示文件行号wfilenamerfilename从另一个文件读取文本,类似输入重定向Wordanchorexample:echohello|sed's/hello/(&)/'#将hello放在扩展标记中sed-i'/DEVICE/c\Ethernet'testnl/etc/passwd|sed'2idrinktea'sed-i'/connect/s#YES#NO#'test#匹配connect这一行,将YES换成NO