- - PR -
外部コマンドの実行について
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-03-29 14:42
みーちくと申します。
Javaからshを実行するために、メソッドを作成致しました。 for文で4回実行するのですが、最初の1回目の処理は1秒位で終了するのですが、 残り3回の処理は平均で46秒位かかってしまいます。 なにが、原因なのかわかりません。 【実行環境】 RedHat7.2 java version "1.4.1_01" 【時間】 終了コード: 0 検索ディレクトリ: /raid1/dtp/content/a/a00/a0002/a0002-00-0 終了時間:Mon Mar 29 14:03:41 JST 2004 終了コード: 0 検索ディレクトリ: /raid2/dtp/archive/a/a00/a0002/a0002-00-0 終了時間:Mon Mar 29 14:04:27 JST 2004 終了コード: 0 検索ディレクトリ: /raid1/dtp/content/a/a00/a0002/a0002-00-0 終了時間:Mon Mar 29 14:05:13 JST 2004 終了コード: 0 検索ディレクトリ: /raid2/dtp/archive/a/a00/a0002/a0002-00-0 終了時間:Mon Mar 29 14:05:59 JST 2004
皆様、宜しくお願い致します。 | ||||
|
投稿日時: 2004-03-30 10:21
unibon です。こんにちわ。
あまりよくは分かりませんが、原因の可能性を2つ思いつきました。 (1) 1回目の処理が1秒では終わっていない可能性があります。単に起動が完了しただけで、処理は完了していないのかもしれません。そして2回目の処理と競合してしまっているのではないでしょうか。Java から exec したプロセスがさらに別のプロセスを exec しているということはないでしょうか。 (2) プロセスの exec 絡みの問題の多くは、標準出力(や標準入力、標準エラー出力)などのハンドリング絡みです。外部プロセスがなにか、標準出力や標準エラー出力に出力しているでしょうか。あまり量が多いと、外部プロセスを起動した Java の側で読み出さないとブロックしてしまうことがあります。 | ||||
|
投稿日時: 2004-03-30 12:21
unibonさん
返信ありがとうございます。 >(1) 1回目の処理が1秒では終わっていない可能性があります。 >単に起動が完了しただけで、処理は完了していないのかもしれません。 >そして2回目の処理と競合してしまっているのではないでしょうか。 >Java から exec したプロセスがさらに別のプロセスを exec >しているということはないでしょうか。 もう少し、詳しい説明をしますと、shのプログラムはあるJavaのファイルを起動しております。 そのJavaのファイルはディレクトリ情報の検索をし、HTMLのタグを標準出力しております。 sh側ではその標準出力したものを、リダイレクトしております。 Linux上でプロセスの実行を見ながら処理の流れを見ていたのですが、 1回目のプロセスはちゃんと正常に終了しておりました。 2回目以降のプロセスはやはり、46秒位かかっておりました。 [処理の流れ] Aプログラムよりshを起動 ↓ shよりBプログラムを起動 ↓ Bプログラムよりディレクトリ情報を検索し、HTMLタグを標準出力 ↓ shより、標準出力したものをリダイレクト ↓ Aプログラムより終了コードを取得 >(2) プロセスの exec 絡みの問題の多くは、標準出力(や標準入力、標準エラー出力)などの >ハンドリング絡みです。 >外部プロセスがなにか、標準出力や標準エラー出力に出力しているでしょうか。 >あまり量が多いと、外部プロセスを起動した Java の側で読み出さないと >ブロックしてしまうことがあります。 [処理の流れ]のBプログラムで、ディレクトリ情報をhtmlタグ付きで標準出力しております。 ディレクトリによっては、かなり標準出力の量が多くなっております。 ここら変があやしいのでしょうか。 また、pr.waitFor(); でコマンドの終了を待って、int end = pr.exitValue(); で 終了コードを取得しているのですが、この終了コードは当てにはならないのでしょうか。 プロセスを見る限り、終了しているのみたいなんですが。 宜しくお願い致します。 | ||||
|
投稿日時: 2004-03-31 01:31
勘なんで、外してたらごめんなさい m(__)m
Javaと無関係に、単にBプログラムを繰り返し実行した場合に遅くなるという 可能性は無いですか? | ||||
1
