[ServiceNow] スケジュールジョブの強制終了のやり方


概要

スケジュールジョブが無限ループに入ってしまったり、処理が重くてなかなか終わらなくなってしまったりで、強制終了させたい場合があります。
本記事では、スケジュールジョブの強制終了のやり方を説明します。
結論から言うと、System Diagnostics > Active Transactions (All Nodes) に行き、スケジュールジョブの Transaction を Kill すれば、強制終了することができます。

手順

通常はなかなか強制終了させたい状況になりませんので、10分間スリープするだけのジョブを登録し、そのジョブを強制終了させる手順を説明します。

1 System Definition > Scheduled Jobs に行き、以下のスクリプトをスケジュールジョブとして登録します。

gs.info("Sleep job test start");
gs.sleep(600000);
gs.info("Sleep job test finish");

ジョブ名は、Sleep job test としました。

2 ジョブ定義画面で、Execute Now ボタンをクリックしこのジョブを実行します。
3 実行後、System Logs > System Log > All に行き、「Sleep job test start」というメッセージが書き込まれ、ジョブが始まっていることを確認します。

4 ジョブ実行後、System Diagnostics > Active Transactions (All Nodes)
に行くと、Type が Scheduler のトランザクションがありますので、そちらを選択して、Kill を実行します

5 実行後、Refresh をクリックすると、該当のトランザクションが消え、ジョブが強制終了されます。強制終了されたので、10分以上経っても、「Sleep job test finish」というメッセージはログに書き込まれないはずです。

以上です。

補足

Execute Now ボタンからの実行ではなく、スケジュールされた時間にジョブが自動実行された場合、Active Transactions (All Nodes) の画面の URL 欄にジョブ名が以下のように表示され、どのトランザクションがどのジョブのものかわかるようになっています。