当前位置:首页 > 操作系统 > Linux

linux学习笔记6



















shell 脚本命令

1.diff

diff   file file1

    -c  显示周围的行

    -u  按照一格式统一输出生成补丁

    -r  比较两个目录中文件的不同

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070553242.jpg" title="image001.png" />

patch  -b  备份原文件

2.grep

grep   关键字符   文件|目录  在文件或目录中查找含有关键字的行

   

    -i         忽略大小写

    -n         显示关键字所在行

    -c         显示过滤结果个数 wc-l

    -v         反向过滤

    -E “关键字1|关键字2”  过滤多个关键字

    -r         在目录中查找,含有关键字的文件

注意:^关键字        以关键字开头

    关键字$           以关键字结尾

 

 

1)不区分大小写

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070553475.jpg" title="image003.png" />

2)过滤以root开头。以root结尾

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070553738.jpg" title="image005.png" />

3)以root开头或以root结尾

方法一:

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070554000.jpg" title="image007.png" />

方法二:

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070554239.jpg" title="image009.png" />

 

4)既不以root开头也不以root结尾但包含root(优先考虑)

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070554526.jpg" title="image011.png" />

5)统计root出现了共几行,分别是哪几行

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070554814.jpg" title="image013.png" />

6)不包含root的行

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070555043.jpg" title="image015.png" />

7)包含root,但不在开头也不在结尾

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070555329.jpg" title="image017.png" />

 

3.cut           截取字符

 

cut -d分隔符     指定分隔符

cut -f 1,7       显示指定的列

cut -c 1-4    显示指定的字符

 

 

 

1)以:为分隔符,取第1列和第7列。


技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070555570.jpg" title="image019.png" />


2)取出每行的第2到4个字符


技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070555867.jpg" title="image021.png" />

 

综合练习:取出eth0中ipv4的地址

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070556099.jpg" title="image023.png" />

4.sort

sort          第一位数字按大小排序

        -n     纯数字排序

        -u     去重复

        |uniq -c   去除冗余并统计冗余次数

        -t     指定分隔符

        -k     指定列

1)数值排序和按第一位数字按大小排序

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070556351.jpg" title="image025.png" />

2)去重

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070556656.jpg" title="image027.png" />

3)统计重复次数并去重

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070556886.jpg" title="image029.png" />

4)有分隔符的排序

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070557124.jpg" title="image031.png" />

5.uniq

 

sort file |unqi -c   去除冗余并统计冗余次数

       -d  显示冗余行

       -u  显示唯一行

 

6.sed

sed ‘s/源字符/目的字符/g‘   g这一行全部,只替换第一个,s全文的

sed -e ‘策略1‘ -e ‘策略2‘ file    多个策略用-e

sed -i            修改源文件,当文件非常大时,用vim打开的时间很长,用-i直接修改

sed ‘3,5/源字符/目的字符/g‘     3到5行替换,3和5行替换用-e

sed xd            屏蔽指定行

sed xp            复制指定行

sed -n xp         只显示指定行

sed -ne 3p -ne 5p /mnt/passwd  只显示3和5行

 

练习:

passwd原文

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070557370.jpg" title="image033.png" />

1)将每行的第一个sbin替换成westos

sed ‘s/sbin/westos/’ passwd


技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070557711.jpg" title="image035.png" />

 

2)将全文sbin替换成westos

sed ‘s/sbin/westos/g’ passwd

其中s表示每行都替换, g 表示替换这一行全部,

没有g只替换本行第一个字符。


 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070558033.jpg" title="image037.png" />

 

3)将全文的sbin替换成westos,同时将全文的nologin替换成linux,用-e连接


技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070558368.jpg" title="image039.png" />


4)将全文的开头的tab和空格全部删除

方法一:


技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070558701.jpg" title="image041.png" />

方法二:

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070559150.jpg" title="image043.png" />


5)使用sed修改源文件,且修改后的输出只能是源文件


技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070559468.jpg" title="image045.png" />

 

不管-i后面接的是什么文件,sed修改的永远是源文件

 

 

 

 

 

 

修改前,如passwd3所示

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070559830.jpg" title="image047.png" />


6)修改第三行到第五行,用3,5s

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070600196.jpg" title="image049.png" />


7)修改第三行和第五行,用3s –e 5s

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070600543.jpg" title="image051.png" />


8)只修改第5行

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070600825.jpg" title="image053.png" />

9)删除第5行

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070601144.jpg" title="image055.png" />


技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070601472.jpg" title="image057.png" />


10)复制第5行

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070601734.jpg" title="image059.png" />


11)显示3到5行

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070602097.jpg" title="image061.png" />


12)显示3和5行

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070602519.jpg" title="image063.png" />


13)复制第3行和第5行

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070602750.jpg" title="image065.png" />

7.awk

8.tr   转换字符

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070602988.jpg" title="image067.png" />

 

 










综合练习:

写一个脚本:实现从一个文件读取用户名,从另一个文件读取密码,创建用户

 

脚本:

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070603238.jpg" title="image069.png" />

方法一运行结果:

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070603651.jpg" title="image071.png" />

方法二运行结果:

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070604004.jpg" title="image073.png" />

 

 

 

文件系统

 

1 )存在设备   fdisk

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070604358.jpg" title="image075.png" />

2)可识别设备  /proc/partition

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070604716.jpg" title="image077.png" />

3 )可使用设备blkid

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070604935.jpg" title="image079.png" />

 

划分分区后,还未被系统识别时,分区信息在硬盘中的477的64里

mbr:最大2T

gpt:更大

 

管理存储设备

 

1. 分区划分

 fdisk

    m   help

    d   删除分区

    g   gpt

 

    l   列出系统可用的分区类型

    n   新建分区

    q   退出

    t   修改分区功能id

    w   保存更改到分区

    p   显示分区

 

  p   primary        主分区

  e   extended       拓展分区

 

Partition number (1-4, default 1): 1   分区id

First sector (2048-20971519, default 2048): +100分区大小

 

wq  退出并保存,q表示退出不保存

1)创建分区

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070605181.jpg" title="image081.png" />

partprobe  同步分区表

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070605638.jpg" title="image083.png" />

 

2)格式化分区

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070606071.jpg" title="image085.png" />

 

3)开机挂载

vi /etc/fstab

/dev/vdb1 /mnt  ext4 defaults 0      0

                                          不备份,不检测

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070606545.jpg" title="image087.png" />


4)更新挂载文件      mount -a

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070606927.jpg" title="image089.png" />

 

fdisk /dev/vdb1 不对,不能对分区分区

主分区和拓展分区之和的最大个数为15

 

 

ext=32T

xfs=18E

 

格式化的过程是安装文件系统的过程

 

mkfs.xfs   /dev/vdb5  格式化

mount /dev/vdb5 /mnt     挂载

 

查看交换分区

swapon -s

 

交换分区

1)先创建一个分区,再改标签t,w为82(不知道用L查看)


技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070607226.jpg" title="image091.png" />

 

2)格式化交换分区,mkswap/dev/vdb3

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070607540.jpg" title="image093.png" />

 

3 )开机挂载(第二行)

 

/dev/vdb2 swap  swap defaults 0 0

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070607957.jpg" title="image095.png" />

 

4)更新挂载文件

swapon -a

 

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070608221.jpg" title="image097.png" />

 

 

当交换分区满的时候,可以用一个文件当作临时交换分区

 

dd if=/dev/zero of=/mnt/swapfile bs=1M count=1000

mkswap /mnt/swapfile        格式化

swapon -a /mnt/swapfile         激活  

 

man    5   fstab 查看fstab 的信息

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070608486.jpg" title="image099.png" />



磁盘加密

1. 磁盘加密 :

1)fdisk /dev/vdb   

2)cryptsetup luksFortmat /dev/vdb1    加锁

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070608850.jpg" title="image101.png" />

 

3)cryptsetup open /dev/vdb1 linux打开锁,给设备起个名字(任意)

可以在/dev/mapper 查看设备信息

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070609095.jpg" title="image103.png" />

 

4)mkfs.xfs /dev/mapper/linux      格式化设备(用新名字)

往设备里存入秘密信息哦~

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070609447.jpg" title="image105.png" />

5)mount /dev/mapper/linux /mnt   

只有解锁以后设备才能挂载

///////

6)umount /mnt/     

卸载设备前不能关闭linux(锁)   

 

7)cryptsetup close  linux  把设备的钥匙关闭,关闭前要卸载设备

 

 











2. 加密磁盘永久挂载

 

1)vim /etc/crypttab

   

解密后设备管理文件   设备            加密字符存放文件

redhat        /dev/vdb1       /root/lukspsfile

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070609771.jpg" title="image107.png" />

 

2)chmod 600/root/lukspsfile

 

vim /root/lukspsfile

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070609950.jpg" title="image109.png" />

 

3)cryptsetup luckAddKey /dev/vdb1/root/luksfsfile关联密码文件和分区

vim /etc/fstab

/dev/mapper/redhat     /mnt    xfs     defaults        0 0

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070610174.jpg" title="image111.png" />

4) reboot

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070610542.jpg" title="image113.png" />

3.加密清除

vim /etc/fstable

>/etc/crypttab

rm -rf /root/lukspsfile

umount /mnt

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070611127.jpg" title="image115.png" />

 

cryptsetup close redhat         关闭锁

 

mkfs.xfs /dev/vdb1

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070611436.jpg" title="image117.png" />

磁盘阵列

1:两块同时读两个设备,写一个设备

0:两块同时读一个设备,读比较快

5:0+1

 

 

1)fdisk /dev/vdb    (fd:raid)

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070611787.jpg" title="image119.png" />

2)mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 /dev/sdb{1..3}

3)mkfs.xfs /dev/md0

4)mount /dev/md0

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070612085.jpg" title="image121.png" />

 

 

监控命令:watch -n cat /proc/mastat

 

mdadm  -f/dev/md0 /dev/vdb1       手动挂掉

        -D /dev/md0          查看详细信息

        -r /dev/md0 /dev/vdb1       remove

        -a /dev/md0 /dev/vdb1       添加

        -S /dev/md0   当只有一个分区的时候,不能再用-r删除,用-s停止设备,停止前要卸载

 

1)-f

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070612516.jpg" title="image123.png" />

 

2)–r

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070612908.jpg" title="image125.png" />

 

3)-a

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070613170.jpg" title="image127.png" />

 

4)-D

 


 

5)-S      --stop

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070613477.jpg" title="image131.png" />

磁盘配额



1. 磁盘分区,更新分区表,格式化

 

2. 设定配额

mkdir /pub

mount -o usrquota /dev/vdb1 /pub

chmod 1777 /pub 先挂载再更改权限

 

quotaon -uv /dev/vdb1    查看是否设置用户配额,u:user,v:详细信息

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070613877.jpg" title="image133.png" />

 

edquota -u student   给指定用户配额

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070614149.jpg" title="image135.png" />

 

检验:

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070614423.jpg" title="image137.png" />

 

 

du –sh /pub/file;quota;quotastat;

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070614788.jpg" title="image139.png" />

 

3.开机挂载

vim /etc/fstable

/dev/vdb1  /mnt   xfsdefaults,usrquota0 0


技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070615079.jpg" title="image141.png" />

 

 

电脑挂了的话,输入密码,vim /etc/fstable,再reboot

 

磁盘配额 针对于分区:只对分区生效,不是针对用户,因为并没有限制用户在别的分区建立文件大小和数量!!!

 

超出配额的文件,在7天之内会被删

 

 

 







LVM:

 

PE:一滴果汁       physics 

PV:一个橘子      physicsvolume

VG:一大杯果汁     volumegroup

|||

LVM:倒一小杯果汁    logicalvolume managesPE的整数倍

LVM 建立

1.划分物理分区并把分区id修改为8e

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070615347.jpg" title="image143.png" />

pvs|pvdisplay

gvs|vgdisplay     查看表

lvs|lcdisplay

 

pvcreate /dev/vdb1       创建逻辑卷

vgcreate  westos/dev/vdb1  创建逻辑组,westos

lvcreate  -L100M -n lv0 westos创建逻辑卷管理,-L 大小,-n名称,westos属于哪个逻辑组

 

mkfs.xfs /dev/westos/lv0格式化

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070615619.jpg" height="297" width="371" />

mount /dev/westos/lv0 /mnt

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070615940.jpg" title="image147.png" />

 

拓展分区

 

lvextend -L 200M /dev/westos/lv0 拉升逻辑卷

xfs_growfs /dev/westos/lv0  拉升文件系统

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070616196.jpg" title="image149.png" />

pvcreate /dev/vdb2       创建一个新的逻辑卷

vgextend westos /dev/vdb2   把新的逻辑卷添加到组中

lvextend -L 1500M/dev/westos/lv0  拉升逻辑卷

 

 

 

监控命令

watch -n 1 ‘echo === pvinfo ===;pvs;echo === vginfo===;vgs;echo === lvinfo ===;lvs;echo mnt;df -h /mnt‘

 

当拉升分区非常大时,把新分区加入逻辑组

1)lvextend -L 1500M /dev/westos/lv0   拉升逻辑卷(报错)

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070616539.jpg" title="image151.png" />

 

2)vgextend westos /dev/vdb2    把新的逻辑卷添加到组中


技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070616875.jpg" title="image153.png" />

3)lvextend -L 1500M /dev/westos/lv0   拉升逻辑卷

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070617721.jpg" title="image155.png" />

4)拉升操作系统

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070618013.jpg" title="image157.png" />

 

设备无限扩大,文件系统会受到限制

最大增加到18EB,文件系统支持最大的一个分区为18EB

 

 

缩减 LVM

xfs文件系统不能缩减ext4文件系统可以缩减

 

先执行mkfs.ext4 /dev/westos/lv0

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070618274.jpg" title="image159.png" />

     

umount /mnt/

e2fsck -f /dev/westos/lv0       先检测能不能缩

resize2fs /dev/westos/lv0 200M     缩减文件系统大小

lvreduce -L 200M /dev/westos/lv0   缩减lvm大小

pvmove /dev/vdb1 /dev/vdb2      将vdb2的内容传到vdb1上

vgreduce westos /dev/vdb1       将/dev/vdb1从逻辑组中westos删除

pvremove /dev/vdb1         

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070618819.jpg" title="image161.png" />


 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070619126.jpg" title="image163.png" />

遇到的问题

 

1)缩减时,本应该先缩减文件系统,再缩减逻辑卷,但是因为失误,先缩减了逻辑卷,导致文件系统不能被挂载。

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070619491.jpg" title="image165.png" />

 

    解决方法:先拉升逻辑卷,再拉升文件系统,再按照正确顺序缩减

lvreduce -L 100M /dev/westos/lv0

umount /mnt

mount /dev/westos/lv0 /mnt  报错

 

lvreduce -L 100M /dev/westos/lv0

resize2fs  /dev/westos/lv0  可以不加大小

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070619865.jpg" title="image167.png" />

mount /dev/westos/lv0 /mnt  成功

 

 

 

之后缩减时注意:先缩减文件系统,再缩减逻辑卷

 

2)操作中误删了正在使用的分区

 

vgreduce --removemissing westos    把未知的错误的设备清除

 

 

 

设备的快照 snapshot

 

1. 做一个快照

 

lvcreate -L 10M -n lv0-backup -s /dev/westos/lv0

10M:修改内容存储大小

-n:快照的名字

-s:母盘

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070620137.jpg" title="image169.png" />

 

2. 快照的挂载

mount /dev/westos/lv0-backup /mnt

挂载上的快照,读取的母盘内容,修改的部分会存储在快照上

 

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070620389.jpg" title="image171.png" />

 

 

误删快照,重新照一张就好

///

 

3. 快照的删除

lvremove /dev/westos/lv0-backup

 

 

 

 

lvm 的删除

 

lvmremove /dev/westos/lv0   删除lvm(小杯杯)

vgremove westos          删除volumegroup(大桶)

fdisk /dev/vdb  d   2      直接删除硬盘(橘子)

   

 

 

 

 

 

   

 

 







 

 

 

 

 

 


本文出自 “12049878” 博客,谢绝转载!

原文:http://12059878.blog.51cto.com/12049878/1871767


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐