
/path/to/gcc/myapp.exe
実行可能ファイル 2 つ ( 、 )があり/path/to/intel/myapp.exe
、1 つは Intel コンパイラでコンパイルされ、もう 1 つは標準の gcc でコンパイルされている場合、両方を実行するとtop
では として表示されますmyapp
。これら両方を実行し、プロセスを として実行している場合myapp
、どのプロセスがどの実行可能ファイルから来ているかを調べる方法はありますか?
私たちのクラスターにはたくさんのアプリがインストールされていますが、どのアプリが最も使用されているかだけでなく、バージョンアプリの が使用されています。 が 500 回実行されている場合、そのうち 100 回が からで、残りの 400 回が からなどかどうR
かを知りたいのですが、どうすればよいですか?/path/to/R-3.2.1/intel/R
/path/to/R-3.1.3/gcc/R
答え1
これはファイルシステムで実行できます/proc
。proc(5)
マニュアルページ:
/proc/[pid]/exe
Linux 2.2 以降では、このファイルは実行されたコマンドの実際のパス名を含むシンボリック リンクです。
それはシンボリックリンク、あなたは読むことができます目標(ls -l
パス名を確認するには、 を実行してください)。
もちろん、これは[pid]
実行時に関心のある特定の実行可能ファイルのプロセス ID を意味します。
(それほど古い Linux カーネルを実行しているシステムを持っている可能性は低いため、「常に動作する」で十分でしょう)。
カウントを取得するには/proc
、所有する各ディレクトリ(プログラムを実行しているので、その/proc
データを見ることができます)を調べ、パス名を興味のあるものと照合するスクリプトが必要です。readlink
たとえば、プログラムは bash スクリプトで役立ちます (の一部であるためcoreutils
、Linux システムにもインストールされている可能性があります)。
答え2
これを行うには、 を起動しtop
、c
キーボードの を押してフルパス ビューを切り替えます。
答え3
これらのプロセスが異なるコマンド ライン (たとえば、フル パスを使用) で実行される場合、 を押すと、c
プロセスが実行された完全なコマンド ラインを表示/非表示にすることができます。