Bashスクリプト:パーティションをマウントできるかどうかはどうすればわかりますか?

Bashスクリプト:パーティションをマウントできるかどうかはどうすればわかりますか?

状況:LinuxでPythonを使用して自動ファイルマウントを作成します。システムコールを使用してこれを行うPythonメソッドを見つけることはできません。技術的には、これはbashスクリプトを実行することを意味し、Pythonを介して実行することを意味します。

問題:ディスクラベルを取得するだけではディスクをマウントできません。たとえば、ディスクラベルを取得できますが、スワップパーティションとしてのみ/dev/sdaマウント/dev/sda1 できます。/dev/sda2

fdisk出力とparted出力は、どのディスクをマウントできるかを決定するのに実際には役に立ちません(たとえば、読み取り可能な有効なファイルシステムがあります)。

質問:Linux / Bashコマンドを使用してどのディスクをマウントできるかを確認するにはどうすればよいですか? (grep最終結果を得るために10個以上のパイプを接続しても大丈夫です。)

ベストアンサー1

lsblkどちらもblkidパーティションに何があるかを調べるために使用できます(スワップ、既知のファイルシステム、生データなど)。これらのすべてには、必要な情報(ファイルシステムタイプ、fsタグ、uuidなど)のみを抽出できるように出力形式を指定するさまざまなオプションがあります。

IMOblkidはスクリプトのためのより良いツールであり、私の経験では、どのタイプのブロックデバイスをチェックしても(lsblkZFS zvolで何をすべきかわかりません)、既存のパーティションの目的を検出するのにblkid最適です。ブロックデバイスと同じように処理します。 ZVOLがまさにこれなので、やるべきことです。 lsblkスクリプトで使用できますが、私の考えでは、きれいな印刷物でインタラクティブに使用することをお勧めします。

たとえば、私のシステムの1つでは:

# blkid /dev/sda*
/dev/sda: PTUUID="3a1e16ae" PTTYPE="dos"
/dev/sda1: UUID="08799b67-8ed7-4cee-aea1-0f9e7bd1fc04" TYPE="ext4" PARTUUID="3a1e16ae-01"
/dev/sda2: UUID="db8bda5f-4f18-4abb-a151-08494e398047" TYPE="swap" PARTUUID="3a1e16ae-02"
/dev/sda3: UUID="fc967791-b9cf-4145-9047-8a8b223ac4bb" TYPE="xfs" PARTUUID="3a1e16ae-03"

または /dev/sda1 のファイルシステムタイプが必要な場合:

# blkid -o value --match-tag TYPE /dev/sda1
ext4

blkid詳しくはマニュアルページをご覧ください。

しかし、file -sそれも機能しますが、出力を解析するのは難しいです。例えば

# file -s /dev/sda1
/dev/sda1: Linux rev 1.0 ext4 filesystem data, UUID=08799b67-8ed7-4cee-aea1-0f9e7bd1fc04 (needs journal recovery) (extents) (large files) (huge files)

おすすめ記事