Bashスクリプトには、オペレーティングシステム固有のディスク(Linux / RHELシステムの実行)のみをキャプチャする必要があるコードの場所がたくさんあります。
私たちはLinuxバージョンを使用しており、7.2/7.5/7.6/7.9
ほとんどの場合、マシンにはテラバイトサイズのディスクなどを含むデータまたはデータベースサーバーを格納するための追加のディスクがあります。
通常、次の cli を使用してオペレーティングシステムのディスクをキャプチャします。
os_disk=` lsblk -l | grep part | awk '{print $1}' | sed s'/[0-9]/ /g' | sort -u | head -1 `
追加のパーティションディスクがない場合は機能しますが、次の例に示すように、追加のパーティションディスクがある場合は機能します。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk /data/sdb
sdb 8:16 0 1.8T 0 disk /data/sdc
sdc 8:32 0 1.8T 0 disk /data/sdd
sdd 8:48 0 1.8T 0 disk /data/sde
sde 8:64 0 1.8T 0 disk
├─sde1 8:65 0 931.3G 0 part
└─sde2 8:66 0 931.7G 0 part
sdf 8:80 0 1.8T 0 disk /data/sdg
sdg 8:96 0 1.8T 0 disk /data/sdh
sdh 8:112 0 1.8T 0 disk /data/sdi
sdi 8:128 0 1.8T 0 disk /data/sdj
sdj 8:144 0 1.8T 0 disk /data/sdk
sdk 8:160 0 1.8T 0 disk /data/sdl
sdl 8:176 0 1.8T 0 disk /data/sdm
sdm 8:192 0 1.8T 0 disk /data/sdn
sdn 8:208 0 1.8T 0 disk /data/sdo
sdo 8:224 0 557.9G 0 disk
├─sdo1 8:225 0 500M 0 part /boot
└─sdo2 8:226 0 557.4G 0 part
├─VGPO-lvm_root 253:0 0 100G 0 lvm /
├─VGPO-lvm_swap 253:1 0 16G 0 lvm [SWAP]
└─VGPO-lvm_var 253:2 0 100G 0 lvm /var
それから私達は間違った結果を得るでしょう。 OSディスクは次のような結果をsde
得る必要があります。sdo
os_disk=` lsblk -l | grep part | awk '{print $1}' | sed s'/[0-9]/ /g' | sort -u | head -1 `
echo $os_disk
sde
したがって、この場合、マシンが仮想マシンでも物理マシンでもよい場合は、オペレーティングシステムディスクを提供する別の方法を見つける必要があります。
ベストアンサー1
システムのマウントポイントにマウントされたパーティションを含むディスクを見つけることができます。例えば /boot
:
lsblk -ls | awk '$NF == "/boot" { m = 1; next } m && $NF == "disk" { print $1 ; exit}'
これは以下にも当てはまります/
。
lsblk -ls | awk '$NF == "/" { m = 1; next } m && $NF == "disk" { print $1 ; exit}'
これlsblk
により、リストモード(-l
)を使用して解析を簡素化し、ツリー(-s
)を反転して、探しているパーティションの後に親ディスクが表示されるようにします。