❀My学习Linux命令小记录(6)❀

news/2024/7/24 11:04:15 标签: linux, 服务器, 网络, 学习, 安全

目录

❀My学习Linux命令小记录(6)❀

26.ps指令

27.grep指令

28.awk指令

29.sed指令

30.wc指令


❀My学习Linux命令小记录(6)❀

26.ps指令

功能说明:报告当前系统的进程状态

(ps.ps命令 用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。)

基本语法:ps(选项)

选项:

ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义

-ef:显示系统中所有进程信息,包括系统进程用户进程。它会显示出每个进程的PID、PPID(父进程ID)、C(CPU使用率)、STIME(进程启动时间)、TTY(终端)、CMD(进程命令)等信息。通过这个参数我们可以快速了解系统正在运行的进程情况

-aux:这个参数遇上一个参数类似,也可以显示系统中的所有进程信息。但不同的是,它会显示出进程的用户信息,包括进程的所有者、所属组等。这个参数对于查找特定用户的进程非常有用

-l:显示进程的长格式信息。他会显示出进程的所有详细信息,包括进程的状态(S)、CPU占用率(%CPU)、内存占用率(%MEM)、优先级(PRI)、进程运行时间(TIME)等

-e:显示系统中正在运行的进程信息,但不包括僵尸进程(Zombie)。僵尸进程是指已经结束单父进程还没有处理的进程。使用这个参数可以过滤掉僵尸进程,使进程列表更加清晰

-u:显示指定用户的进程信息

-p:显示指定进程ID的进程信息

-A:列出所有的进程信息

-w:显示加宽可以显示较多的资讯

-C:显示指定命令的进程信息

实例:

#ps -u root    # 显示指定用户信息

#ps -aux    #显示所有包含其他使用者的进程

aux输出格式含义:

USER: 行程拥有者

PID: pid

%CPU: 占用的 CPU 使用率

%MEM: 占用的记忆体使用率

VSZ: 占用的虚拟记忆体大小

RSS: 占用的记忆体大小

TTY: 终端的次要装置号码 (minor device number of tty)

STAT: 该行程的状态:

D:  无法中断的休眠状态 (通常 IO 的进程)

R: 正在执行中

S: 静止状态

T: 暂停执行

Z: 不存在但暂时无法消除

W: 没有足够的记忆体分页可分配

<: 高优先序的行程

N: 低优先序的行程

L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)

START: 行程开始时间

TIME: 执行的时间

COMMAND:所执行的指令

#ps -ef    # 显示指定用户信息

#ps -l  #显示进程长格式信息

-l输出格式含义:

F代表这个程序的旗标 (flag), 4 代表使用者为 super user

S 代表这个程序的状态 (STAT)

UID 程序被该 UID 所拥有

PID 就是这个程序的 ID !

PPID 则是其上级父程序的ID

C CPU 使用的资源百分比

PRI 这个是 Priority (优先执行序) 的缩写

NI 这个是 Nice 值

ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-"

SZ 使用掉的内存大小

WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作

TTY 登入者的终端机位置

TIME 使用掉的 CPU 时间

CMD 所下达的指令为何

27.grep指令

功能说明:强大的文本搜索工具

(ps.grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。)

基本语法:

grep [options] pattern [files]

grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

pattern:表示要查找的字符串或正则表达式。

files :表示要查找的文件名,可以同时查找多个文件,如果省略 files 参数,则默认从标准输入中读取数据。

选项:

-i忽略大小写进行匹配。

-v反向查找,只打印不匹配的行。

-n:显示匹配行的行号

-r递归查找子目录中的文件。

-l:只打印匹配的文件名

-c:只打印匹配的行数

规则表达式:

^    # 锚定行的开始 如:'^grep'匹配所有以grep开头的行。    

$    # 锚定行的结束 如:'grep$' 匹配所有以grep结尾的行。

.    # 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。    

*    # 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。    

.*   # 一起用代表任意字符。   

[]   # 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。    

[^]  # 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。    

\(..\)  # 标记匹配字符,如'\(love\)',love被标记为1。    

\<      # 锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。    

\>      # 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。    

x\{m\}  # 重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。    

x\{m,\}   # 重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。    

x\{m,n\}  # 重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。   

\w    # 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。   

\W    # \w的反置形式,匹配一个或多个非单词字符,如点号句号等。   

\b    # 单词锁定符,如: '\bgrep\b'只匹配grep。

更多参数说明: 

- -a 或 --text : 不要忽略二进制的数据。

- -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。

- -b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。

- -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。

- -c 或 --count : 计算符合样式的列数。

- -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。

- -d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

- -e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。

- -E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。

- -f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。

- -F 或 --fixed-regexp : 将样式视为固定字符串的列表。

- -G 或 --basic-regexp : 将样式视为普通的表示法来使用。

- -h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。

- -H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。

- -i 或 --ignore-case : 忽略字符大小写的差别。

- -l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。

- -L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。

- -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。

- -o[[ 或 --only-matching : 只显示匹配PATTERN 部分。

- -q 或 --quiet或--silent : 不显示任何信息。

- -r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。

- -s 或 --no-messages : 不显示错误信息。

- -v 或 --invert-match : 显示不包含匹配文本的所有行。

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

- -w 或 --word-regexp : 只显示全字符合的列。

- -x --line-regexp : 只显示全列符合的列。

- -y : 此参数的效果和指定"-i"参数相同。

实例:

#grep hello 1.txt   #在文件file.txt 中查找字符串 "hello",并打印匹配的行

#grep -r -n happy moon/   #在文件夹moon中递归(-r)查找所有文件中匹配正则表达式 "happy" 的行,并打印匹配行所在的文件名和行号(-n)

#echo "hello world" ./1.txt | grep -c world  #在当前目录的1.txt文件中中查找字符串 "world",并只打印匹配的行数(-c)

#grep -r update ~/moon  #以递归(-r)的方式查找符合条件的文件。例如,查找指定目录~/moon及其子目录(如果存在子目录的话)下所有文件包含字符串"update"的文件,并打印出该字符串所在行的内容

#grep -v test *1.txt*  #查找文件名(1.txt)中包含 test 的文件中不包含test的行

#ifconfig eth1 |grep -E "([0-9]{1,3}\.){3}" |awk '{print $2}'   #-E使用正则表达式提取出网卡的ip地址

28.awk指令

功能说明:AWK 是一种处理文本文件的语言(取列),是一个强大的文本分析工具。

(ps.awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。)

基本语法:

awk [选项参数] 'script' var=value file(s)

awk [选项参数] -f scriptfile var=value file(s)

选项:

-F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:

-v var=value 赋值一个用户定义变量,将外部变量传递给awk

-f scripfile 从脚本文件中读取awk命令

-m[fr] val 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。

模式可以是以下任意一个:

/正则表达式/:使用通配符的扩展集。

关系表达式:使用运算符进行操作,可以是字符串或数字的比较测试。

模式匹配表达式:用运算符~(匹配)和!~(不匹配)。

BEGIN语句块、pattern语句块、END语句块:参见awk的工作原理

awk内置变量(预定义变量)

说明:[A][N][P][G]表示第一个支持变量的工具,[A]=awk、[N]=nawk、[P]=POSIXawk、[G]=gawk

 **$n**  当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段。

 **$0**  这个变量包含执行过程中当前行的文本内容。

[N]  **ARGC**  命令行参数的数目。

[G]  **ARGIND**  命令行中当前文件的位置(从0开始算)。

[N]  **ARGV**  包含命令行参数的数组。

[G]  **CONVFMT**  数字转换格式(默认值为%.6g)。

[P]  **ENVIRON**  环境变量关联数组。

[N]  **ERRNO**  最后一个系统错误的描述。

[G]  **FIELDWIDTHS**  字段宽度列表(用空格键分隔)。

[A]  **FILENAME**  当前输入文件的名。

[P]  **FNR**  同NR,但相对于当前文件。

[A]  **FS**  字段分隔符(默认是任何空格)

[G]  **IGNORECASE**  如果为真,则进行忽略大小写的匹配。

[A]  **NF**  表示字段数,在执行过程中对应于当前的字段数。

[A]  **NR**  表示记录数,在执行过程中对应于当前的行号。

[A]  **OFMT**  数字的输出格式(默认值是%.6g)。

[A]  **OFS**  输出字段分隔符(默认值是一个空格)。

[A]  **ORS**  输出记录分隔符(默认值是一个换行符)。

[A]  **RS**  记录分隔符(默认是一个换行符)。

[N]  **RSTART**  由match函数所匹配的字符串的第一个位置。

[N]  **RLENGTH**  由match函数所匹配的字符串的长度。

[N]  **SUBSEP**  数组下标分隔符(默认值是34)。

实例:

#awk '{print $1,$2,$5}' OFS=" $ "  log.txt  #指定字段分隔符$

用法一:

awk '{[pattern] action}' {filenames}   # 行匹配语句 awk ' ' 只能用单引号

实例:

#awk '{print $1,$4}' log.txt  # 每行按空格或TAB分割,输出文本中的1、4项

用法二:

awk -F  #-F相当于内置变量FS, 指定分割字符

实例:

#awk -F , '{print $1,$2}' log.txt   # -F使用","分割

#awk 'BEGIN{FS=","} {print $1,$2}' log.txt   #或者使用内建变量指定字段分隔符,

#awk ' BEGIN{FS=" ---- "} {print $1,$2,$3}'  111   #指定字段分隔符----

用法三:

awk -v  # 设置变量

实例:

#awk -v a=1 '{print $1,$1+a}' log.txt   #-v设置变量a=1,打印1,2项

#awk -v a=1 -v b=s '{print $1,$1+a,$1b}' log.txt  #-v设置变量a=1,b=s,打印1,2项并加上s

用法四:

awk -f {awk脚本} {文件名}

实例:

# awk -f cal.awk log.txt

使用正则字符串匹配

#awk '$2 ~ /th/ {print $2,$4}' log.txt  # 输出第二列包含 "th",并打印第二列与第四列

~ 表示模式开始。// 中是模式。

#awk ' /re/ ' log.txt  # 输出包含 "re" 的行

#awk 'BEGIN{IGNORECASE=1} /this/' log.txt  # 忽略大小写

awk脚本基本结构

awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' file

一个awk脚本通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块3部分组成,这三个部分是可选的。任意一个部分都可以不出现在脚本中,脚本通常是被 单引号 或 双引号 中,例如:

awk 'BEGIN{ i=0 } { i++ } END{ print i }' filename

awk "BEGIN{ i=0 } { i++ } END{ print i }" filename

awk的工作原理

awk 'BEGIN{ commands } pattern{ commands } END{ commands }'

    第一步:执行BEGIN{ commands }语句块中的语句;

    第二步:从文件或标准输入(stdin)读取一行,然后执行pattern{ commands }语句块,它逐行扫描文件,从第一行到最后一行重复这个过程,直到文件全部被读取完毕。

    第三步:当读至输入流末尾时,执行END{ commands }语句块。

BEGIN语句块 在awk开始从输入流中读取行 之前 被执行,这是一个可选的语句块,比如变量初始化、打印输出表格的表头等语句通常可以写在BEGIN语句块中。

END语句块 在awk从输入流中读取完所有的行 之后 即被执行,比如打印所有行的分析结果这类信息汇总都是在END语句块中完成,它也是一个可选语句块。

pattern语句块 中的通用命令是最重要的部分,它也是可选的。如果没有提供pattern语句块,则默认执行{ print },即打印每一个读取到的行,awk读取的每一行都会执行该语句块。

29.sed指令

功能说明:功能强大的流式文本编辑器,利用脚本来处理文本文件。(替换和取行)。

(ps.sed 是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。)

基本语法:sed [-hnV][-e<script>][-f<script文件>][文本文件]

选项:

参数说明:

-e<script>或--expression=<script>   以选项中指定的script来处理输入的文本文件。

-f<script文件>或--file=<script文件>  以选项中指定的script文件来处理输入的文本文件。

-h或--help   显示帮助。

-i 直接修改文件内容。

-n或--quiet或--silent   静默输出,仅显示script处理后的结果。

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

动作说明:

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

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

d :删除,因为是删除,所以 d 后面通常不接任何东西

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

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

s :取代,可以直接进行取代的工作,通常这个s的动作可以搭配正则表达式!例如 1,20s/old/new/g

实例:

我们先创建一个 testfile 文件,内容如下:

#sed -e 4a\newLine testfile 在 testfile 文件的第四行(4)后添加(a)一行,并将结果输出到标准输出

#nl testfile | sed '2,5d'  #将 testfile 的内容列出并且列印行号,将第 2~5 行删除

查看某一文件内容并且列印行号用nl 文件名

sed 的动作为 2,5d,那个 d 删除的意思,因为删除了 2-5 行,所以显示的数据就没有 2-5 行了, 另外,原本应该是要下达 sed -e 才对,但没有 -e 也是可以的,同时也要注意的是, sed 后面接的动作,请务必以 '...' 两个单引号括住喔!

#nl testfile | sed '3,$d'    #要删除第 3 到最后一行

#nl testfile |sed '2a drink tea?'   #在第二行后 加上drink tea?

#nl testfile |sed '2i drink tea?'   #在第二行前加上drink tea?

#nl testfile | sed '2a Drink tea or......\

>drink beer?'    #要增加两行以上,在第二行后面加入两行字,例如 Drink tea or ......与 drink beer?

每一行之间都必须要以反斜杠 \ 来进行新行标记。上面的例子中,我们可以发现在第一行的最后面就有 \ 存在。

#nl testfile |sed '2,5c No 2-5 number'  #将第 2-5 行的内容取代(c)成为 No 2-5 number

#nl testfile |sed -n '5,7p'  #仅列出 testfile 文件内的第 5-7 行(打印p)

#nl testfile | sed -n '/oo/p'  #搜索 testfile 有 oo 关键字的行:(-n仅显示script处理后的结果)

#nl testfile |sed '/oo/d'  #删除 testfile 所有包含 oo 的行,其他行输出

#nl testfile | sed -n '/oo/{s/oo/kk/;p;q}'  #搜索 testfile,找到 oo 对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把 oo 替换为 kk,再输出这行,最后的 q 是退出,p是打印,s是取代。

#sed -e 's/oo/kk/g' testfile\  #g 标识符表示全局查找替换,使 sed 对文件中所有符合的字符串都被替换,修改后内容会到标准输出,不会修改原文件

#sed -i 's/oo/kk/g' testfile  #选项 i 使 sed 修改文件

sed 的 -i 选项可以直接修改文件内容,这功能非常有帮助!举例来说,如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!因为文件太大了!那怎办?就利用 sed 啊!透过 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修订!

30.wc指令

功能说明统计文件的字节数、字数、行数

(ps.wc命令 统计指定文件中的字节数、字数、行数,并将统计结果显示输出。利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。wc同时也给出所指定文件的总统计数。)

语法:

wc(选项)(参数)

wc [选项]... [文件]...

wc [选项]... --files0-from=F

选项:

-c :统计字节数,或--bytes或——chars:只显示Bytes数

-l :统计行数,或——lines:只显示列数

-m : 统计字符数。这个标志不能与 -c 标志一起使用

-w :统计字数,或——words:只显示字数。一个字被定义为由空白、跳格或换行字符分隔的字符串

-L :打印最长行的长度

-help  :显示帮助信息

--version : 显示版本信息

实例

在默认的情况下,wc将计算指定文件的行数、字数,以及字节数。使用的命令为:

# wc testfile

-l)行数为11,(-w)单词数为23,(-c)字节数为148

❀My学习Linux命令小记录(6)❀over~


http://www.niftyadmin.cn/n/5236792.html

相关文章

YOLOv8 区域计数 | 入侵检测 | 人员闯入

大家好,昨天的 YOLOv8 新增加了一个功能,区域计数,用这个功能我们能实现很多的任务, 比如入侵检测,流量统计,人员闯入等,使用方式也非常的方便,但是一定要使用最新版的 YOLOv8 代码(2023/12/03更新的代码)。 低版本是不具备这个功能的,上面是演示效果。 使用非常的方…

SAP ABAP ALV创建动态树形菜单

创建动态树形菜单——ALV 创建的合同越多&#xff0c;使用树形菜单能比较直观的地显示&#xff0c;而且展开下阶也能明确的知识相关的信息&#xff0c;比如合同中的出口成品有哪些。 设计要点&#xff1a; 第一、 Node_key一定要区分&#xff0c;不能重复&#xff0c;否则出错…

harmonyOS学习笔记之@Styles装饰器与@Extend装饰器

Styles装饰器 定义组件重用样式 自定义样式函数使用装饰器 可以定义在组件内或全局,内部优先级>外部,内部不需要function,外部需要function 定义在组件内的styles可以通过this访问组件内部的常量和状态变量,可以在styles里通过事件来改变状态变量 弊端:只支持通用属性和通用…

一文讲透Python机器学习中的K折交叉验证法

1.K折交叉验证法的基本原理 K折交叉验证是针对验证集法的另外一种改进方式&#xff0c;也广泛用于机器学习实践。具体的操作方式就是首先把样本全集采用分层抽样的方式随机划分为大致相等的K个子集&#xff0c;每个子集包含约1/K的样本&#xff0c;K的取值通常为5或者10&#…

半导体封装之倒装封装 (Flip Chip)

倒装封装 &#xff08;Flipchip&#xff09;是相对于引线键合(Wire Bonding)来说的&#xff0c;之所以叫做倒装&#xff0c;是因为flip chip是正面朝下放置。倒装芯片技术是通过芯片上的凸点直接将元器件朝下互连到基板、载体或者电路板上。引线键合的连接方式是将芯片的正面朝…

SQL -高阶3

zstarling 字符串拼接与类型转换最大&#xff0c;最小值&#xff0c;提取日期部分的数值日期截断 字符串拼接与类型转换 新语法SQL delete from public.basiclaw_qr_staff_ac ct where batch_date || data_dt || :: date and biz_line || biz_line || ;详解 该 SQL 语句…

ssm土家风景文化管理平台源码和论文答辩PPT

摘要 土家风景文化管理平台是土家风景文化管理必不可少的一个部分。在风景文化管理的整个过程中&#xff0c;平台担负着最重要的角色。为满足如今日益复杂的管理需求&#xff0c;各类土家风景文化管理平台也在不断改进。本课题所设计的土家风景文化管理平台&#xff0c;使用jav…

easyrecovery2024绿色版中文语言电脑数据恢复工具

平时很多人都会把自己工作时&#xff0c;或者生活中的数据存储在我们的电脑上&#xff0c;很多时候&#xff0c;由于我们的误操作或者是其它某些问题&#xff0c;很容易就会误删除一些文件数据了&#xff0c;尤其是一些电脑出现故障&#xff0c;总是会导致数据丢失&#xff0c;…