linux學習筆記6

shell 腳本命令

1.diff

diff   file file1

    -c  顯示周圍的行

    -u  按照一格式統一輸出生成補丁

    -r  比較兩個目錄中文件的不同

wKiom1glWRnjX2C-AABn1eRFQNI194.png

patch  -b  備份原文件

2.grep

grep   關鍵字符   文件|目錄  在文件或目錄中查找含有關鍵字的行

   

    -i         忽略大小寫

    -n         顯示關鍵字所在行

    -c         顯示過濾結果個數 wc-l

    -v         反向過濾

    -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

 

 

 

 

 

   

 

 













 

 

 

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章