以下を使用して、Solarisオペレーティングシステムで現在アクティブで割り当てられているファイル記述子の総数を取得できます。
echo ::kmastat | sudo mdb -k| grep file_cache
ただし、mdbにはスーパーユーザー権限が必要です。
スーパーユーザー権限なしで同じ操作を実行するコマンドはありますか?それとも可能ですか?
オペレーティングシステム情報:Oracle Solaris 11.4 X86
答え1
定義によれば、一般ユーザーはrootが所有しているファイルを見ることができないため、開いたファイルを追加するコマンドを実行することはできません(オブジェクトを破壊する必要な権限がない限り)。
mdbコマンドを実行するには、rootプライバシーを積極的に停止し、sudoersファイル(Solaris>バージョン11)にユーザーを追加するか、root所有ファイルへの読み取りアクセス権を持つグループにユーザーを追加する必要があります。
バラよりfile-nrとlsofがオープンファイルを別々に計算するのはなぜですか?ファイルハンドラの計算と開かれた「ファイル」のリストに関する情報 - 総数は、ファイルとして計算されるフォルダなどによって異なります。
Solaris では、プロセスごとに開かれたファイルの数を計算できます。または、ルートファイルを表示できる必要があり、「lsof」を使用します。
lsof | wc -l
単一プロセスの場合、PID に対して「pfiles」を実行できます。バラよりオタク日記もっと学ぶ。
しかし、おそらくpsを使ってからpfilesを試してみてください:
ps -A | awk '{print $1}' | xargs pfiles
次に、awkを使用して合計を追加します。
また、findを使ってみましたが、ソケットなども並べているので混乱しています。
find /proc/*/fd/ * -type f | grep -v "Permission denied" | wc -l