grep文本搜索[ps aux和ps -ef区别、ssh_config和sshd_config区别] |
文章目录
- 一. 基本使用
- 二. 正则表达式的基本使用
- 三. ps aux和ps -ef区别
- 3.1. ps aux 和 ps –aux
- 3.2. ps aux 和ps -ef
- 四. ssh_config和sshd_config区别
一. 基本使用
- Linux grep 命令用于查找文件里符合条件的字符串。 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
-
grep "搜索的字符" 文件名
-i 忽略大小写,不区分大小写。
-c 统计搜索到字符出现的次数。
-n 输出行号。
-v 反向匹配,就是不出现要搜索字符的所有行。
- Linux grep命令:https://www.runoob.com/linux/linux-comm-grep.html
(base) -bash-4.2# grep 222 lab.log
[07/Nov/2021 11:34:09] "POST /api/projects/45/import?commit_to_project=false HTTP/1.1" 201 222
[10/Nov/2021 11:23:05] "GET /api/dm/views/108/tasks?page=12&page_size=30&interaction=scroll&project=45 HTTP/1.1" 200 42223
(base) -bash-4.2# grep "222" lab.log
[07/Nov/2021 11:34:09] "POST /api/projects/45/import?commit_to_project=false HTTP/1.1" 201 222
[10/Nov/2021 11:23:05] "GET /api/dm/views/108/tasks?page=12&page_size=30&interaction=scroll&project=45 HTTP/1.1" 200 42223
(base) -bash-4.2# grep -c "222" lab.log
2
(base) -bash-4.2# grep -n "222" lab.log
474:[07/Nov/2021 11:34:09] "POST /api/projects/45/import?commit_to_project=false HTTP/1.1" 201 222
3015:[10/Nov/2021 11:23:05] "GET /api/dm/views/108/tasks?page=12&page_size=30&interaction=scroll&project=45 HTTP/1.1" 200 42223
二. 正则表达式的基本使用
- 基础正则表达式
* 符号 匹配0次或者多次
. 符号 匹配除了换行符之外的所有符号
\{n, m|} 指定匹配次数
- 具体的正则规则可以参考(基本一致):Python正则表达式详细介绍!
[deploy@node1 kaifang]$ docker ps | grep '[0-9]\{6,9\}'
c6a9ae371592 1ab13f928dc8 "/tini -- /usr/local…" 9 months ago Up 3 weeks 9200/tcp, 9300/tcp docker_elasticsearch_1
f0485345bed7 openjdk:8-debain-zh "java -Xms512m -Xmx5…" 9 months ago Up 3 weeks 8885/tcp mingjing_uac_1
3db2069448d9 nginx "/docker-entrypoint.…" 9 months ago Up 3 weeks 80/tcp, 0.0.0.0:10888->10888/tcp, 0.0.0.0:9902->9901/tcp mingjing_frontend_1
bc7505673ba5 mysql:5.7 "docker-entrypoint.s…" 9 months ago Up 3 weeks 33060/tcp, 0.0.0.0:13306->3306/tcp mingjing_mysql_1
2ab40f606439 elasticsearch:6.8.6 "/usr/local/bin/dock…" 13 months ago Up 3 weeks 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp es
[deploy@node1 kaifang]$ docker ps | grep "[0-9]\{6,9\}"
c6a9ae371592 1ab13f928dc8 "/tini -- /usr/local…" 9 months ago Up 3 weeks 9200/tcp, 9300/tcp docker_elasticsearch_1
f0485345bed7 openjdk:8-debain-zh "java -Xms512m -Xmx5…" 9 months ago Up 3 weeks 8885/tcp mingjing_uac_1
3db2069448d9 nginx "/docker-entrypoint.…" 9 months ago Up 3 weeks 80/tcp, 0.0.0.0:10888->10888/tcp, 0.0.0.0:9902->9901/tcp mingjing_frontend_1
bc7505673ba5 mysql:5.7 "docker-entrypoint.s…" 9 months ago Up 3 weeks 33060/tcp, 0.0.0.0:13306->3306/tcp mingjing_mysql_1
2ab40f606439 elasticsearch:6.8.6 "/usr/local/bin/dock…" 13 months ago Up 3 weeks 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp es
[deploy@node1 kaifang]$ docker ps | grep '[0-9]*'
- 基础正则表达式2
^ 符号 表示以什么开头,匹配字符串开头 用在前面
$ 符号 表示以什么结尾,匹配字符串结尾 用在后面
^$ 符号 匹配空行
[deploy@node1 kaifang]$ docker images | grep '^redi'
redis latest bd571e6529f3 14 months ago 104MB
[deploy@node1 kaifang]$ grep '^root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
(base) -bash-4.2# grep '3892$' lab.log
[07/Nov/2021 10:55:11] "GET /static/css/uikit.e49a7a43adbd.css HTTP/1.1" 200 3892
[08/Nov/2021 06:45:06] "GET /static/css/uikit.e49a7a43adbd.css HTTP/1.1" 200 3892
(base) -bash-4.2# grep -c '^$' lab.log
8
(base) -bash-4.2# grep -n '^$' lab.log
81:
84:
90:
92:
567:
1605:
1607:
3027:
[deploy@node1 kaifang]$ ls | grep -c "" # 统计当前目录下的文件数量。
6
三. ps aux和ps -ef区别
3.1. ps aux 和 ps –aux
- 注意
"ps -aux"
不同于"ps aux"
。POSIX和UNIX的标准要求"ps aux"
打印用户名为"x"
的用户的所有进程,以及打印所有将由-a
选项选择的过程。如果用户名为"x"
不存在,ps
的将会解释为"ps aux"
,而且会打印一个警告。这种行为是为了帮助转换旧脚本和习惯。它是脆弱的,即将更改,因此不应依赖。 - 如果你运行
ps -aux >/dev/null
,那么你就会得到下面这行警告信息:Warning: bad ps syntax, perhaps a bogus '-'? See
- 综上: 使用时两者之间直接选择ps aux
3.2. ps aux 和ps -ef
- 两者的输出结果差别不大,但展示风格不同。aux是BSD风格,-ef是System V风格。 这是次要的区别,一个影响使用的区别是aux会截断command列,而-ef不会。当结合grep时这种区别会影响到结果。
- 综上:以上三个命令推荐使用:ps –ef
- 原文链接:http://zoroeye.iteye.com/blog/2165233
- ps -ef 各列含义如下:
UID:用户ID,输出的是用户名
PID:进程的ID
PPID:父进程ID
C:进程占用CPU的百分比
STIME:进程启动到现在的时间
TTY:进程在哪个终端上运行。如果与终端无关,则显示?;如果是pts/0等,表示由网络连接主机进程
CMD:命令的名称和参数
- ps aux 各列含义如下:
USER:用户名
PID:进程ID
%CPU:进程占用的CPU百分比
%MEM:进程占用内存的百分比
VSZ:进程使用的虚拟内存量(KB)
RSS:进程占用的固定内存量(KB)(驻留中页的数量)
STAT:进程的状态,常见的状态字符有
D:无法中断的休眠状态(通常IO的进程)
R:正在运行中
S:处于休眠状态
T:停止或被追踪
W:进入内存交换
X:死掉的进程
Z:僵尸进程
<:优先级高的进程
N:优先级较低的进程
L:有些页被锁进内存
s:进程的领导者,代表在它之下有子进程
l:多线程,克隆线程
+:位于后台的进程组
四. ssh_config和sshd_config区别
- 不多的linux教学推荐:https://www.ccstudio.com.cn/linux/part1/filemg/directory.html
-
/etc/ssh/
目录下的文件 -
ssh_config
和sshd_config
都是ssh服务器的配置文件,二者区别在于,前者是针对客户端的配置文件,后者则是针对服务端的配置文件 -
vi /etc/ssh/sshd_config
可以看到如下的端口号,针对服务端的配置。