功能:在文件中查找目标行
grep [-cinv] [--color=auto] [-A n] [-B n] '搜寻字符串' 文件名
常用参数说明:
-c
:显示匹配次数-i
:忽略大小写差异-n
:在行首显示行号-A
:After的意思,显示匹配字符串后n行的数据-B
:before的意思,显示匹配字符串前n行的数据-v
:显示没有匹配行--color
:以特定颜色高亮显示匹配关键字grep中的匹配字符串其实一个正则表达式。但其的语法与标准的正则表达式有一些区别
元数据 | 意义和范例 | 与标准正则表达式的区别 |
---|---|---|
^word |
匹配以word 开头的行 |
无区别 |
word$ |
匹配以word 结尾的行 |
无区别 |
\w 和\W |
\w 等价于[0-9a-zA-Z_] ,\W 为\w 取反 |
无区别 |
\s 和\S |
\s 匹配可见字符,\S 匹配不可见字符 |
无区别 |
元数据 | 意义和范例 | 与标准正则表达式的区别 |
---|---|---|
. |
匹配任意一个字符 | 无区别 |
[chars] |
匹配任意一个方括号内的字符 | 无区别 |
[n1-n2] |
匹配n1 到n2 之间的任意一个字符。例如[0-9] 或[a-z] |
无区别 |
[^chars] |
匹配非方括号内的字符 | 无区别 |
\(word\) |
将() 内的字符看做一个组合,当全部出现时才会匹配 |
左右两个括号需要加反斜杠 |
word1\|word2 |
或逻辑,匹配word1 或者word2 |
| 需要加反斜杠 |
元数据 | 意义和范例 | 与标准正则表达式的区别 |
---|---|---|
* |
匹配0或若干次 | 无区别 |
\{n1,n2\} ,\{n1\} ,\{n1,\} |
分别表示匹配字符n1 到n2 次,匹配字符n1 次,至少匹配字符n1 次 |
左右大括号需要加反斜杠 |
\? |
匹配0次或一次 | 加反斜杠 |
\+ |
至少匹配一次 | 加反斜杠 |
通过增加-E
参数,可以启动模式。启动扩展模式后,将可以使用标准正在表达式写法。
*
以外的次数相关模式都需要加反斜杠,()
和|
也要加反斜杠-n
可以打印行号-v
可以反选vim用户查看和编辑文本
vim有三种模式
按键 | 功能 |
---|---|
方向键 | 上下左右控制光标 |
gg |
跳转到第一行 |
G |
跳转到最后一行 |
nG |
跳转到第n行 |
Ctrl + u |
向上翻半页(up) |
Ctrl + d |
向下翻半页(down) |
Ctrl + b |
向上翻一页(backward) |
Ctrl + f |
向下翻一页(forward) |
H |
光标移动到当前页面最上方一行的第一个字符 |
M |
光标移动到当前页面中间一行的第一个字符 |
L |
光标移动到当前页面最下面一行的第一个字符 |
n |
光标在当前行向后移动n个字符(当前行不够,会移动到下一行) |
n |
光标向下移动n行的第一个字符 |
0 |
移动到当前行第一个字符 |
$ |
移动到当前行最后一个字符 |
命令 | 说明 |
---|---|
/word |
向下查找关键字(使用的较多) |
?word |
向上查找关键字 |
n |
移动到下一个关键字 |
N |
移动到上一个关键字 |
查找后,关键字在页面上会标记成黄色,可以输入命令
:noh
去除
命令 | 说明 |
---|---|
:n1,n2s/word1/word2/g |
在n1和n2行之间的内容,将word1替换成word2 |
:%s/word1/word2/g |
在全文中,将word1替换成word2 |
2,$s/word1/word2/g |
在2行以后的内容,将word1替换成word2。其中$ 表示最后一行 |
%s/word1/word2/gc |
在全文中,将word1替换成word2,但每个替换前需要用户确认。c 表示confirm |
命令 | 说明 |
---|---|
x X |
向后删除一个字符,向前删除一个字符 |
nx |
向后删除n个字符 |
dd |
删除当前行 |
ndd |
从当前行开始,向下删除n行 |
d1G |
删除当前行到第一个行所有内容 |
dG |
删除当前行到最后一样所有内容 |
d0 |
删除当前光标位置到该行行首的内容 |
d$ |
删除当前光标位置到该行行尾的内容 |
y |
y 表示复制,与d 类似 |
p P |
p表示粘贴到当前行的下一行,P 粘贴到当前行的上一行 |
u |
取消上一个操作 |
Ctrl r |
重做(redo)上一个操作 |
. |
重复上一个操作 |
命令 | 说明 |
---|---|
i I |
进入输入模式(Insert Mode),i表示从当前位置输入,I 表示从当前行,第一个非空字符输入 |
a A |
a 表示从当前光标的下一个字符处输入,A 表示从当前行最后一个字符处输入 |
o O |
o 表示从当前行的下面插入一行,O 表示从当前行的上面插入一行 |
r R |
r 取代光标处字符一次,R 一直取代光标处字符,直到按下ESC 键 |
ESC |
退回编辑模式 |
gg
G
nG
0
$
H
M
L
/
?
n
N
%
表示全局,等价于1,$
。控制选项中g
表示替换所有,c
表示替换前确认.
表示重复上个动作top命令介绍
top - 03:43:26 up 2:17, 1 user, load average: 0.48, 0.52, 0.58
Tasks: 12 total, 1 running, 11 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.8 us, 1.7 sy, 0.0 ni, 97.4 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem : 4194304 total, 2082328 free, 2099604 used, 12372 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 2094700 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
44 root 20 0 4879320 1.996g 14636 S 1.7 49.9 3:53.70 java
4019 root 20 0 140968 5860 4460 S 0.3 0.1 0:00.06 sshd
1 root 20 0 40848 3188 2292 S 0.0 0.1 0:00.77 systemd
31 root 20 0 35024 4384 4088 S 0.0 0.1 0:00.52 systemd-journal
33 root 20 0 89868 3780 2900 S 0.0 0.1 0:00.00 sshd
34 root 20 0 126328 1584 968 S 0.0 0.0 0:00.06 crond
70 dbus 20 0 28548 1676 1356 S 0.0 0.0 0:00.67 dbus-daemon
71 root 20 0 26396 1688 1400 S 0.0 0.0 0:00.39 systemd-logind
272 root 20 0 161688 12800 4192 S 0.0 0.3 0:00.33 rsyslogd
854 root 20 0 125428 1136 892 S 0.0 0.0 0:00.00 anacron
4021 root 20 0 142520 3416 2216 S 0.0 0.1 0:00.09 zsh
4091 root 20 0 157556 2148 1544 R 0.0 0.1 0:00.00 top
第一行
03:43:26 当前时间
up 2:17 系统运行时间,格式为时:分
1 user 当前登录用户数
load average: 0.48, 0.52, 0.58 系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二行表示进程的统计信息
12 total 总进程数
1 running 正在运行的进程数
11 sleeping 正在休眠的进程数
0 stopped 停止的进程数(已经接收到term信号,但是还没有停止?)
0 zombie 僵尸进程数
第三行cpu使用的统计信息
0.8 us, 用户空间使用的cpu百分比
1.7 sy, 操作系统(内核)使用的cpu百分比
0.0 ni,
97.4 id, 空闲的cpu百分比
0.0 wa,
0.0 hi, 硬件中断使用的cpu百分比
0.1 si, 软件中断使用的cpu百分比
0.0 st
第四行是内存使用信息,单位kb
4194304 total, 总的内存 total = free + used + buff
2082328 free, 现在空闲的内存
2099604 used, 已经被使用的内存
12372 buff/cache 作为内核缓存的内存
第五行是交换区内存,单位kb。在物理内存不足时,操作系统会把部分内存中的数据保存到交换区。
0 total, 交换区总大小
0 free, 可以使用的交换区
0 used. 已经使用的交换区
2094700 avail Mem 总的可用内存量 avial = free + buff
后面指标意思
序号 列名 含义
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 任务标志,参考 sched.h
点击f键可以编辑需要显示的列和显示的顺序
top 使用格式
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
参数说明
d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
p 通过指定监控进程ID来仅仅监控某个进程的状态。
q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
S 指定累计模式
s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
i 使top不显示任何闲置或者僵死进程。
c 显示整个命令行而不只是显示命令名
Ctrl+L 擦除并且重写屏幕。
h或者? 显示帮助画面,给出一些简短的命令总结说明。
k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
i 忽略闲置和僵死进程。这是一个开关式命令。
q 退出程序。
r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
S 切换到累计模式。
s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
f或者F 从当前显示中添加或者删除项目。
o或者O 改变显示项目的顺序。
l 切换显示平均负载和启动时间信息。
m 切换显示内存信息。
t 切换显示进程和CPU状态信息。
c 切换显示命令名称和完整命令行。
M 根据驻留内存大小进行排序。
P 根据CPU使用百分比大小进行排序。
T 根据时间/累计时间进行排序。
W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
-p [pid]
指定跟踪的进程,可以同时指定多个进程-p pid1 -p pid2
-c
显示运行的整个命令行,可以用于区分同一个程序的不同进程。如果仅仅为了了解进程的命令行,可以使用ps
命令P
,M
切换进程排序方式为cpu和内存netstat命令用于查看网络连接的情况。
~ # netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 aaaaaaaaaaaaaaaaa:51088 192.107.53.202:8635 ESTABLISHED
tcp 0 0 aaaaaaaaaaaaaaaaa:51084 192.107.53.202:8635 ESTABLISHED
tcp 0 0 aaaaaaaaaaaaaaaaa:51086 192.107.53.202:8635 ESTABLISHED
tcp 0 0 aaaaaaaaaaaaaaaaa:58212 192.107.53.:canon-bjnp3 ESTABLISHED
tcp 0 0 aaaaaaaaaaaaaaaaa:51090 192.107.53.202:8635 ESTABLISHED
tcp 0 0 aaaaaaaaaaaaaaaaa:51082 192.107.53.202:8635 ESTABLISHED
tcp 0 128 aaaaaaaaaaaaaaaaa-8:ssh 192.107.13:3com-njack-1 ESTABLISHED
tcp 0 0 aaaaaaaaaaaaaaaaa-8:ssh 192.107.13:3com-njack-2 FIN_WAIT2
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 124175 /run/systemd/shutdownd
unix 4 [ ] DGRAM 124180 /run/systemd/journal/socket
unix 4 [ ] DGRAM 124182 /dev/log
unix 2 [ ] DGRAM 124149 /run/systemd/notify
unix 2 [ ] DGRAM 124151 /run/systemd/cgroups-agent
unix 2 [ ] DGRAM 92830
unix 3 [ ] STREAM CONNECTED 111143
netstat的结果分为两个部分:
Active Internet connections (w/o servers)说明
列 | 说明 |
---|---|
Proto | 协议 |
Recv-Q | 接收队列长度 |
Send-Q | 发送队列长度 |
Local Address | 本地地址和端口 |
Foreign Address | 远程地址和端口 |
State | 当前连接的状态 |
选项 | 说明 |
---|---|
-a |
显示connection,listen,unix socket三种。默认只显示connection和unix socket |
-l |
只显示listen端口监听(常用) |
-t |
只显示tcp协议(常用) |
-u |
只显示udp协议 |
-n |
端口和ip使用数字表示(常用) |
-p |
显示连接相关的进程号和简单名称 |
选项 | 说明 |
---|---|
-r |
显示当前路由信息,与route命令的结果一样 |
-i |
显示网卡信息,显示的信息很简单,推荐使用ifconfig |
-s |
显示网络的统计信息 |
场景 | 命令 |
---|---|
查看当前网络监听情况 | netstat -nlp |
查看所有的tcp连接 | netstat -at |
查看某个进程相关的连接 | netstat -nap | grep [进程号] |
-l
和-a
可以查看listen类型的网络数据-t
和-u
可以只查看tcp或者udp的网络数据-p
可以显示网络连接相关的进程数据