- PR -

JavaからLinuxマシン内のプロセスを操作する方法について

1
投稿者投稿内容
ごんた
会議室デビュー日: 2005/06/27
投稿数: 18
投稿日時: 2007-03-15 20:35
質問要点:
Linuxマシン上でJavaプログラムからプロセス操作を行う為のより良い方法をご教授下さい。

状況:
現在、RedHatLinuxが搭載されたマシン上でJavaプログラムを動かし、
「任意のプロセスの稼働状況の調査」「任意のプロセスの起動・停止」等を試みています。

「プロセスの稼動有無調査」の場合のロジックとしては、
@Runtime.execを使用して、”ps -ax |grep プロセス名”のコマンドを起動
A@の結果を編集し、プロセスの存在有無を確認
というやり方を用いており、
「プロセスの停止」の場合は、上記@の結果を元にプロセスIDを取得し、killコマンドを実行
しています。

問題点:
上記方法でも何とか目的は達成出来そうなのですが、JavaからLinuxコマンドを実行する以外で
Javaに用意されたClassの利用等で「プロセスの起動有無確認」「プロセスIDの取得」といった
処理は出来ないのでしょうか?
Java開発が初めてで知識が浅い為の発言なのかもしれませんが、どなたかアドバイスをお願い
いたします。

カーニー
ぬし
会議室デビュー日: 2003/09/04
投稿数: 358
お住まい・勤務地: 東京
投稿日時: 2007-03-15 20:54
私がその要求をもらったら、やはり同じようなアプローチを取ると思います。
妥当なソリューションではないでしょうか。
ひら
ぬし
会議室デビュー日: 2005/03/04
投稿数: 260
投稿日時: 2007-03-15 21:27
私が無知なのかもしれませんが、私もごんたさんと同じ方法をとります。
Javaという言語は、Cの影響を受けていますが、Cが進化した訳ではありません。
マルチプラットフォームで動作するよう設計されているため、OSに直接かかわる
部分はむしろ機能は少なくなっています。

それを割り切って、アプリケーション開発言語として使うのならば使いやすい
言語です。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-03-16 01:36
引用:

ごんたさんの書き込み (2007-03-15 20:35) より:
現在、RedHatLinuxが搭載されたマシン上でJavaプログラムを動かし、
「任意のプロセスの稼働状況の調査」「任意のプロセスの起動・停止」等を試みています。



監視対象のプロセスが任意でないのならば、
Runtime#exec()の戻り値のProcessから、
waitFor()/destroy()すればできますね。

この手の要件は、起動停止+watchdog的な死活監視が
殆どだと思うので、それで済むか確認されてみては?

[ メッセージ編集済み 編集者: あしゅ 編集日時 2007-03-16 01:36 ]
ごんた
会議室デビュー日: 2005/06/27
投稿数: 18
投稿日時: 2007-03-16 13:41
ごんたです。お返事下さった皆様、ありがとうございます。

toカーニー様

 ありがとうございます、安心しました。「普通はどうしてんだろうな」と不安だった
 もので。

toひら様

 ありがとうございます。元々Cをやっていた関係で、ちょっと勘違いしていました。
 自由度が高い分、お膳立ては少ないという訳なんですね。

toあしゅ様

 アドバイスありがとうございました。しかし
 残念ながら監視対象のプロセスは任意です。なので、やはり一度psを実行して、
 その結果からプロセス名・IDを探すしかないか、と思っております。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

ところで、昨日の投稿と関係しているのですが、私が書いた通りjavaからps+grepで
プロセス名検索を行ったところ、不可思議な現象が発生しました。

出来れば原因を探りたく考えておりますので、よろしければそちらもご一読お願い
致します(スレッドの問題点が変わりますので、別スレッドを立てます)。
1

スキルアップ/キャリアアップ(JOB@IT)