Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

【JP1/AJS】 コマンド備忘

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!
スポンサーリンク
バッチ処理の自動化スキルは市場価値が高いです。今の自分の単価を調べてみませんか?
顧客常駐はもう嫌だ!社内SEへ転職するなら【社内SE転職ナビ】
Cursor・Claude Code・Codex AIスキルを学ぶなら
環境構築不要!AIエージェント開発を非エンジニアでも即実践【AI Agent Camp】

ajschange

ジョブネットのコメントを変更し、2025/05/01までの「期日指定」を設定する

ajschange -C 変更後のコメントです -p 2025/05/01 AJSROO1:/ジョブネットパス

-C コメント
ユニットのコメントを変更します。

指定できる文字数は,1〜80(単位:バイト)です。

-Cは大文字

ちなみに小文字の-cだと

-c コマンドテキスト
コマンドテキストを変更します。

指定できる文字数は,1〜1,023(単位:バイト)です。

-p //
ジョブネットの実行有効期日を変更します。

  • 期日の西暦年を指定します。指定できる値は,1994〜2036(単位:西暦年)です。
  • 期日の月を指定します。指定できる値は,1〜12(単位:月)です。
  • 期日の日を指定します。指定できる値は,1〜31(単位:日)です。

-L

ジョブグループ,実行登録していないジョブネット,およびジョブの定義内容を変更します。

-E

実行登録済みのジョブネットおよびジョブの定義内容を変更します。

-E,-Lについてはajschgjob/ajschgnetにも同じ内容のオプションがある。

ajsdefine

定義が書かれたファイルから任意のジョブグループ配下にジョブネットを回復する

ajsdefine -F AJSROOT1 -e -d 回復先となるAJSROOT1を除いたジョブグループパス unitで始まる定義が書かれたファイル

「パスからAJSROOT1を除いたジョブグループ」配下に回復される。

-eは配置先にジョブがある場合に上書きしないオプション

ajsdefine : JP1/Automatic Job Management System 3 コマンドリファレンス

-e

ユニットの定義先に,ユニット定義ファイルに記述したユニットと同一名称のユニットがある場合,エラーとします。なお,ユニット定義ファイル中の記述で,同一階層に同一名称のユニット名の指定がある場合は,エラーとします。情報は更新されません。

-d

-d 定義先ユニット名

ジョブネットワーク要素の定義先となる,ジョブグループ名,またはジョブネット名を指定します。

指定できる文字数は,1~255(単位:バイト)です。ホストリンクジョブネット名,論理ホスト名,および実行IDは指定できません。ネスト数が許容最大数(30個)を超えるジョブグループやジョブネットは指定できません。

省略した場合,「AJSROOT」が仮定されます(ジョブネットワーク要素はジョブグループ「AJSROOT」中に作成されます)。

 

ajsdefineコマンドで定義先をジョブネットとして-eオプション(変更モード)を省略した場合、同一名称のユニット(ジョブ等)がすでに存在しているとエラーになり、上書き(更新)されません。 [1]
コマンドの動作は以下の通りです: [1]
    • -e(または省略した場合): 同じ名称のユニットがすでに存在する場合はエラーになり、定義は更新されません。
    • -i(新規作成モード): 同じ名称のユニットがすでに存在する場合はエラーになります。
    • -f(強制変更モード): 同じ名称のユニットがすでに存在する場合、既存の定義を上書きして更新します。 [1]

既存のジョブネットやジョブ定義を上書き更新したい場合は、-f オプションを指定してください。
なお、JP1の実行登録済みジョブネットの情報を更新する場合は、事前に計画実行登録や確定実行登録の登録解除が必要になる点にご注意ください

退避と回復の例)

移行元:以下のジョブグループ配下のジョブネットすべてを退避する

AJSROOT1:/jobgroup1/subjobgroup1/*

su - jp1admin へスイッチ

ajsprint -F AJSROOT1 -a "AJSROOT1:/jobgroup1/subjobgroup1/*" > /tmp/ajsprint_yyyymmdd.txt

 

移行先:上記でエクスポートしたジョブネットを以下のジョブグループ配下へ回復する

AJSROOT2:/jobgroup2/subjobgroup2

su - jp1admin へスイッチ

ajsdefine -F AJSROOT2 -d "AJSROOT2:/jobgroup2/subjobgroup2" /tmp/ajsprint_yyyymmdd.txt

unit定義中のha=yパラメータで保留を設定する

ha=yをunit定義中に入れることで回復時にジョブネットの保留が設定される。実行登録後の保留とは違い、元々が保留設定となる。省略可能。省略した場合,nが仮定される。

ジョブネット定義情報の記述方法

ajschgjob

-FFオプション

監視対象ファイル名を定義する。

ajschgjob : JP1/Automatic Job Management System 3 コマンドリファレンス

/home/hoge/kansi.txtを監視、実行エージェントをhogesv01に変更

ajschgjob -FF /home/hoge/kansi.txt -ex hogesv01

-enオプション

環境変数を変更する

-en KH1=hoge1 -en KH2=hoge2 というように複数の環境変数を続けて書ける。

ajsentry

毎日X時に実行されるスケジュールで「X時より後に」以下の登録コマンドを実行した場合

次回から実行登録する

ajsentry -F AJSROOT1 -f /test2
⇒-fオプションは時刻が経過済みの場合は次回スケジュールから登録される

その日から実行登録する

ajsentry -F AJSROOT1 -s /test2 
⇒-sオプションは時刻が経過済みであってもその日の予定があれば実行される

 

即時実行登録

ajsentry -F AJSROOT1 -n /test2

実行登録されているものに対して実行登録しようとするとエラーになる。

ajsentry -F AJSROOT1 -n /test2
KAVS0681-E ジョブネット(/test2)は既に登録されています

スケジューラサービスのサービス停止、起動が絡む場合の-oオプション

ajsentry -s -o AJSROOT1/test/testjobnet

ajsentry : JP1/Automatic Job Management System 3 コマンドリファレンス

-o

その日に実行予定のジョブネットで,実行開始予定時間がスケジューラーサービスの起動時間より前のジョブネットは,スケジューラーサービスの起動時に実行しません。

このオプションは-w-m-k-n-hオプションと同時には指定できません。また,このオプションはサービス起動モードがウォームスタートまたはディザスターリカバリースタートの場合に有効となります。

ajsleave

登録解除

ajsleave -F AJSROOT1 /test2

/JobGroupA の配下にあるすべてのルートジョブネットの実行登録をまとめて解除

ajsleave -R -E -T /JobGroupA
各オプションの意味
各オプションは以下のような役割を持ち、これらを組み合わせることで「配下にあるルートジョブネット」のみを正確に対象とすることができます。 [1, 2]
  • -R(Recursive): 下位階層への再帰指定
    • 指定したジョブグループの下位にあるすべてのユニット(階層)を検索・操作の対象にします。
  • -E(Exclude Nested Jobnets): ネストされたジョブネットの除外
    • ジョブネットの中に定義されている「ネストされたジョブネット」を処理対象から除外します(実行登録の解除はルートジョブネット単位で行うため、このオプションで絞り込みます)。
  • -T(Exclude Jobs): ジョブの除外
    • ジョブネット配下にある「ジョブ」そのものを処理対象から除外します。
運用の注意点
  1. 引数の指定漏れに注意:
    • ajsleave -R -E -T だけを出力して後ろに「ジョブグループ名」を記述し忘れると、引数不足エラーになります。
  2. 実行タイミング:
    • -R オプションを用いて大量のユニットを一度に操作する場合、JP1/AJS のデータベースやスケジューラーサービスに一時的な負荷がかかります。そのため、オンライン業務のピーク時間帯を避け、夜間やメンテナンス時間帯などに実行することが推奨されます。 [1, 2, 3, 4, 5]
特定のジョブネットの解除でお困りですか?もし可能であれば、特定の期間(日時)だけを解除したいのか、あるいはエラーが発生して困っているのかなど、現在の状況を教えていただけますと、より具体的な手順やコマンド例をご案内できます。

特定の期間(日時)だけを解除したい(Ask_AI)

特定の期間(日時)だけを実行登録から解除したい場合、ajsleave コマンドに 「開始日時」と「終了日時」を指定するオプション を追加します。 [1]
JP1 では、日時の数え方に 「暦日(れきじつ・カレンダー上の日付)」「実行日(基準時刻をまたぐ運用上の日付)」 の2種類があります。一般的な運用に合わせて、それぞれ以下のオプションを使用します。 [1]

1. 暦日(通常のカレンダー通り)で期間を指定する
カレンダー上の実際の日時で指定する場合は、-b(開始日時)-e(終了日時) オプションを組み合わせます。 [1]
    • コマンド例(2023年6月1日 09:00 〜 2023年6月5日 18:00 を解除する場合)
      bash
      ajsleave -R -E -T -b 2023/06/01/09:00 -e 2023/06/05/18:00 /JobGroupA
      
      コードは注意してご使用ください。
2. 実行日(JP1の基準時刻ベース)で期間を指定する []
JP1 のスケジュール(48時間制や「当日26時」など)に合わせ、運用上の日付で指定する場合は、-v(開始日)-w(終了日) オプションを使用します。
※時刻は指定できず、「日(1日単位)」での指定になります。 [1, 2]
    • コマンド例(2023年6月1日 〜 2023年6月5日の実行日分を丸ごと解除する場合)
      bash
      ajsleave -R -E -T -v 2026/06/01 -w 2026/06/05 /JobGroupA
      
      コードは注意してご使用ください。

💡運用のポイントと注意点
    • プランニンググループの下位ユニットのみ有効
      期間指定(-b, -e など)による一部世代の解除は、原則としてプランニンググループ配下に定義されたジョブネットに対して使用する機能です。通常のルートジョブネットに対して実行した場合、仕様上エラーになるか意図通りに解除されない場合があります。
    • 「計画一時変更」との使い分け
      もし通常のルートジョブネットで「特定の日の1回だけ実行をスキップしたい」という意図であれば、登録解除(ajsleave)ではなく、ajschgstat コマンド等による「実行中止(スキップ)」操作 を行うのが一般的です。
      [1, 2]

💡 現在解除しようとしている対象は、プランニンググループで管理されているジョブネットでしょうか?
    1. はい(プランニンググループを使っている)
    2. いいえ(通常のジョブネット。特定の日の実行だけを止めたい)

特定の期間(日時)だけを解除する利点は何でしょうか(Ask_AI)

特定の期間(日時)だけを実行登録から解除する(主にプランニンググループ配下のユニットを対象とする)最大の利点は、将来のスケジュール設定を壊さずに、特定の期間だけ「業務を完全に停止・変更」できる点にあります。
主に、以下のような運用上のメリットがあります。
1. 将来の自動スケジュールを維持できる
期間を指定せずに全体の実行登録を解除(ajsleave)してしまうと、その日以降のすべての実行予定(世代)が消えてしまいます。特定の期間だけを解除すれば、その期間が過ぎた後のスケジュール(来週や来月など)は自動的に有効なまま残るため、再登録し忘れるリスクがありません。
2. 大型連休やシステムメンテナンスに対応しやすい
年末年始やゴールデンウィーク、または数日間に及ぶデータ移行などのシステムメンテナンス期間中、「この5日間だけはジョブを一切動かしたくない」という場合に役立ちます。対象期間のスケジュールだけをピンポイントで消去できます。
3. スケジュール定義(カレンダー)の変更が不要
通常、特定の日にジョブを止めたい場合は「JP1カレンダーの運用日を休業日に変更する」という方法もあります。しかし、期間指定の解除を使えば、カレンダー定義そのものを書き換える必要がないため、他のジョブネットへの予期せぬ影響を防げます。
4. 無駄な「実行中止(スキップ)」のログを残さない
1回だけのスキップであれば「実行中止」の操作(ajschgstat)が便利ですが、期間が長く対象ジョブネットが大量にある場合、JP1の画面(View)上が「中止」のグレーのアイコンやログで埋め尽くされてしまいます。期間解除をすればスケジュール(世代)自体が最初から生成されないため、監視画面やログがすっきり綺麗に保たれます。

期間指定の解除について、他にも気になる点(コマンドの挙動や、実行中止との使い分けなど

)はありますか?
もしよろしければ、今回の操作の目的が「年末年始などの長期休暇対応」なのか、それとも「一時的なトラブルによる緊急停止」なのかなど、具体的な背景を教えていただけますと最適な運用方法をご提案できます。

特定の期間(日時)だけを解除するのは計画実行設定でも動作するでしょうか(Ask_AI)

結論から申し上げますと、ajsleave コマンドによる特定の期間(日時)を指定した解除は、計画実行登録(スケジュール定義に基づき自動で次回世代を生成する登録方法)では正しく動作しません(意図した結果になりません)。
計画実行登録の仕組み上、特定の期間だけを部分的に解除しようとしても、JP1 が自動的にスケジュールを再計算して同じ日時に新しい実行予定(世代)を再度作り直してしまうためです。
この挙動の理由と、計画実行登録で特定の期間だけジョブを止めたい場合の正しい対処法を解説します。

なぜ計画実行設定では動作しないのか?
計画実行登録(-m p)では、JP1 が常に「スケジュールルール」と「カレンダー」を監視しています。
    1. ajsleave -b ... -e ... で特定の日の実行予定(世代)を削除する
    2. JP1 は「予定されていた世代がなくなった」と認識する
    3. スケジュールルールに基づき、削除されたはずの同じ日時に、次回実行予定(世代)を自動で再生成してしまう
結果として、コマンド自体はエラーにならなくても、「消したはずの予定がすぐに復活する」という状態になり、特定の期間だけを止めることはできません。
※期間指定(-b, -e 等)の解除が真価を発揮するのは、日ごとに異なるルートジョブネットを切り替えて実行する*「プランニンググループ」*配下のユニットに対して実行する場合のみです。

計画実行設定で「特定の期間だけ」止める2つの正しい方法
計画実行登録されているジョブネットを、特定の期間だけ動かしたくない場合は、以下のいずれかの方法を行います。
方法1:カレンダー(休業日)を設定する(推奨:最も安全)
特定の期間(例:年末年始の5日間など)を JP1カレンダー上で「休業日」に設定します。
    • メリット: スケジュールルールが自動で休業日を回避(または前後にシフト)してくれるため、一番安全で確実です。
    • 方法: JP1/AJS3 – View のカレンダー画面から設定するか、ajsplan コマンドで休業日を反映します。
方法2:対象期間の予定を「計画一時変更(実行中止)」にする
すでに生成されている特定の期間の予定(世代)に対して、ステータスを「実行中止」に変更します。
    • メリット: カレンダーやジョブの定義を一切変更せずに、その日だけをピンポイントでスキップできます。
    • コマンド例(指定した日時の世代を計画一時変更で中止にする):
      bash
      ajschgstat -t "2026/06/01 09:00" -s 5 /JobNetA
      
      コードは注意してご使用ください。

      (※ステータス 5 は「実行中止」を意味します)


💡 現在運用されている環境において、どちらの方法が適しているか確認させてください。
    • 定期的な長期休暇(年末年始など)で、毎年同じように止めたい方法1(カレンダー) が最適です。
    • 突発的なメンテナンス等で、今回の特定の数日間だけサクッと止めたい方法2(実行中止) が最適です。
今回の停止は、どのような理由(定期的な休み、一時的なメンテナンスなど)によるものでしょうか?状況に合わせて具体的な手順をご案内します。

実行エージェント追加

SV1(Linux)にSV2(Windows)のagentを登録

SV1のhostsにSV2のエントリがあるかを確認する

SV1で

ajsagtshow -l

を実行し、現在の実行エージェント登録情報を確認する

SV1で

ajsagtadd -a SV2

で実行エージェントにSV2を追加登録する

再度SV1で

ajsagtshow -l

を実行し、追加後の実行エージェント登録情報を確認し、追加されたことを確認する

SV2で

JP1/Base環境設定を起動し、

新規JP1ユーザーをSV1で追加する ※SV1ではなく「*」だと実行するサーバの制限はなくなる。

追加した新規JP1ユーザーを実行したいジョブの実行権限をもつOSユーザーとマッピング登録する

タイトルとURLをコピーしました