投稿者

Product Support at InterSystems Japan
記事 Megumi Kakechi · 6月 22, 2023 2m read

プロセス単位の詳細情報をコマンドで取得する方法

プロセスの単位の詳細情報(使用メモリサイズ、ユーザ名、実行ルーチンなど)は管理ポータルで確認できますが、それらをコマンドで取得する方法をご紹介します。 

管理ポータル:
[システムオペレーション] > [プロセス]  (プロセス毎の)詳細リンク 

%SYS.ProcessQuery クラスを使用して、以下のように行います。

USER>setx=##class(%SYS.ProcessQuery).%OpenId(<PID>)   // 自プロセスの場合は <PID> = $JOB
USER>writex.MemoryUsed
188
USER>writex.UserName
UnknownUser
USER>writex.ClientIPAddress
127.0.0.1
USER>zwritex// 全てのプロパティを確認したいとき


Embedded Python で呼び出したい場合は以下のようにします。

# 以下のサンプルは自プロセスの情報を取得する方法
import iris
import os
x=iris.cls('%SYS.ProcessQuery')._OpenId(os.getpid())   # iris.cls('%SYS.ProcessQuery')._OpenId(<PID>)
print(str(x.MemoryUsed))
print(str(x.UserName))
print(str(x.ClientIPAddress))


実行例:

USER>:p
 
Python 3.9.5 (default, Apr 142023, 17:54:13) [MSC v.1927 64 bit (AMD64)] on win32
Type quit() or Ctrl-D to exit this shell.
>>> import os
>>> x=iris.cls('%SYS.ProcessQuery')._OpenId(os.getpid())
>>> print(str(x.MemoryUsed))
230
>>> print(str(x.UserName))
UnknownUser
>>> print(str(x.ClientIPAddress))
127.0.0.1
>>>

こちらで、実行ルーチン(Routine)や、グローバル参照数(GlobalReferences)、プロセスの状態(State)なども確認できます。
エラー発生時など、デバッグでプロセスの状態を調査したい場合にぜひご活用ください。
enlightened【ご参考】
すべてのプロセスの情報を取得する方法は、以下の記事でご紹介しています。
プロセス一覧をプログラムで取得する方法