外部プログラムの起動と監視

このQ&Aのポイント
  • 外部プログラムの起動と監視方法について
  • Javaを使用してサーバーのプログラム起動と監視を簡単にすることができるか
  • ブラウザを使用せずに通信プログラムを作成することで可能性があるか
回答を見る
  • ベストアンサー

外部プログラムの起動と監視

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

  • ken2r
  • お礼率88% (82/93)
  • Java
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • umaibo77
  • ベストアンサー率100% (1/1)
回答No.2

・ブラウザを使うやり方としては Java を使っても使わなくてもやり方は大きく違わないでしょう。起動したプロセスの状態を保持しておけるのでJava(Servletベース)は若干楽かもしれません。 ・ブラウザを使わず通信プログラムを作成する方法では、ソケットやスレッドが標準で使える点で Java は他の言語に比べて容易かと思います。 システム前提や安全性などいくらでも安全な方に凝れますが、Java+Webベースで実装する簡単なアイディアを以下に書いておきます。 1. 起動要求があればProcessBuilderなどでProcessを起動しstatic変数に格納します。 2. ログ要求があればログファイルの内容を送信します。 3. 多重起動の防止は、まだプロセスが起動されていないこと(static変数がnull)、または、そのプロセスが終了していること(Process#exitValue()で例外が発生しない)で判断できます。

ken2r
質問者

お礼

教えて頂いたJava+Webベースの方法をベースに検討してみたいと思います。 ご回答有難うございました。

その他の回答 (1)

  • localica
  • ベストアンサー率52% (202/385)
回答No.1

いろいろ手法はあるので、要件によってそれぞれのフェーズを分けて考えると良いのではないでしょうか。 ・プログラムの起動  →execとかで起動する ・プログラムの監視  →psとかプロセスの監視をする   tailとかでログの表示、画面をリフレッシュ   プロセスが起動していなければ起動画面(終了画面?)を表示 ・終了通知  →プログラム終了時に通知をするだけならプログラムに組み込んでおけば充分では?   単純に終了通知を発行する画面を作成するのでしょうか?   或いは「終了確認ボタン」みたいなもので条件を満たしていれば通知するのでしょうか?    Javaでも良いし、CGI+シェルでも十分可能だと思います。 ただし、セキュリティ的にきちんとする必要があると思いますけどね。

ken2r
質問者

お礼

ご回答有難うございました。

関連するQ&A

  • アプレットからサーバ側のプログラムを起動したいのですが…

    仕事でJavaを使うことになったのですが、プロジェクト員一同Java初心者で、必死にJavaを勉強していますが、以下のことで困っています。申し訳ありません。助けてください。 UNIXサーバ側の設定とかをいじるプログラムがあるのですが、それをアプレットにして、SEさんがリモートからでも操作出来るようにしろ、と言われました。 とりあえず、Javaアプレットからサーバ側(アプレットのクラスが置いてあるのと同じマシン)のCプログラムを起動し、その結果を受け取るようにしたいのですが、Java経験者に相談したら「アプレットにはセキュリティ上の問題があるのでCGIかServletを使わないと出来ない」と言われました。 では…とServletの勉強を初め、サーバー側にServletEngineをいれてみたのですが、 ServletはHTTPポートと違うポート(8000番とか)を開けてそこにアクセスしなくてはいけないようにみえます。それならクライアント側プログラムをアプレットにし、サーバ側プログラムとSocket通信で結び、サーバ側プログラムがCプログラムを起動、としたほうが楽そうですが、ひとつしかポートを開きたくないと言われたのです。 もしかして「アプレット+Servlet が アプレット+CGI相当」じゃなく「Servlet が アプレット+CGI相当」なのでServlet用のポートだけ開けとけばいいとかいうことでしょうか?  とか思っていたら、JNIでC言語のメソッドをJavaメソッド扱いするとかいう話も小耳に挟みました。それでできるのかしら? ・webポートだけを開いて ・サーバ側のCプログラムを起動してその結果を受け取る ・クライアントのマシンにあらかじめインストールしなくても、ブラウザからアクセスすると操作が対話的に出来るような ものを簡単に作ろうとしたら、一体何を勉強するべきなのでしょうか…。 Applet+CGI? Applet+Servlet? RMI? JNI…? 助けてください…(TT)

    • ベストアンサー
    • Java
  • JAVAで作るプログラムとは

    HPに使うJAVAスクリプトの勉強をしたく、JAVAとスクリプトは違う事を知らずにJAVAの通信教育を申し込んでしまいました。 JAVAはサーバー側のプログラミング言語で、 スクリプトはクライアント側のスクリプト言語でブラウザ上で動作する。 申し込んだものは仕方ないので頑張ってJAVAを理解したいと思うのですが、 ネット上のJAVA講座を見ると最初にJAVAをインストールするとあります。 これはJAVAを作成するソフトのようなものですか? JAVAで作るプログラムとはOSのようなものですか? JAVAでプログラムを作ってHPの更新やスクリプトが作成できるのですか? そもそもJAVAで作るプログラムとはどのように利用するのか、 プログラムの意味がよく分かりません。 JAVAとスクリプトの違いはもう良いのでプログラムについて 分かりやすく教えてください。

    • ベストアンサー
    • Java
  • ジャバスクリプトとCGIについて

    極く極く初心者です。 よく、ジャバスクリプトとかCGIを耳にします。 思うにジャバスクリプトはパソコンのブラウザ上でのみ動作する プログラムであり、一方、CGIはパソコンのブラウザ操作で遠方の サーバー内のCGIプログラムを駆動させて返事をブラウザに戻して もらう事と、アバウトの理解をしておりますが大体において正しい でしょうか?

  • VINE LINUXサーバーでCGIプログラムを動かしたい

    最近、デモ用の社内サーバーとして、VINE LINUX 2.1.5 の入ったPCをたてました。 クライアントはWindowsXPです。いくつかの社内用のプログラムを動かしています。 CGIプログラムを使用したいのですが、どのようにしたら良いでしょうか。 社内サーバーではなく、会社のホームページを表示させているサーバーは、レンタルサーバーで、CGIを使用しているので、CGIのプログラム自体は、自分でできます。 でも、CGIを使用する際の、サーバーの方の設定は分からないのですが。。 htmlを表示させ、CGIを動かしたみたのですが、CGIプログラムの内容がそのまま 表示されてしまいました。Perlをインストールするのではないかと思うのですが。。 だとしたら、VINE LINUX 2.1.5用のPerlのソフトはどこのサイトでダウンロードしてきたら良いでしょうか?

  • 別セッションでのWebシステムの起動方法が分かりません。

    別セッションでのWebシステムの起動方法が分かりません。 現在、Webで別のWebシステムが起動するメニュー画面を作成しています。 そのメニュー画面経由でWebシステムを複数立ち上げると、セッションが共有されてしまい、別ユーザとかでログインできません。(※javascriptのwindow.openを使用しています。) 別セッションで画面を起動するのはどうすれば良いでしょうか? 【環境】 サーバOS Red Hat Linux ソフトウェア:Apache 言語:php クライアントOS:Windows XP sp3 ブラウザ:IE8 ※ 「メニュー」<-「新規セッション」やレジストリの変更など、ユーザが操作するのではなく、 プログラムで制御したいです。 よろしくお願いします。

    • 締切済み
    • PHP
  • JAVASCRIPT禁止でのボタン&リンク制御について

    C言語、CGIでボタン制御について教えて下さい。  (apacheを使用してます。JAVA SCRIPTは、使用禁止です。) CGI画面からボタンを連続で3回押下した場合に 最初の1回目、または、3回目のPOSTだけを有効にしたい場合 どうすればできますか?アドバイスください。 下記の方法は自分なりに方法を考えました。  (1)セッション管理     1 CGI全てのPOST、GET指定に、       セッションID(ユニーク)を付加させる。         ID+time     問題点:        いつセッションIDの生成するのか?、        いつセッションIDをチェックするのか?、        いつセッションIDを削除するのか?        自分自身わかっていません。  (2)セマフォ制御     CGIのmain関数の開始と終了で排他制御をする。     問題点:セマフォ制御をCGI自身にしていいものなのか?      URL:セッション管理 http://memo.blogdns.net/session.html

    • 締切済み
    • CGI
  • JavaServletでJavaプログラムを実行するには

     JavaServletやJSPを用いて、Javaプログラムを実行するにはどうしたら良いのでしょうか?  理想としては、クライアントがブラウザを通してサーバにアクセスし、サーバ内のJavaプログラムを実行できるようにプログラミングしたいです。  クライアントが実行しているか確認できなくても、サーバで実行されていれば問題は解決できます。 参考のURLなどがあれば、とても助かります。 知っている方がいましたら御指導をお願いいたします。

    • ベストアンサー
    • Java
  • イントラネット(Windows)でCGIプログラムを動かしたいのですが

    イントラネット(Windows)でCGIプログラムを動かしたいのですが、うまくいきません。すでに、掲示板等のスクリプトは動いているのですが、CGIファイルの拡張子が.plになっています。どういうことか教えてください。

    • 締切済み
    • CGI
  • LinuxでJavaプログラムを起動

    LinuxでシェルからJavaのプログラムを起動する場合、 以下のように打つと思います。 java プログラム名 プログラム名のパスだけで 起動する方法はないのでしょうか? つまりCで書かれたコマンドのようにしたいのですが。 ./プログラム名

    • ベストアンサー
    • Java
  • Javaのプログラムから外部のソフトウェアやコマンドプロンプトを起動・

    Javaのプログラムから外部のソフトウェアやコマンドプロンプトを起動・操作する方法 インターネットではよく「プログラムランチャー」というものが出回っていますが、 Javaでは外部のプログラムを起動することは可能なのでしょうか? 自分で調べてインターネットブラウザを立ち上げることは可能だということがわかりました。 またコマンドプロンプトをJavaプログラムから呼び出し・操作することができれば解決できると思うのですが それは可能でしょうか? 方法を知っている方、また参考にできるサイトがありましたらよろしくお願いします。 その他にもこの言語ならできるなど何でもいいのでアドバイスお願いします。

    • ベストアンサー
    • Java