IRISのプロセス(処理)を停止させる方法
これは InterSystems FAQ サイトの記事です。
IRISのプロセスを終了したい場合、管理ポータルから行う方法と、ターミナルからユーティリティやコマンドを使用して行う方法があります。
こちらのトピックでは、以下の3つの方法で停止する方法をご紹介します。
【プロセスの停止方法】 1.管理ポータルから停止する方法2.ユーティリティーで停止する方法(RESJOB、JOBEXAM)3.プログラムで停止する方法
【注意】
IRIS外から(Windowsならタスクマネージャーなど)、プロセスの終了は絶対に行わないでください。
IRIS外からプロセス終了してしまうと、IRIS内部ではプロセスの削除を検知できなかったりすることで、IRISの動作が不安定になったり、システム全体がハングする危険性がありますので、ご注意ください。
外部から停止の例外が一つだけあります。
$ZF コマンドによって起動された子プロセスが、何らかの問題で応答を返さなかった場合、$ZF コマンドを実行した親プロセスはそのまま残り続けます。
そのような親プロセスを終了したい場合、通常の上記1~3の方法では停止できません。
その際は、先に外部から子プロセスを停止する必要があります。子プロセスを特定するためには、以下の方法があります。
例:Windowsの場合 1. process explorer(マイクロソフト製) 2. PowerShell コマンド PS>wmic Process where '(parentprocessid=10188)' get 'processid,executablepath'
では、以下に通常のプロセスを停止する方法をご紹介します。
1.管理ポータルから停止する方法
システムオペレーション > プロセス
よりプロセス一覧を表示し、終了したいプロセスの 詳細 リンクをクリックし、詳細ページを開きます。
終了ボタンをクリックすると、モーダルダイアログが開くので、終了ボタンを押してプロセスを終了します。
2.ユーティリティーで停止する方法(RESJOB、JOBEXAM)
管理者権限でターミナルにログインし、ユーティリティを実行します。
★RESJOB
USER>zn"%SYS"%SYS>do^RESJOB
Force a process to quit InterSystems IRIS
Process ID (? for status report): 56528// 終了したいプロセスIDを入力+Enter で終了する
Process ID (? for status report): // Enter で抜ける( ? を入れるとプロセス一覧が表示される)%SYS>★JOBEXAM
%SYS>do^JOBEXAM
IRIS for Windows (x86-64) 2025.1 (Build 225_1U)
Job# NSpace Routine Commands Globals State PID Current device
1 CONTROL 00 RUNW 668242 WRTDMN 26357 RUNW 183403 GARCOL 00 RUNW 481724 JRNDMN 15625 RUNW 441805 EXPDMN 00 RUNW 462926%SYS%SYS.WorkQueueMgr133834 13242 SEMW 42112//./nul7%SYS MONITOR 3123878 EVTW 62572//./nul8%SYS CLNDMN 021 RUNW 58484//./nul9%SYS LMFMON 158780 EVTW 17168//./nul10%SYS RECEIVE 79597 HANGW 17212//./nul11 USER shell 36237READ41016 |TRM|:|41016// これを終了する場合12%SYS%SYS.WorkQueueMgr770887396 EVTW 3848//./nul13%SYS%SYS.SERVER017READ488401972:
14%SYS%SYS.TaskSuper2073135 EVTW 22480//./nul15%SYS SYS.VSSWriter 014 RUNW 6884//./nul16%SYS%SYS.Monitor.Co<56975962242094 EVTW 26840//./nul17%SYS%SYS.WorkQueueMgr4763156 SEMW 39616//./nul19%SYS%SYS.sqlcq.uEidd<1335591338 RUN 37884 |TRM|:|37884
(N)ext,(P)rev,(G)oto,(E)xamine,(T)erminate,(S)uspend,(R)esume,(Q)uit => // T 押下(Terminate)
Terminate: Enter Job # or "P" followed by the PID: P41016 // P+プロセスID または Job番号を入力+Enter
:
Job Terminated でプロセスが終了する
3.プログラムで停止する方法
USER>zn"%SYS"%SYS>do$SYSTEM.Process.Terminate(17456) // ^RESJOB ユーティリティと同じ。プロセスIDを指定して終了する%SYS>
%SYS>do$SYSTEM.Process.Terminate() // 自分自身(現在の)プロセスを終了する場合ディスカッション (0)0