/ proc /がマウントされているかどうかを確認するにはどうすればよいですか?
/ etc/mtabの使用は、一貫性がない可能性があるためお勧めしません。
/ proc /がマウントされていない場合は存在しない可能性があるため、/ proc/mountsを使用することもオプションではありません(ただし、その存在をチェックすることでこのチェックを行うことができます。
このチェックを行うための最良の方法は何ですか?
引数なしで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"
/proc/mounts
の存在をテストします。 mount
を実行すると、/proc
がマウントされていない場合、/etc
から廃止される可能性のあるデータが返されるため、適切ではありません。
理論的には、/proc
に何か他のものがあるかもしれません。しかし、これは実際には非常にありそうにありません。/proc/mounts
が存在し、/proc
がproc
ファイルシステムでない場合、とにかく環境について何も信頼できません。本当に心配な場合は、ファイルシステムの種類がproc
:df -PT /proc | awk 'NR==2 && $2=="proc" {print 1}'
であることを確認できます(Linuxユーティリティdf
が必要です。Busyboxには対応するオプションがありません)。逆に、理論的には、procファイルシステムが別の場所にマウントされている可能性があります。シェルコマンドでこれを見つける簡単な方法はありません(ファイルシステムを列挙するためにdf
は/proc/mounts
を読み取ります)。実際には、/proc/mounts
を確認するだけです。
/ proc上のファイルシステムが他のファイルシステムやそのように見えるディレクトリ構造ではなく実際にprocであることを(多かれ少なかれ)保証したい場合は、 statfs()
そしてタイプをチェックします、0x9fa0
はprocの値です。
多くのLinuxインストールで利用可能なmountpoint
と呼ばれるツールがあります。最初の引数がマウントポイントの場合、終了コードは0です。