web-dev-qa-db-ja.com

/ proc /がマウントされているかどうかを確認する方法

/ proc /がマウントされているかどうかを確認するにはどうすればよいですか?

  • / etc/mtabの使用は、一貫性がない可能性があるためお勧めしません。

  • / proc /がマウントされていない場合は存在しない可能性があるため、/ proc/mountsを使用することもオプションではありません(ただし、その存在をチェックすることでこのチェックを行うことができます。

このチェックを行うための最良の方法は何ですか?

7
freddie

引数なしでmountを実行して、現在のマウントのリストを取得できます。 /etc/mtabファイルには同様のデータが含まれている必要がありますが、おっしゃるように、/etcファイルシステムが混乱したり、書き込みできなかったりした場合、実際にマウントされているものと矛盾する可能性があります。プログラムはそれを台無しにしました。 mountに、次のようにタイプprocのすべてのマウントを一覧表示するように依頼することで、procマウントに関する特定の情報を取得できます。

mount -l -t proc

編集:statを使用して/procフォルダーのデバイスを/のデバイスと比較し、少なくともSOMETHINGがマウントされているかどうかを確認できるようです。ルートファイルシステム以外に:

[[ $(stat -c %d%D /proc) != $(stat -c %d%D /) ]] && echo "Something is mounted at /proc"
8
Caleb

/proc/mountsの存在をテストします。 mountを実行すると、/procがマウントされていない場合、/etcから廃止される可能性のあるデータが返されるため、適切ではありません。

理論的には、/procに何か他のものがあるかもしれません。しかし、これは実際には非常にありそうにありません。/proc/mountsが存在し、/procprocファイルシステムでない場合、とにかく環境について何も信頼できません。本当に心配な場合は、ファイルシステムの種類がprocdf -PT /proc | awk 'NR==2 && $2=="proc" {print 1}'であることを確認できます(Linuxユーティリティdfが必要です。Busyboxには対応するオプションがありません)。逆に、理論的には、procファイルシステムが別の場所にマウントされている可能性があります。シェルコマンドでこれを見つける簡単な方法はありません(ファイルシステムを列挙するためにdf/proc/mountsを読み取ります)。実際には、/proc/mountsを確認するだけです。

/ proc上のファイルシステムが他のファイルシステムやそのように見えるディレクトリ構造ではなく実際にprocであることを(多かれ少なかれ)保証したい場合は、 statfs() そしてタイプをチェックします、0x9fa0はprocの値です。

2
Random832

多くのLinuxインストールで利用可能なmountpointと呼ばれるツールがあります。最初の引数がマウントポイントの場合、終了コードは0です。

0
abraXxl