linux学习笔记6

shell 脚本命令

1.diff

diff   file file1linux

    -c  显示周围的行shell

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

    -r  比较两个目录中文件的不一样app

wKiom1glWRnjX2C-AABn1eRFQNI194.png

patch  -b  备份原文件ide

2.grep

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

   

    -i         忽略大小写spa

    -n         显示关键字所在行操作系统

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

    -v         反向过滤ip

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

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

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

    关键字$           以关键字结尾

 

 

1)不区分大小写

wKioL1glWRvD5qZaAAC7Wz9kcUQ952.png

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

wKiom1glWRzQf6nxAABcNDAVuR0231.png

3)以root开头或以root结尾

方法一:

wKioL1glWR2Cu7pjAABFQUmRDQA172.png

方法二:

wKiom1glWR7Rg9SjAABJc_oPPJI732.png

 

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

wKioL1glWR-Q9OP9AABJSDGO598053.png

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

wKioL1glWSChwskwAAB5g4gDKhI949.png

6)不包含root的行

wKiom1glWSGQvbhNAADu-66dqmU285.png

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

wKioL1glWSKj-eAtAACFyonJmLc028.png

 

3.cut           截取字符

 

cut -d分隔符     指定分隔符

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

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

 

 

 

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


wKiom1glWSXQ7JRBAACeyeAf5Xk215.png


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


wKiom1glWSfznHerAAA_PCjdxx8376.png

 

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

wKioL1glWSri6NF5AABc7POktdo079.png

4.sort

sort          第一位数字按大小排序

        -n     纯数字排序

        -u     去重复

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

        -t     指定分隔符

        -k     指定列

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

wKioL1glWSyB-Vu3AABZrJO2tNY885.png

2)去重

wKiom1glWSyQSPTvAAAlR8V3wsQ552.png

3)统计重复次数并去重

wKioL1glWS3j0dj9AAAn7jzbni0146.png

4)有分隔符的排序

wKiom1glWS6QrctKAABsdynX8ng425.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原文

wKioL1glWTCAlIgHAADqxBOj668602.png

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

sed ‘s/sbin/westos/’ passwd


wKiom1glWTGB1eHxAAEEGJY82Uw310.png

 

2)将全文sbin替换成westos

sed ‘s/sbin/westos/g’ passwd

其中s表示每行都替换,g表示替换这一行所有,

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


 

wKiom1glWTLij1sCAAEHMgjw5kw162.png

 

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


wKioL1glWTSA71OwAAEdkW1F12g923.png


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

方法一:


wKioL1glWTazd1QRAAEGPx38-fU168.png

方法二:

wKiom1glWTji2OWbAAEBLtWw3ik395.png


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


wKioL1glWTrh4hWbAAH0PIlI9Gw873.png

 

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

 

 

 

 

 

 

修改前,如passwd3所示

wKiom1glWTvjji5NAAEdeq1QZhc923.png


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

wKioL1glWT2hJqFpAAD_rwIdN5o492.png


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

wKiom1glWT7wf0HHAACfHu5xzjA331.png


8)只修改第5行

wKiom1glWUCzDo_IAAD5L0QHPQU130.png

9)删除第5行

wKioL1glWULDNps3AAC9iDZVJRg914.png


wKiom1glWUPgvvSEAAB01kzj32M241.png


10)复制第5行

wKioL1glWUSizchpAACFQ5XHxqM368.png


11)显示3到5行

wKiom1glWUXCRn5wAABTefBOX0k348.png


12)显示3和5行

wKioL1glWUbj19vNAABD1NQi5ms859.png


13)复制第3行和第5行

wKiom1glXNvhSqmLAACejtTJwQ4252.png

7.awk

8.tr   转换字符

 

wKiom1glXNyTRaabAABcOBpjlBo321.png

综合练习:

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

 

脚本:

wKioL1glXN2Suy73AACeEEfgu3I720.png

方法一运行结果:

wKiom1glXN6CjKtiAAFH70twa80431.png

方法二运行结果:

wKioL1glXODCQc2YAAG_pRJwjus837.png

 

 

 

文件系统

 

1)存在设备   fdisk

wKiom1glXOGTylNJAAE3l1VXrf0634.png

2)可识别设备  /proc/partition

wKioL1glXOLQWLp0AABKMBP8A_o069.png

3)可以使用设备blkid

wKioL1glXOOSwntZAABD8rdXbqc745.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)建立分区

 

wKiom1glXOSz9SChAAGLyP1vgPY719.png

partprobe  同步分区表

 

wKiom1glXOWTZ0MuAABzXp6lJJU339.png

 

2)格式化分区

wKioL1glXOaBS76HAAFlQmD7Lzw544.png

 

3)开机挂载

vi /etc/fstab

/dev/vdb1 /mnt  ext4 defaults 0      0

                                          不备份,不检测

 

wKioL1glXO_TgyU_AAC0x4WzavI572.png


4)更新挂载文件      mount -a

 

wKiom1glXPLD3tWPAAFd0y2_F0w384.png

 

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

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

 

 

ext=32T

xfs=18E

 

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

 

mkfs.xfs   /dev/vdb5  格式化

mount /dev/vdb5 /mnt     挂载

 

查看交换分区

swapon -s

 

交换分区

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


wKiom1glXPWRVDsrAAGMyP9SVCE618.png

 

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

 

wKioL1glXPezXKFjAAEcCkIEhAQ800.png

 

3)开机挂载(第二行)

 

/dev/vdb2 swap  swap defaults 0 0

 

wKioL1glXPnzB2ozAABjHsjn5VM281.png

 

4)更新挂载文件

swapon -a

 

 

wKiom1glXPnQ_0k4AAB-0D8SL9I836.png

 

 

当交换分区满的时候,能够用一个文件看成临时交换分区

 

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

mkswap /mnt/swapfile        格式化

swapon -a /mnt/swapfile         激活  

 

man    5   fstab 查看fstab 的信息

 

wKiom1glXPvxsyq1AAGP8yKxNwQ437.png

磁盘加密

1.磁盘加密:

1)fdisk /dev/vdb   

2)cryptsetup luksFortmat /dev/vdb1    加锁

 

wKioL1glXPywsSqPAACWrZu5sn8924.png

 

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

能够在/dev/mapper 查看设备信息

 

wKioL1glXP3z0ShXAAB3fROHSZg579.png

 

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

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

 

wKiom1glXP7jCuzEAAEemH3tcIo883.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

 

wKiom1glXP-RmKwoAAAVlGDP7sA075.png

 

2)chmod 600/root/lukspsfile

 

vim /root/lukspsfile

wKioL1glXP_yI_4zAAAJH0ZyJ1M036.png

 



3)关联密码文件和分区


cryptsetup luckAddKey     /dev/vdb1        /root/luksfsfile



wKiom1guq-CjINC3AAAtHFA-i3c159.png


4)vim /etc/fstab

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

 

wKioL1glXQDjJsu_AABLP7Is6Ew080.png

5) reboot

 

wKiom1glXQGAS8wbAADPEtsb4Lk083.png

3.加密清除

vim /etc/fstable

>/etc/crypttab

rm -rf /root/lukspsfile

umount /mnt

 

wKiom1glXQKDslUvAABYh6LzxA0144.png

 

cryptsetup close redhat         关闭锁

 

mkfs.xfs /dev/vdb1

wKioL1glXQOjUMbDAAFCLZNaMKQ577.png



磁盘阵列

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

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

5:0+1

 

 

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

 

wKiom1glXQSDNQ5WAAFfA6IhAQY425.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

 

wKioL1glXQbjJeclAAHwmRLTEus686.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

wKiom1glXQiTrGCqAAEHOHrna1A158.png

 

2)–r

wKioL1glXQmzFEGpAADZv4dUzQo586.png

 

3)-a

 

wKiom1glXQqDBQPKAAD2cPQr7Dg249.png

 

4)-D

 


 

5)-S      --stop

 

wKiom1glYFfBFgKNAAGVgJGj1pw579.png

磁盘配额




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

 

2.设定配额

mkdir /pub

mount -o usrquota /dev/vdb1 /pub

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

 

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

 

wKioL1glYFiAu-IbAAFnGIb9Zpg445.png

 

edquota -u student   给指定用户配额

 

wKioL1glYFmRPgpbAABEay0P2eM950.png

 

检验:

wKiom1glYFqzvyd_AADofjqwE9U752.png

 

 

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

wKioL1glYFygI-7lAAEo7-cgGeM540.png

 

3.开机挂载

vim /etc/fstable

/dev/vdb1  /mnt   xfsdefaults,usrquota0 0



wKioL1glYF6gRAN3AAErK4XeGQ0238.png

 

 

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

 

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

 

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

 

 

LVM:

 

PE:一滴果汁       physics 

PV:一个橘子      physicsvolume

VG:一大杯果汁     volumegroup

|||

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

LVM创建

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

wKiom1glYGCB_i26AAEqda9ZUHw232.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格式化

 

wKioL1glcaGTevnnAAHX52K-FJo396.png



mount /dev/westos/lv0 /mnt


 

wKiom1glYGTTSrKDAADxNEwJ24A955.png

 

拓展分区

 

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

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

 

wKiom1glYGXCTcq0AAECzoDOafU523.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   拉升逻辑卷(报错)

 

wKioL1glYGaBk3HSAAEVQQXpYFs005.png

 

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


wKiom1glYGjjTAB4AAGqWVBrahg181.png


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


wKiom1glYGnxGMhVAAHhuOuzn1E893.png


4)拉升操做系统


wKioL1glYGuy5rEaAAFEUC13Y34265.png


 

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

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

 

 

缩减LVM

xfs文件系统不能缩减ext4文件系统能够缩减

 

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

 

wKioL1glYGywsUJrAAEpwn-wx24508.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         

 



wKiom1glYG7yZyYiAAJZIyGrIas772.png



 

wKiom1glYG-gqPAsAAJdSHMYNlk955.png

遇到的问题

 

1)缩减时,本应该先缩减文件系统,再缩减逻辑卷,可是由于失误,先缩减了逻辑卷,致使文件系统不能被挂载。

 

wKioL1glYHKCZZE1AAF82x6SbME683.png

 


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

lvreduce -L 100M /dev/westos/lv0

umount /mnt

mount /dev/westos/lv0 /mnt  报错

 

lvreduce -L 100M /dev/westos/lv0

resize2fs  /dev/westos/lv0  能够不加大小

 

wKiom1glYHPSe1okAAEfCZJCG-k246.png

mount /dev/westos/lv0 /mnt  成功

 

 

 

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

 

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

 

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

 


 

wKioL1gsXx7zEJ5tAAE3R_VmeTs413.png

 

删除以后变乱码。

 

wKiom1gsXx-RnDCvAAGCib__sOw984.png

 

执行vgreduce --removemissing westos

 

wKiom1gsXyHSBHRvAAC23CrdMOE482.png

恢复正常!!!

 

wKioL1gsXyDSunE7AADcUPDPp7U255.png

 



设备的快照snapshot

 

1.作一个快照

 

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

10M:修改内容存储大小

-n:快照的名字

-s:母盘

 

wKioL1glYHSw5NUbAACVu3fgYJU123.png

 

2.快照的挂载

mount /dev/westos/lv0-backup /mnt

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

 

wKiom1glYHWRvmDoAACkzT8urfs106.png

 

 

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

///

 

3.快照的删除

lvremove /dev/westos/lv0-backup

 

 

 

lvm的删除

 

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

vgremove westos          删除volumegroup(大桶)

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

   

wKioL1glYHbApFThAADTZOtVsu0725.png

相关文章
相关标签/搜索