2021-05-24 第一周

计划学习内容

  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. 输入模式

在这里插入图片描述

移动光标相关命令

按键功能
方向键上下左右控制光标
gg跳转到第一行
G跳转到最后一行
nG跳转到第n行
Ctrl + u向上翻半页(up)
Ctrl + d向下翻半页(down)
Ctrl + b向上翻一页(backward)
Ctrl + f向下翻一页(forward)
H光标移动到当前页面最上方一行的第一个字符
M光标移动到当前页面中间一行的第一个字符
L光标移动到当前页面最下面一行的第一个字符
n<space>光标在当前行向后移动n个字符(当前行不够,会移动到下一行)
n<Enter>光标向下移动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$删除当前光标位置到该行行尾的内容
yy表示复制,与d类似
p Pp表示粘贴到当前行的下一行,P粘贴到当前行的上一行
u取消上一个操作
Ctrl r重做(redo)上一个操作
.重复上一个操作

进入和退出输入模式

命令说明
i I进入输入模式(Insert Mode),i表示从当前位置输入,I表示从当前行,第一个非空字符输入
a Aa表示从当前光标的下一个字符处输入,A表示从当前行最后一个字符处输入
o Oo表示从当前行的下面插入一行,O表示从当前行的上面插入一行
r Rr取代光标处字符一次,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显示网络的统计信息

在这里插入图片描述

常用场景

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

总结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值