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
istat
inodeと州/マイナー番号を取得するには、次のコマンドを使用します/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