国产在线观看精品免费,亚洲日本VA久久一区二区,香蕉久久99综合一区二区三区,久久精品99国产精品蜜桃小说

這些Linux運維實(shí)用技巧,為什么我給滿(mǎn)分?

2024-07-03 09:03:42 Jinyu

需求

在運維工作中隨著(zhù)我們積累的經(jīng)驗不斷增多,不知你是否遇到過(guò)以下幾個(gè)場(chǎng)景:

  • Linux 如何快速刪除大量文件?
  • Vsphere 如何在不重啟的情況下識別新添加的 iscsi 硬盤(pán)?
  • Linux中 rm 命令如何做到防誤刪?
  • 不同 Linux 服務(wù)器之間如何實(shí)現快速掛載?
  • Linux 中如何將用戶(hù)快速添加到附屬組?
  • 細心的人往往會(huì )通過(guò)自己特有的方式來(lái)快速處理,不禁讓人拍手叫絕。

下面我就來(lái)具體介紹下我的處理方式吧。

1、Linux如何快速刪除大量文件?

在 Linux 中對于刪除大量小文件或刪除大文件,我們一般會(huì )通過(guò)rm命令直接刪除,這時(shí)你就很有可能會(huì )遇到以下問(wèn)題:

  • rm 刪除過(guò)程耗時(shí)很長(cháng),效率低下;

  • rm 刪除完畢后,文件不存在但是磁盤(pán)空間仍未釋放;

其實(shí)以上問(wèn)題都和 rm 命令有關(guān),因為 rm 刪除內容時(shí),是將目錄的每一個(gè)條目逐個(gè)刪除(unlink),而且需要循環(huán)重復遍歷很多次;雖然 unlink 解除,但是進(jìn)程仍可以讀取已刪除的問(wèn)題件,導致磁盤(pán)不釋放。

在此我們可以使用rsync命令來(lái)代替 rm。rsync 刪除內容時(shí),通過(guò)建立好新的空目錄替換掉老目錄,不需要進(jìn)行大量的遍歷操作,因此效率會(huì )高很多。

rsync 提供了一些跟刪除相關(guān)的參數如下:










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_tmp2. 需要清空的目標目錄/del_dest3. 如果目標目錄下有大量的小文件,清空目錄下文件rsync --delete-before -a -H -v --progress --stats ./del_tmp/./del_dest/
選項說(shuō)明:–delete-before 接收者在傳輸之前進(jìn)行刪除操作–progress 在傳輸時(shí)顯示傳輸過(guò)程-a 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性-H 保持硬連接的文件-v 詳細輸出模式--stats 給出某些文件的傳輸狀態(tài)

快速刪除文件

注意:當SRC和DEST文件性質(zhì)不一致時(shí)將會(huì )報錯;當SRC和DEST性質(zhì)都為文件【f】時(shí),意思是清空文件內容而不是刪除文件;當SRC和DEST性質(zhì)都為目錄【d】時(shí),意思是刪除該目錄下的所有文件,使其變?yōu)榭漳夸洠?/section>

2、Vsphere 如何在不重啟的情況下識別新添加的iscsi硬盤(pán)?

Vsphere虛擬機新添加硬盤(pán)進(jìn)行LVM擴容,此時(shí)需要重啟刷新文件系統,否則無(wú)法識別新添加的硬盤(pán)。重啟服務(wù)器這對于生產(chǎn)環(huán)境來(lái)說(shuō)是不允許的,那么有什么方法能夠實(shí)現在線(xiàn)刷新文件系統呢?
在此有兩種方法:
第一種方法
沒(méi)有新增硬盤(pán)前的SCSI設備參數如圖

圖片

如果新添加的硬盤(pán)為“Direct-Access”類(lèi)型,因此我們需要執行命令,將Id+1后將是新磁盤(pán)的Id號:echo'scsi add-single-device 2 0 1 0' > /proc/scsi/scsi

其中:

  • HOST,主機適配器標識,第一個(gè)適配器為0,在此新增加硬盤(pán)的適配器為2;

  • Channel,主機適配器上的SCSI通道,第一個(gè)通道為00,新增加磁盤(pán)的SCSI通道仍為00;

  • ID,設備的SCSI標識 ,即硬盤(pán)標識從00開(kāi)始,新增加磁盤(pán)的標識為01;

增加硬盤(pán)后的SCSI設備參數如圖

圖片

第二種方法:

# 刷新SCSI,需要根據hosts數量確認刷新次數。# 如果系統有3個(gè)scsi host,則需要刷新3次echo "- - -" > /sys/class/scsi_host/host0/scanecho "- - -" > /sys/class/scsi_host/host1/scanecho "- - -" > /sys/class/scsi_host/host2/scan

以上兩種方式都可以實(shí)現在不重啟服務(wù)器的情況下識別到新添加的硬盤(pán),請根據實(shí)際情況進(jìn)行選擇。

3、Linux中rm命令如何做到防誤刪?

Linux系統中冒號:在bash中是一個(gè)內建命令,而不單純是一個(gè)分隔符,它的主要作用是空命令、參數擴展、重定向、注釋等。我們可以使用其參數擴展特性實(shí)現rm的防誤刪功能。

格式:${parameter:-test} 功能:如果parameter沒(méi)有設置或者為空,替換為test;否則替換為parameter的值。命令:rm -rf ${dest:-test}用法:當變量dest為空時(shí),刪除test;當變量dest不為空時(shí),刪除test用例:rm -rf /$dest。當變量dest沒(méi)有設置或為空時(shí),則命令變成rm -rf /,這將誤刪系統根目錄,導致系統崩潰。改進(jìn):rm -rf /${dest:-test},當變量dest沒(méi)有設置或為空時(shí),會(huì )使用test代替,則命令變成rm -rf /test,刪除此目錄不會(huì )產(chǎn)生任何影響。

4、不同Linux服務(wù)器之間如何實(shí)現快速掛載?

不同Linux服務(wù)器之間的共享,我們一般通過(guò)NFS來(lái)實(shí)現。但是有一次同事在進(jìn)行遷移ELK時(shí),使用了sshfs命令快速基于ssh協(xié)議快速實(shí)現了數據的共享。
SSHFS(Secure SHell FileSystem)是一個(gè)客戶(hù)端,可以讓我們通過(guò) SSH 文件傳輸協(xié)議(SFTP)掛載遠程的文件系統并且在本地機器上和遠程的目錄和文件進(jìn)行交互。
具體使用如下:











# 1.安裝 SSHFSyum install sshfs
# 2.創(chuàng )建 SSHFS 掛載目錄mkdir /mnt/data
# 3.使用 SSHFS 掛載遠程的文件系統sshfs test@x.x.x.x:/home/test/ /mnt/data
如果SSH有密鑰授權,我們也可以使用公鑰實(shí)現掛載sshfs -o IdentityFile=~/.ssh/id_rsa test@x.x.x.x:/home/test/ /mnt/data
正如你所看到的,通過(guò)sshfs命令我們快速實(shí)現了掛載,相對于NFS非常方便。

5.Linux中如何將用戶(hù)快速添加到附屬組?

對于 Linux 操作系統,我們一般使用 usermod 命令來(lái)調整用戶(hù)分組,但是在使用過(guò)程中是有痛點(diǎn)的。
















# 1.新增3個(gè)用戶(hù)# useradd test1uid=508(test1) gid=508(test1) groups=508(test1)# useradd test2uid=509(test2) gid=509(test2) groups=509(test2)# useradd test3uid=510(test3) gid=510(test3) groups=510(test3)
# 2.調整test1 附加組# usermod -G test2 test1uid=508(test1) gid=508(test1) groups=508(test1),509(test2)# usermod -G test3 test1uid=508(test1) gid=508(test1) groups=508(test1),510(test3)# usermod -G test2,test3 test1uid=508(test1) gid=508(test1) groups=508(test1),509(test2),510(test3)

通過(guò)以上命令,我們可以看到以下痛點(diǎn):

  • 每次 usermod 附加組調整,會(huì )覆蓋原來(lái)的分組

  • usermod 調整多個(gè)分組時(shí),必須將所有分組一并添加,否則會(huì )覆蓋原來(lái)分組

那么是否有命令可以讓我們在不必提前知道原來(lái)的分組信息的情況下而直接更新分組呢?gpasswd 就可以解決我們的痛點(diǎn)問(wèn)題,它是Linux下工作組文件/etc/group和/etc/gshadow管理工具,用于將一個(gè)用戶(hù)添加到組或者從組中刪除。







# 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ì )遇到用戶(hù)同時(shí)隸屬于多個(gè)分組的情況,但是在做文件共享,因權限分離需求才會(huì )用到,此時(shí)我們通過(guò)gpasswd命令會(huì )方便很多。

總結

在運維過(guò)程中我們通過(guò)常規操作就可以解決大多數問(wèn)題,但是在處理過(guò)程中可能會(huì )存在效率不高、操作麻煩等問(wèn)題。因此在日常工作中要多探索、多總結,這可能會(huì )給我們帶來(lái)意想不到的效果。


我要咨詢(xún)