このトピックでは、Shell、Python、または PHP のスクリプトを記述してスクリプトジョブを作成する方法について説明します。
仕組み
次の図は、スクリプトジョブの仕組みを示しています。

-
スクリプトジョブを使用するには、ターゲットマシンに
schedulerx-agentをデプロイする必要があります。エージェントはサーバーと通信し、スクリプト実行コマンドを受信し、実行結果を返します。 -
Python ライブラリやその他のファイルなど、スクリプトに必要な依存関係をすべてターゲットマシンにインストールします。
-
スクリプトが実行されると、
schedulerx-agentは子プロセスをフォークして実行します。この子プロセスは、schedulerx-agent自体のメモリではなく、ホストマシンのメモリを消費します。消費されるメモリ量は、スクリプトの操作によって異なります。多くのスクリプトジョブを同時に実行すると、マシンのメモリが枯渇する可能性があります。リソースを大量に消費するスクリプトの場合は、Kubernetes ジョブ を使用してポッドで実行することを推奨します。
前提条件
-
スクリプトを実行するには、schedulerx-agent をデプロイする必要があります。
スクリプトジョブの作成
SchedulerX コンソールにログインします。左側のナビゲーションペインで、[Task Management] ページに移動し、ジョブを作成します。Job Type を [script job] に設定します。
[Task Name] と [Description] を入力し、[Application ID] を選択し、[Priority] (デフォルトは Medium) を設定し、[Task Parameters] フィールドに必要なパラメーターを入力します。
ステップ 1:スクリプト言語の選択
[Script Language] を選択します。SchedulerX は Shell、Python、PHP に対応しています。
ステップ 2:実行コマンド
言語ごとにスクリプトを実行するコマンドを指定します:
-
Shell スクリプト:デフォルトは
/bin/shです。 -
Python スクリプト:デフォルトは
pythonです。これをpython2またはpython3に変更できます。 -
PHP スクリプト:デフォルトは
phpです。
ステップ 3:ファイル形式
unix と windows のファイル形式では、改行コードが異なります。
-
スクリプトを
Windowsシステムで実行する場合は、windowsを選択します。 -
スクリプトを
Linux/Unix/Macシステムで実行する場合は、unixを選択します。
Windows システムでスクリプトを作成し、Linux システムで実行する場合は、[File format] を [unix] に設定します。
ステップ 4:実行モード
前提条件:schedulerx-agent のデプロイが必要です。詳細については、「エージェントの接続 (スクリプトジョブまたは HTTP ジョブ)」をご参照ください。
Execution Mode:
-
スタンドアロン実行:SchedulerX は、デプロイ済みのエージェントからいずれか 1 つをランダムに選択してスクリプトを実行します。
-
ブロードキャスト実行:SchedulerX は、デプロイ済みのすべてのエージェントで同時にスクリプトを実行します。このモードは、バッチ操作やメンテナンスに使用されます。
-
シャード実行:複数のエージェントにジョブの実行を分散させます。詳細については、「Python シャーディングジョブの作成」をご参照ください。
スクリプトの作成と編集
スクリプトジョブを作成すると、SchedulerX は選択した言語に基づいてデフォルトのスクリプトテンプレートを生成します。Edit Script ページで Edit Script をクリックしてスクリプトを編集します。
ジョブリストには、各ジョブの [Execution mode] (例:[Stand-alone operation]) が表示され、[Edit Script] ボタンで編集できます。
スクリプトバージョンの管理
Edit Script ページにはスクリプトのバージョン履歴機能があります。[Edit Script] ページで、[Historical versions] スイッチを有効にすると、バージョン比較ビューが開きます。
-
左側のペインには現在のバージョンが表示され、右側のペインには履歴バージョンが表示されます。
-
ドロップダウンリストからバージョンを選択すると、バージョンノートや作成時刻などの詳細が表示されます。
-
スクリプトを編集した後、[Confirm] をクリックし、プロンプトが表示されたら新しい [Version name] を入力します。
デモ
ブロードキャスト実行
-
2 つの
schedulerx-agentインスタンスを接続します。[Connected Instances] パネルで、両方のインスタンス (例:172.16.13.125、172.16.13.120) がバージョン 1.12.5 のポッドとして接続され、[Health status] が Healthy であることを確認します。
-
[Script Language] を [Shell]、Execution Mode を [Broadcast run] としてスクリプトジョブを作成します。次のスクリプト内容を使用します:
#!/bin/bash # #{schedulerx.shardingId} はシャード ID です echo "shard ID: #{schedulerx.shardingId}" # #{schedulerx.shardingNum} は総シャード数です echo "total shards: #{schedulerx.shardingNum}" echo "hello world" exit 0 -
対象ジョブの Actions 列で、[Run once] をクリックします。
-
Execution List ページに移動します。ジョブインスタンスを見つけ、[Operation] 列の [Log] をクリックして、各マシンからの出力を表示します。
-
172.16.13.125のログから、シャード ID が 1 で、総シャード数が 2 であることがわかります。time : 2025-04-22 17:05:26 --- ip : 172.16.13.125:34487 executionId : 10496431_74039165530_1 level : INFO log : total shards: 2 time : 2025-04-22 17:05:26 --- ip : 172.16.13.125:34487 executionId : 10496431_74039165530_1 level : INFO log : hello world time : 2025-04-22 17:05:26 --- ip : 172.16.13.125:34487 executionId : 10496431_74039165530_1 level : INFO log : shard ID: 1 time : 2025-04-22 17:05:26 -
172.16.13.120のログから、シャード ID が 0 で、総シャード数が 2 であることがわかります。
-
シャード実行
-
[Script Language] を [Shell]、Execution Mode を [Shard run] としてスクリプトジョブを作成します。他のジョブ設定を次のように構成します:
[Execution Command] を
/bin/sh、[File Format] を [unix]、[Executor] を [Agent]、[Priority] を [Medium]、[Sharding Parameter] を0=hangzhou,1=shanghai,2=beijing,3=shenzhenに設定します。 -
ジョブが作成されたら、その Edit Script ボタンをクリックし、次のスクリプト内容を入力します:
#!/bin/bash # #{schedulerx.shardingId} はシャード ID です echo "shard ID: #{schedulerx.shardingId}" # #{schedulerx.shardingParameters} はシャーディングパラメーターです echo "sharding parameter: #{schedulerx.shardingParameters}" echo "hello world" exit 0 -
対象ジョブの Actions 列で、[Run once] をクリックします。
-
Execution List ページに移動します。ジョブインスタンスを見つけ、[Operation] 列の [Log] をクリックして、各マシンに割り当てられたシャーディングパラメーターを確認します。
-
ログから、
172.16.13.120が 2 回実行され、hangzhouとbeijingのシャードを処理したことがわかります。 -
ログは、
172.16.13.125も 2 回実行され、shenzhenシャードとshanghaiシャードを処理したことを示しています。
-
関連ドキュメント
組み込みシステム変数の一覧については、「スクリプトジョブのシステム変数」をご参照ください。