這些Linux運(yùn)維實(shí)用技巧,為什么我給滿分?
需求
在運(yùn)維工作中隨著我們積累的經(jīng)驗(yàn)不斷增多,不知你是否遇到過以下幾個(gè)場景:
Linux 如何快速刪除大量文件? Vsphere 如何在不重啟的情況下識(shí)別新添加的 iscsi 硬盤? Linux中 rm 命令如何做到防誤刪? 不同 Linux 服務(wù)器之間如何實(shí)現(xiàn)快速掛載? Linux 中如何將用戶快速添加到附屬組? 細(xì)心的人往往會(huì)通過自己特有的方式來快速處理,不禁讓人拍手叫絕。
下面我就來具體介紹下我的處理方式吧。
1、Linux如何快速刪除大量文件?
rm 刪除過程耗時(shí)很長,效率低下;
rm 刪除完畢后,文件不存在但是磁盤空間仍未釋放;
其實(shí)以上問題都和 rm 命令有關(guān),因?yàn)?rm 刪除內(nèi)容時(shí),是將目錄的每一個(gè)條目逐個(gè)刪除(unlink),而且需要循環(huán)重復(fù)遍歷很多次;雖然 unlink 解除,但是進(jìn)程仍可以讀取已刪除的問題件,導(dǎo)致磁盤不釋放。
在此我們可以使用rsync
命令來代替 rm。rsync 刪除內(nèi)容時(shí),通過建立好新的空目錄替換掉老目錄,不需要進(jìn)行大量的遍歷操作,因此效率會(huì)高很多。
rsync 提供了一些跟刪除相關(guān)的參數(shù)如下:
rsync --help | grep delete --del an alias for --delete-during --deletedelete files that don't exist on the sending side --delete-before receiver deletes before transfer (default) --delete-during receiver deletes during transfer, not before --delete-afterreceiver deletes after transfer, not before --delete-excluded also delete excluded files on the receiving side --ignore-errors delete even if there are I/O errors --max-delete=NUMdon't delete more than NUM files
快速刪除目錄
1. 建立一個(gè)空目錄
mkdir -p /del_tmp
2. 需要清空的目標(biāo)目錄
/del_dest
3. 如果目標(biāo)目錄下有大量的小文件,清空目錄下文件
rsync --delete-before -a -H -v --progress --stats ./del_tmp/./del_dest/
選項(xiàng)說明:
–delete-before 接收者在傳輸之前進(jìn)行刪除操作
–progress 在傳輸時(shí)顯示傳輸過程
-a 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性
-H 保持硬連接的文件
-v 詳細(xì)輸出模式
--stats 給出某些文件的傳輸狀態(tài)
快速刪除文件
注意:當(dāng)SRC和DEST文件性質(zhì)不一致時(shí)將會(huì)報(bào)錯(cuò);當(dāng)SRC和DEST性質(zhì)都為文件【f】時(shí),意思是清空文件內(nèi)容而不是刪除文件;當(dāng)SRC和DEST性質(zhì)都為目錄【d】時(shí),意思是刪除該目錄下的所有文件,使其變?yōu)榭漳夸洠?/section>
2、Vsphere 如何在不重啟的情況下識(shí)別新添加的iscsi硬盤?
如果新添加的硬盤為“Direct-Access”類型,因此我們需要執(zhí)行命令,將Id+1后將是新磁盤的Id號(hào):echo'scsi add-single-device 2 0 1 0' > /proc/scsi/scsi
其中:
HOST,主機(jī)適配器標(biāo)識(shí),第一個(gè)適配器為0,在此新增加硬盤的適配器為2;
Channel,主機(jī)適配器上的SCSI通道,第一個(gè)通道為00,新增加磁盤的SCSI通道仍為00;
ID,設(shè)備的SCSI標(biāo)識(shí) ,即硬盤標(biāo)識(shí)從00開始,新增加磁盤的標(biāo)識(shí)為01;
增加硬盤后的SCSI設(shè)備參數(shù)如圖
第二種方法:
# 刷新SCSI,需要根據(jù)hosts數(shù)量確認(rèn)刷新次數(shù)。# 如果系統(tǒng)有3個(gè)scsi host,則需要刷新3次echo "- - -" > /sys/class/scsi_host/host0/scanecho "- - -" > /sys/class/scsi_host/host1/scanecho "- - -" > /sys/class/scsi_host/host2/scan
3、Linux中rm命令如何做到防誤刪?
:
在bash中是一個(gè)內(nèi)建命令,而不單純是一個(gè)分隔符,它的主要作用是空命令、參數(shù)擴(kuò)展、重定向、注釋等。我們可以使用其參數(shù)擴(kuò)展特性實(shí)現(xiàn)rm的防誤刪功能。
格式:${parameter:-test} 功能:如果parameter沒有設(shè)置或者為空,替換為test;否則替換為parameter的值。命令:rm -rf ${dest:-test}用法:當(dāng)變量dest為空時(shí),刪除test;當(dāng)變量dest不為空時(shí),刪除test用例:rm -rf /$dest。當(dāng)變量dest沒有設(shè)置或?yàn)榭諘r(shí),則命令變成rm -rf /,這將誤刪系統(tǒng)根目錄,導(dǎo)致系統(tǒng)崩潰。改進(jìn):rm -rf /${dest:-test},當(dāng)變量dest沒有設(shè)置或?yàn)榭諘r(shí),會(huì)使用test代替,則命令變成rm -rf /test,刪除此目錄不會(huì)產(chǎn)生任何影響。
4、不同Linux服務(wù)器之間如何實(shí)現(xiàn)快速掛載?
# 1.安裝 SSHFS
yum install sshfs
# 2.創(chuàng)建 SSHFS 掛載目錄
mkdir /mnt/data
# 3.使用 SSHFS 掛載遠(yuǎn)程的文件系統(tǒng)
sshfs test@x.x.x.x:/home/test/ /mnt/data
如果SSH有密鑰授權(quán),我們也可以使用公鑰實(shí)現(xiàn)掛載
sshfs -o IdentityFile=~/.ssh/id_rsa test@x.x.x.x:/home/test/ /mnt/data
5.Linux中如何將用戶快速添加到附屬組?
對(duì)于 Linux 操作系統(tǒng),我們一般使用 usermod 命令來調(diào)整用戶分組,但是在使用過程中是有痛點(diǎn)的。
# 1.新增3個(gè)用戶
# useradd test1
uid=508(test1) gid=508(test1) groups=508(test1)
# useradd test2
uid=509(test2) gid=509(test2) groups=509(test2)
# useradd test3
uid=510(test3) gid=510(test3) groups=510(test3)
# 2.調(diào)整test1 附加組
# usermod -G test2 test1
uid=508(test1) gid=508(test1) groups=508(test1),509(test2)
# usermod -G test3 test1
uid=508(test1) gid=508(test1) groups=508(test1),510(test3)
# usermod -G test2,test3 test1
uid=508(test1) gid=508(test1) groups=508(test1),509(test2),510(test3)
通過以上命令,我們可以看到以下痛點(diǎn):
每次 usermod 附加組調(diào)整,會(huì)覆蓋原來的分組
usermod 調(diào)整多個(gè)分組時(shí),必須將所有分組一并添加,否則會(huì)覆蓋原來分組
# 1.將test1添加到test2分組# gpasswd -a test1 test2uid=508(test1) gid=508(test1) groups=508(test1),509(test2)# 2.將test1添加到test3分組# gpasswd -a test1 test3uid=508(test1) gid=508(test1) groups=508(test1),509(test2),510(test3)我們一般不會(huì)遇到用戶同時(shí)隸屬于多個(gè)分組的情況,但是在做文件共享,因權(quán)限分離需求才會(huì)用到,此時(shí)我們通過gpasswd命令會(huì)方便很多。