マシン上で繰り返し実行したい Java ファイルがあります。ファイル実行の前のインスタンスが終了するとすぐに、ファイルは自動的に実行されます。これを達成する方法は?
3 に答える
実行可能ファイルを呼び出すループで bash スクリプトを使用する
for i in 1 2 3 4 5 .. N
do
java executable
done
Java は、ユーザー (または他の誰か) が作成したとおりにプログラムが機能する環境を提供します。
オペレーティング システムの仕様によって、そのプログラムの起動方法が決まります。前のコピーが終了するたびにプログラムを起動する場合は、Java プログラムの起動をそのオペレーティング システムでサポートされているスクリプト言語のループでラップするか、プログラムをシステム サービス/デーモンに変換する必要があります。
他の手法も存在しますが、実際には、最初のプログラムが完了した後に 2 番目のプログラムを起動しません。次のいずれかです。
プログラムの 2 番目のコピーをすぐに起動します (まだ見つかっていない場合)。このプログラムは、「ランチャー」が実行されていることを検出できる間は何もしないように作成されています。1 つのプロセスが失われると、2 番目のプロセスが処理 (およびそのスタンバイ フェイルオーバーの起動) を担当します。
シャットダウン/クラッシュ イベントをキャプチャし、終了時にプログラムのコピーを起動します。これには、実際には 2 つのプログラムが同時に実行されますが、短時間です。これは一般的に行われます。しかし、新しいプロセスを起動する前にプログラムがクラッシュする可能性がある多くの方法があるため、技術的には健全ではありません。
Windows と Linux の両方で動作する単純な perl または python スクリプトを作成できます。
#!/usr/bin/perl
$N = 100;
for($i = 0; $i < $N; $i++){
system('/full/path/to/java -cp full_class_path my.class.Name');
}
このスクリプトは、Java ファイルで呼び出すか、コマンド ラインで実行できます。
Runtime.getRuntime().exec("perl script.pl")