Perlのプログラム二重起動について

このQ&Aのポイント
  • Perlでのプログラム二重起動について疑問があります。あるイレギュラーな出来事が起こり、処理時間が延びた場合に、タスクスケジューラーによって二重に起動されるのか、それとも予約されるのかを知りたいです。
  • あるイレギュラーな出来事が起こり、プログラムの処理時間が延びた場合に、タスクスケジューラーによって二重に起動されるのか、それとも予約されるのかを教えてください。
  • Perlのプログラムがタスクスケジューラーによって定期的に起動される場合、処理時間が延びた場合に二重に起動されるのか、それとも予約されるのかについて教えてください。
回答を見る
  • ベストアンサー

Perl のプログラム二重起動について

Perlでの二重起動?についての疑問があるので質問いたします。 ============================ (状況) 1)Aというプログラムが存在し、そのAというプログラムはタスクスケジューラーによって10分毎に起動しています。 2)Aプログラムは全体の処理が終わるまでに通常5分の時間がかかります。処理が終わればexitで終わります。 (ちなみにAプログラムはファイル書き込みなどの排他処理が必要なフローはありません) ============================ というのをふまえ、疑問点が出てきたので質問します。 例えば、あるイレギュラーな出来事が起こり、Aプログラムの処理時間が15分に伸びてしまいました。 しかし、タスクスケジューラーは10分間隔でAプログラムを起動させます。 このとき、オーバーした5分間だけAプログラムは二重に起動することになります。           0   5    10 15 20 最初のAプログラム ===============  次のAプログラム           ========== この場合、windows7上のActivePerlは、どんな動きをするのでしょうか? 予約みたいな形になり、最初のAプログラムが終わってから次のAプログラムが動くのでしょうか? それとも二重起動するのでしょうか?

  • Perl
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

一般的なプログラムの動作として、スクリプト側で排他処理をしてないのであれば、「10分間隔で起動」されれば「10分おきに動作する(場合によっては重複して同時実行する)」だけです。 Perl処理系(ActivePerlなど)が勝手に「二重起動させないようにする」ようなことはありません。(用途によっては、並列で同時に複数実行させたい場合もありますので、そんな勝手なことをされては困ります) 同時実行させたくない場合は、スクリプト側で排他処理を実装してください。

nakisan2011_12
質問者

お礼

ありがとうございました。 疑問が解決しました!!

関連するQ&A

  • Perlの多重起動を禁止したい

    main_01.plというプログラムがあります。 これは10分毎にバッチファイルから起動の命令が下ります。ただしプログラムの処理によっては10分以上かかることがあります。 この時、main_01.pl がすでに起動していた場合、main_01.pl はすぐに exit; になるように組みたいのです。僕が考えた方法は、あるテキストファイルにロックをかけ、そのファイルがロック中であるならばプログラムは処理を行わずすぐに終了する、といった感じです。 =============================== # タイムアウト処理 my $timeout = 5; # 排他処理 my $lockfile="lock.txt"; # 多重起動停止 (ここに $lockfile が書き込めなかったらmain_01.plは別に起動していることになるので起動しない。) # 排他処理開始 open(LOCK,"$lockfile"); flock(LOCK,2); # 処理開始 eval { # タイムアウト local $SIG{ALRM} = sub { die "alarm\n" }; alarm( $timeout ); # プログラムスタート print "\n◆スタート\n\n"; sleep(4); # プログラム終了 print "\n◆終わりました。\n\n"; }; # タイムアウト処理 if ( $@ ) { # タイムアウト print "\nタイムアウトしました。TIMEOUT= $timeout \n"; } else { # タイムアウトせずに正常終了 print "\n正常終了しました。\n"; } # 排他処理終了 close(LOCK); exit;

    • ベストアンサー
    • Perl
  • 二重起動禁止にする理由とは

    プログラム(アプリケーション)の二重起動を禁止にする処理があるようですが、禁止にしなければならない理由とは、どういったものがあるのでしょうか?

  • WIN2000でのプログラム起動の制御

    WIN2000で、OS起動時に自動でプログラムを起動させたいのですが、 同時ではなく、最初にAというプログラムを起動し、1分経ってからBという プログラムを起動したいと思います。 フリーソフトは使わずに、なるべく簡単な方法で対処したいのですが なにかいい方法は無いでしょうか。

  • バッチファイルで多重起動を防ぐ

    とあるプログラムを定期的に バッチファイルで起動させています。 プログラムは処理が完了すると自動で終了させています。 ただ、時間の間隔はさほど大きくないため、 先だっての起動プログラムが動いているときに 次のタスクにて2重でプログラムが動き出す可能性が出てきました。 バッチファイル上で、その名称のプログラムが動いていないか確認し、 動いていた場合は起動しないようにできないでしょうか?

  • 【プログラム】オブジェクト指向ポリモーフィズムとは

    一つの同じプログラム(モジュール)をあらゆる場所で呼び出して使いまわすメリットは そのプログラムを何かしら変更する時、何回も何回もいろいろな場所を変更しなくても 一つ変更すればそのプログラムを呼び出している部分 全てに反映されるというところですよね? 逆に、一つの同じプログラムを使いまわすデメリットは、 あらゆる場所で呼び出してる故に、少しでも変更があれば そのプログラムを呼び出している部分すべてに影響を与えてしまい イレギュラーな処理を入れにくいというところですよね? このデメリットをうまくなくしたのが ポリモーフィズムということでいいんですか? 処理を細分化して、プログラムを使いまわすことは使いまわすけども Aの処理 → B-1の処理 → Cの処理 Aの処理 → B-2の処理 → Cの処理 のようにして、差し替え可能な状態にしておき イレギュラーが発生しても ある程度まるごと とっかえなくてもいいようにしておく。 こういうことがポリモーフィズムでということでいいんでしょうか?

    • 締切済み
    • PHP
  • 外部プログラムの起動と監視

    イントラネット内のLinuxサーバにあるプログラムをクライアントPCのブラウザから 起動しそのプログラムが出力するログを一定周期でブラウザに表示して プログラム終了時にはユーザーに知らせたい。 また、プログラムは同時起動が不可能なものとしたい。 PHPなどのCGIスクリプトでは、ブラウザとのセッションが切れてしまえば サーバー側のプログラムは走りっぱなしになってしまいます。 外部プログラムの監視や排他制御を考えると非常に複雑な処理になることが 予想されます。 そこで質問なのですが、サーバーのプログラムの起動と監視をクライアントPCの ブラウザから行いたいのですがJavaの技術を使うことで容易になりますか? また、ブラウザを使わない通信プログラムを作成すれば可能となりますか? 詳しい方がいましたら教えて下さい。宜しくお願い致します。

    • ベストアンサー
    • Java
  • プログラムの起源について教えてください

    全然困っているわけではなくただの好奇心なので、時間があるから教えてもいいよ!という方にお聞きしたいです。 ど素人なので、できるだけ易しい感じで教えていただけると助かります。 最近コンピュータのプログラムに興味を持っています。 (HTMLくらいしかわかりませんが…) それで何かソフトとか作れたら楽しいだろうなと思ってプログラムについて調べてたりしたのですが、ふとした疑問がわきました。 Windowsの開発言語って何だろう(知ってる方がいたらこれも是非)…いや、そもそも一番最初のプログラムってどうやってやったんだろう?って。 Wikipediaで見たところ、世界で最初のプログラム言語は1941年にドイツで開発されたプランカルキュールという言語みたいなのですが、その世界初のプログラム言語を開発するのに何らかのプログラム言語を使用したのであればそれが最初?などと考えてしまいます。。。 ひよこが先かニワトリが先か?みたいな話ですが… コンピュータの電源をいれたら何らかの処理がなされて起動するといった処理をどうやって作ったのだろうか?と疑問に感じてしまいます。 電卓とかの計算プログラムの方が先なのかも知れないですが… そこら辺に詳しい方がいらっしゃったら是非教えてください。

  • perlの処理を遅くしたい

    CGI初心者です。わかる方教えてください。 少々古いですがactiveperl apache1.3.12を利用してperlプログラムを自宅のみで使うCGIプログラムをWINDOWS上で起動しています。 処理が長くまた同時に複数の処理をperlで処理します。ブラウザ送信ボタンよりCGIを実行してperl.exeを合計5つぐらい同時に起動します。 タスクマネージャーのプロセスの優先度の設定は実行当初「普通」になっていますが,これを実行当初から「低」にしたいと思っていますが やり方がよくわかりません。CGIの書き方,apacheの設定,ショートカットの書き方でできるんではないかと思っていますが,ご存じの方教えてください。OSはWINXPです。宜しくお願いします。

  • 一連のプログラムを一定間隔で順番に起動する動作を繰り返すソフト

    一連のプログラムかバッチを一定の間隔で順番に起動し、一通り起動しおわったら最初に戻って同じことを繰り返すソフトを探しています。 例えばプログラム1、プログラム2、プログラム3と3つのプログラムがあり10分間隔で順に起動。プログラム3を起動したら次に起動するのはプログラム1に戻るといった具合です。 よろしくお願いします。

  • Perlプログラム上でアラートを表示

    現在、Perlにてチェックプログラム(チェック内容は省かせていただきます)を作っています。 もともとはweb上で「登録」をクリックすると以下のような csh で記述されたcgiが実行され、 ------------------------------ #!/usr/bin/csh echo "Content-type: text/html" echo "" ~中略~ ./既存プログラムA.exe ------------------------------ 最終的に「既存プログラムA.exe」が起動するというような物で、今回この「既存プログラムA.exe」が起動される直前にチェックプログラムを実行するというものです。 前置きはこのような感じで、教えていただきたい内容は、 チェックプログラム内の記述に以下のようなチェック項目があります。 ------------------------------ if(!(-e $CIRCUIT)){ print"END"; exit(0); } ------------------------------ 「$CIRCUIT」というフォルダが存在するか否か、存在すれば次のチェック項目へ、存在しなければ処理終了というような単純な構文なのですが、 このif文内に、"そのようなフォルダはありません"アラートを表示させるような記述を追加することは可能でしょうか? サンプルURLや情報等お持ちの方いらっしゃいましたら、 よろしくお願いいたします。

    • ベストアンサー
    • CGI

専門家に質問してみよう