首页 > 代码库 > linux学习笔记6

linux学习笔记6



































shell 脚本命令

1.diff

diff   file file1

    -c  显示周围的行

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

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

技术分享

patch  -b  备份原文件

2.grep

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

   

    -i         忽略大小写

    -n         显示关键字所在行

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

    -v         反向过滤

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

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

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

    关键字$           以关键字结尾

 

 

1)不区分大小写

技术分享

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

技术分享

3)以root开头或以root结尾

方法一:

技术分享

方法二:

技术分享

 

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

技术分享

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

技术分享

6)不包含root的行

技术分享

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

技术分享

 

3.cut           截取字符

 

cut -d分隔符     指定分隔符

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

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

 

 

 

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


技术分享


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


技术分享

 

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

技术分享

4.sort

sort          第一位数字按大小排序

        -n     纯数字排序

        -u     去重复

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

        -t     指定分隔符

        -k     指定列

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

技术分享

2)去重

技术分享

3)统计重复次数并去重

技术分享

4)有分隔符的排序

技术分享

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

技术分享

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

sed ‘s/sbin/westos/’ passwd


技术分享

 

2)将全文sbin替换成westos

sed ‘s/sbin/westos/g’ passwd

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

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


 

技术分享

 

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


技术分享


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

方法一:


技术分享

方法二:

技术分享


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


技术分享

 

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

 

 

 

 

 

 

修改前,如passwd3所示

技术分享


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

技术分享


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

技术分享


8)只修改第5行

技术分享

9)删除第5行

技术分享


技术分享


10)复制第5行

技术分享


11)显示3到5行

技术分享


12)显示3和5行

技术分享


13)复制第3行和第5行

技术分享

7.awk

8.tr   转换字符

 

技术分享

 

 



















综合练习:

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

 

脚本:

技术分享

方法一运行结果:

技术分享

方法二运行结果:

技术分享

 

 

 

文件系统

 

1)存在设备   fdisk

技术分享

2)可识别设备  /proc/partition

技术分享

3)可使用设备blkid

技术分享

 

划分分区后,还未被系统识别时,分区信息在硬盘中的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)创建分区

 

技术分享

partprobe  同步分区表

 

技术分享

 

2)格式化分区

技术分享

 

3)开机挂载

vi /etc/fstab

/dev/vdb1 /mnt  ext4 defaults 0      0

                                          不备份,不检测

 

技术分享


4)更新挂载文件      mount -a

 

技术分享

 

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

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

 

 

ext=32T

xfs=18E

 

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

 

mkfs.xfs   /dev/vdb5  格式化

mount /dev/vdb5 /mnt     挂载

 

查看交换分区

swapon -s

 

交换分区

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


技术分享

 

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

 

技术分享

 

3)开机挂载(第二行)

 

/dev/vdb2 swap  swap defaults 0 0

 

技术分享

 

4)更新挂载文件

swapon -a

 

 

技术分享

 

 

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

 

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

mkswap /mnt/swapfile        格式化

swapon -a /mnt/swapfile         激活  

 

man    5   fstab 查看fstab 的信息

 

技术分享



磁盘加密

1.磁盘加密:

1)fdisk /dev/vdb   

2)cryptsetup luksFortmat /dev/vdb1    加锁

 

技术分享

 

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

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

 

技术分享

 

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

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

 

技术分享

5)mount /dev/mapper/linux /mnt   

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

///////

6)umount /mnt/     

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

 

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

 

 





















2.加密磁盘永久挂载

 

1)vim /etc/crypttab

   

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

redhat        /dev/vdb1       /root/lukspsfile

 

技术分享

 

2)chmod 600/root/lukspsfile

 

vim /root/lukspsfile

技术分享

 

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

vim /etc/fstab

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

 

技术分享

4) reboot

 

技术分享

3.加密清除

vim /etc/fstable

>/etc/crypttab

rm -rf /root/lukspsfile

umount /mnt

 

技术分享

 

cryptsetup close redhat         关闭锁

 

mkfs.xfs /dev/vdb1

技术分享

磁盘阵列

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

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

5:0+1

 

 

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

 

技术分享

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

 

技术分享

 

 

监控命令: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

技术分享

 

2)–r

技术分享

 

3)-a

 

技术分享

 

4)-D

 


 

5)-S      --stop

 

技术分享

磁盘配额




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

 

2.设定配额

mkdir /pub

mount -o usrquota /dev/vdb1 /pub

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

 

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

 

技术分享

 

edquota -u student   给指定用户配额

 

技术分享

 

检验:

技术分享

 

 

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

技术分享

 

3.开机挂载

vim /etc/fstable

/dev/vdb1  /mnt   xfsdefaults,usrquota0 0



技术分享

 

 

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

 

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

 

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

 

 

 












LVM:

 

PE:一滴果汁       physics 

PV:一个橘子      physicsvolume

VG:一大杯果汁     volumegroup

|||

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

LVM建立

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

技术分享

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

 

技术分享

mount /dev/westos/lv0 /mnt

 

技术分享

 

拓展分区

 

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

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

 

技术分享

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

 

技术分享

 

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


技术分享

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

技术分享

4)拉升操作系统

技术分享

 

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

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

 

 

缩减LVM

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

 

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

 

技术分享

     

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         

 

技术分享



 

技术分享

遇到的问题

 

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

 

技术分享

 

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

lvreduce -L 100M /dev/westos/lv0

umount /mnt

mount /dev/westos/lv0 /mnt  报错

 

lvreduce -L 100M /dev/westos/lv0

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

 

技术分享

mount /dev/westos/lv0 /mnt  成功

 

 

 

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

 

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

 

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

 

 

 

设备的快照snapshot

 

1.做一个快照

 

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

10M:修改内容存储大小

-n:快照的名字

-s:母盘

 

技术分享

 

2.快照的挂载

mount /dev/westos/lv0-backup /mnt

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

 

技术分享

 

 

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

///

 

3.快照的删除

lvremove /dev/westos/lv0-backup

 

 

 

 

lvm的删除

 

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

vgremove westos          删除volumegroup(大桶)

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

   

技术分享

 

 

 

 

 

   

 

 













 

 

 

 

 

 


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

linux学习笔记6