Aixには、/proc/の下のプロセス実行可能ファイルへのパスまたはリンクを提供できるコマンドがありますか?

Aixには、/proc/の下のプロセス実行可能ファイルへのパスまたはリンクを提供できるコマンドがありますか?

ls -l /proc/17301504私はコマンドへのフルパスを提供するexeのいずれも試していません。 LinuxのようにAix 5以降でコマンドのフルパスを取得する方法はありますか?

/proc/17301504/objectコマンドと同じチェックサムを持ちますが、フルパスを提供しない.outがあります。

答え1

ファイル/procシステムは、本質的にオペレーティングシステム間で移植可能ではない。一部の Unices はまったく存在しません。

AIX のファイル・システム・レコードは/proc次のとおりです。https://www.ibm.com/support/knowledgecenter/en/ssw_aix_61/com.ibm.aix.files/proc.htm

a.outサブディレクトリのファイルについてはobject次のように言います。

[...] 名前は、a.out実行中のプロセスのテキストに関連する実行可能ファイルの同義語としてディレクトリに表示されます。

このobjectディレクトリを使用すると、制御プロセスは、プロセスが最初にこれらのファイルへの特定のパス名を取得することなく、オブジェクトファイルと共有ライブラリ(シンボルテーブルを含む)にアクセスできます。

これはa.out、その構造内のファイルにアクセスすることが望む操作とほぼ反対であることを意味します。これにより、ユーザープログラムはプロセスのフルパスを知らなくてもプロセスの実行可能ファイルにアクセスできます。

AIXには実行可能ファイルの基本名を含む構造もありますが、やはり/procそれはあなたが興味を持っているようなものではありません。

プロセスは独自の0番目のコマンドライン引数(に示されているプロセス名ps)を設定できるため、psフルパスを使用して実行されても、usingは実行中の実行可能ファイルの絶対パスを見つけるための信頼できるソリューションではありません。

あなたは何ですかできるdo は inode で実行ファイルを探します。

これを行う方法の例は、現在の質問に対する回答で説明されています。AIX 5以降でPIDで実行可能ファイルパスを識別する方法」。

この情報を取得するために問い合わせる必要がある理由を自分に尋ねることをお勧めします。走るスクリプトやプログラムを研究すると、どの外部ユーティリティを呼び出すかが明確になることが多いからです。

答え2

istatinodeと州/マイナー番号を取得するには、次のコマンドを使用します/proc/<pid>/object/a.out

$ istat a.out
Inode 4694 on device 10/5       File
Protection: r-xr-xr--   Set UID 
Owner: 0(root)          Group: 0(system)
Link count:   1         Length 82411 bytes

Last updated:   Fri May  4 13:58:53 PDT 2018
Last modified:  Wed Nov 29 10:40:56 PST 2017
Last accessed:  Wed Sep  5 14:51:07 PDT 2018

メジャー/マイナー番号からファイルシステム名を取得する

$ ls -l /dev/* | grep 10, | grep ' 5 '
brw-rw----    1 root     system       10,  5 Jul 03 2017  /dev/hd2
crw-rw----    1 root     system       10,  5 Jul 03 2017  /dev/rhd2

$ df /dev/hd2
Filesystem    512-blocks      Free %Used    Iused %Iused Mounted on
/dev/hd2        10944512   2220824   80%    41861     4% /usr

inodeからファイル名を取得する

$ find /usr -inum 4694 -exec /bin/ls -l {} \;
-r-sr-xr--    1 root     system        82411 Nov 29 2017  /usr/sbin/inetd

関連情報