2021-05-24 第一周

目录

  • 计划学习内容
  • grep命令
    • 基本用法
    • grep中的正则表达式
      • 定位相关
      • 字符匹配相关
      • 匹配次数相关
    • 扩展模式
    • 总结
  • Vim命令
    • 基本概念
    • 移动光标相关命令
    • 查找相关命令
    • 替换相关命令
    • 删除,复制,粘贴等操作
    • 进入和退出输入模式
    • 总结
  • top命令
    • 指标说明
    • 编辑显示界面
    • 命令使用
      • 交互命令
    • 总结
  • netstat命令
    • 基本用法
    • 常用选项
      • 1. 显示网络连接相关选项
      • 2. 其他相关选项
    • 常用场景
    • 总结

计划学习内容

  1. linux基本命令。grep,vim,top,netstat,ps,ifconfig
  2. shell脚本,基本语法:函数,逻辑控制,环境变量概念
  3. linux用户管理,文件权限

grep命令

功能:在文件中查找目标行

基本用法

grep [-cinv] [--color=auto] [-A n] [-B n] '搜寻字符串' 文件名

常用参数说明:

  1. -c:显示匹配次数
  2. -i:忽略大小写差异
  3. -n:在行首显示行号
  4. -A:After的意思,显示匹配字符串后n行的数据
  5. -B:before的意思,显示匹配字符串前n行的数据
  6. -v:显示没有匹配行
  7. --color:以特定颜色高亮显示匹配关键字

grep中的正则表达式

grep中的匹配字符串其实一个正则表达式。但其的语法与标准的正则表达式有一些区别

定位相关

元数据 意义和范例 与标准正则表达式的区别
^word 匹配以word开头的行 无区别
word$ 匹配以word结尾的行 无区别
\w\W \w等价于[0-9a-zA-Z_]\W\w取反 无区别
\s\S \s匹配可见字符,\S匹配不可见字符 无区别

字符匹配相关

元数据 意义和范例 与标准正则表达式的区别
. 匹配任意一个字符 无区别
[chars] 匹配任意一个方括号内的字符 无区别
[n1-n2] 匹配n1n2之间的任意一个字符。例如[0-9][a-z] 无区别
[^chars] 匹配非方括号内的字符 无区别
\(word\) ()内的字符看做一个组合,当全部出现时才会匹配 左右两个括号需要加反斜杠
word1\|word2 或逻辑,匹配word1或者word2 |需要加反斜杠

匹配次数相关

元数据 意义和范例 与标准正则表达式的区别
* 匹配0或若干次 无区别
\{n1,n2\}\{n1\},\{n1,\} 分别表示匹配字符n1n2次,匹配字符n1次,至少匹配字符n1 左右大括号需要加反斜杠
\? 匹配0次或一次 加反斜杠
\+ 至少匹配一次 加反斜杠

扩展模式

通过增加-E参数,可以启动模式。启动扩展模式后,将可以使用标准正在表达式写法。

在这里插入图片描述

总结

  1. 不进入扩展模式时,除*以外的次数相关模式都需要加反斜杠,()|也要加反斜杠
  2. 使用扩展模式时,可以使用标准正则表达式写法
  3. 使用-n可以打印行号
  4. 使用-v可以反选

Vim命令

vim用户查看和编辑文本

基本概念

vim有三种模式

  1. 命令模式
  2. 底线命令模式
  3. 输入模式

2021-05-24 第一周_第1张图片

移动光标相关命令

按键 功能
方向键 上下左右控制光标
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去除

2021-05-24 第一周_第2张图片

替换相关命令

命令 说明
: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

2021-05-24 第一周_第3张图片

删除,复制,粘贴等操作

命令 说明
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 退回编辑模式

总结

  1. vim的有三种模式:命令模式,输入模式,底部命令模式
  2. 光标快速移动。gg G nG 0 $ H M L
  3. 查找。向下和向上两种模式/ ? n N
  4. 替换。替换命令分为范围,替换规则,控制选项3部分组成。%表示全局,等价于1,$。控制选项中g表示替换所有,c表示替换前确认
  5. 编辑。x,删除当前字符,d表示删除,y表示复制,p表示粘贴,u表示撤销,Ctrl+r表示重做,.表示重复上个动作

top命令

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配置文件的推荐方法。

总结

  1. top用于跟踪操作系统和进程的资源使用情况
  2. 可以使用-p [pid]指定跟踪的进程,可以同时指定多个进程-p pid1 -p pid2
  3. 可以使用-c显示运行的整个命令行,可以用于区分同一个程序的不同进程。如果仅仅为了了解进程的命令行,可以使用ps命令
  4. 可以按下f键,编辑页面显示的指标和它们的顺序
  5. 可以按下PM切换进程排序方式为cpu和内存

netstat命令

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的结果分为两个部分:

  1. Active Internet connections (w/o servers)。表示当前网络连接的情况
  2. Active UNIX domain sockets (w/o servers)。表示当前本地socket连接的情况

Active Internet connections (w/o servers)说明

说明
Proto 协议
Recv-Q 接收队列长度
Send-Q 发送队列长度
Local Address 本地地址和端口
Foreign Address 远程地址和端口
State 当前连接的状态

常用选项

1. 显示网络连接相关选项

选项 说明
-a 显示connection,listen,unix socket三种。默认只显示connection和unix socket
-l 只显示listen端口监听(常用)
-t 只显示tcp协议(常用)
-u 只显示udp协议
-n 端口和ip使用数字表示(常用)
-p 显示连接相关的进程号和简单名称

2. 其他相关选项

选项 说明
-r 显示当前路由信息,与route命令的结果一样
-i 显示网卡信息,显示的信息很简单,推荐使用ifconfig
-s 显示网络的统计信息

2021-05-24 第一周_第4张图片

常用场景

场景 命令
查看当前网络监听情况 netstat -nlp
查看所有的tcp连接 netstat -at
查看某个进程相关的连接 netstat -nap | grep [进程号]

总结

  1. netstat命令用于查看当前网络连接情况和网络数据统计情况
  2. 通过-l-a可以查看listen类型的网络数据
  3. 通过-t-u可以只查看tcp或者udp的网络数据
  4. 通过-p可以显示网络连接相关的进程数据

你可能感兴趣的:(每周学习计划总结,后端,linux)