Linux の場合と同様に、AIX でもプロセスの状況を取得したいが、/proc/<PID>/stat
ファイル内の状況が見つかりません。/proc/<PID>/status
そこに暗号化されたテキストがあります。特定のプロセスの状態を取得するには、AIXでどのファイルにアクセスする必要がありますか?
答え1
AIXの内容は、インクルード・/proc/<PID>/status
ファイルで定義されているようにstruct pstatus
構造化する必要があります。<sys/procfs.h>
私が知る限り、ファイル構造の標準はないので、/proc/<PID>/*
すべての読み取りは/proc
オペレーティングシステム固有のコードとして扱われるべきです。他のオペレーティングシステムのLinux上のすべてのデータ要素への厳密な1対1マッピングを期待しないでください/proc
。データが非常に異なって配置されたり、一部のデータ要素が完全に欠落している可能性があります。
IBMの資料を参照してください。https://www.ibm.com/support/knowledgecenter/en/ssw_aix_72/filesreference/proc.html
C APIの場合、デフォルトでは/proc/<PID>/status
適切なサイズのバッファ(またはmmap()
それ)から読み込み、バッファ/ mmapポインタを変換して(struct pstatus *)
データ要素にアクセスするために使用します。
必要な状態情報に応じて、データ要素にアクセスするために同等の構造タイプを使用して同じディレクトリにある他のファイルを読み取る必要があります。
答え2
答え3
これはおそらくコメントでなければなりません。しかし、そうするには「状態」が十分ではありません。ため息... - 答えの始点を提供しようとしています!
「Linuxと同じように...」という言葉は、AIXユーザーにとって大きな意味はありません。私は簡単なことを試しました。 「その他」のステータスは、あなたが受け入れることができる答えですか?
Linuxサーバーでこれを試しました。
root@x064:[/data]cat /proc/1/status
▒▒/▒0▒0▒;▒
▒▒▒9▒E▒4▒œOTHER
root@x064:[/data]
root@x064:[/data/prj/gnu/less-481]strings /proc/1/status
OTHER
AIXでは、次のようになります。
michael@x071:[/home/michael]cat /proc/1/status
dò0ò0 ~5!(FiË3ãú¤ÀOTHER
michael@x071:[/home/michael]strings /proc/1/status
!(Fi
Ë3ãú
OTHER
IMHO - 文字列! (FiとË3ãúは文字列のように見えますが、「正常に表示」されます。
/ procを表示するために使用する必要があるコマンドは次のとおりです。
michael@x071:[/home/michael]ls -l /usr/bin/proc*
-r-xr-xr-x 1 bin bin 8462 Jan 12 2015 /usr/bin/proccred
-r-xr-xr-x 1 bin bin 23820 Jan 12 2015 /usr/bin/procfiles
-r-xr-xr-x 1 bin bin 14852 Jan 12 2015 /usr/bin/procflags
-r-xr-xr-x 1 bin bin 11222 Jan 12 2015 /usr/bin/procldd
-r-xr-xr-x 1 bin bin 20884 Jan 12 2015 /usr/bin/procmap
-r-xr-xr-x 1 bin bin 8274 Jan 12 2015 /usr/bin/procrun
-r-xr-xr-x 1 bin bin 8974 Aug 06 2011 /usr/bin/procsig
-r-xr-xr-x 1 bin bin 24534 Jan 29 2015 /usr/bin/procstack
-r-xr-xr-x 1 bin bin 8502 Jan 12 2015 /usr/bin/procstop
-r-xr-xr-x 1 bin bin 34888 Jan 12 2015 /usr/bin/proctree
-r-xr-xr-x 1 bin bin 13612 Jan 12 2015 /usr/bin/procwait
-r-xr-xr-x 1 bin bin 9158 Jan 12 2015 /usr/bin/procwdx