javaアプリケーションからcatコマンドを実行し、その結果を取得したいのですが、うまくいきません。runtime.exec()実行中にエラーとなります。

String cmd = "cat error.log; echo $status";
Runtime runtime = Runtime.getRuntime;
Process process = runtime.exec(cmd);

rshを使うとOKです。
"rsh localhost cat error.log; echo $status"

shを使うとNGです。
"sh -c cat error.log; echo $status"
"sh -c \"cat error.log\"; echo $status"

ターミナルからは上記で内容取得、および、結果取得はできるのですが。
環境は、UNIX JDK1.2.1です。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

多分、実行しているシェルがなんであるか、が分かっていないことが原因


でしょう。

$status って、csh 系のシェルにおいて最近のコマンドの終了状態を格納
しておくシェル変数ですから。

実行結果を取得したいだけであれば、パイプを使わなくとも Process に
該当するメソッドがあります。

こんな感じ。

Process proc = Runtime.getRuntime().exec(new String("cat error.log"));
proc.waitFor();
System.out.println(proc.exitValue());
    • good
    • 0
この回答へのお礼

ありがとうございます。
そのようですね。
いろんなことを一緒に考えてしまいました。

String[] cmd = {"rsh","hostname","cat filename;echo $status"};
Process proc = Runtime.getRuntime().exec(cmd);
結果:出力の最終行

String[] cmd = {"cat","filename"};
Process proc = Runtime.getRuntime().exec(cmd);
int res = proc.exitValue();
結果:res

ですね。

お礼日時:2001/10/08 21:32

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qコマンド一覧を取得するには?

「実行可能なコマンド一覧を出力する」コマンドはありますでしょうか?

個人的には,「~wm」という文字列で終わるコマンドを調べたいのですが,そのためにコマンド一覧からgrepで検索しようと思いました.

よろしくお願いいたします.

Aベストアンサー

$PATHのなかから実行可能なものをリストするスクリプトです。
ちなみに私の場合wmで終わるものは、
/usr/bin/pbmtocmuwm
/usr/bin/gnome-wm
/usr/bin/dh_installwm
でした。
-- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< --
#! /bin/sh
echo $PATH |
awk -F: '
{
for (i = 1; i <= NF; i++) {
printf("find %s -type f -ls\n", $i);
}
}' | sh |
awk '
$3 ~ /x/ {
print $NF
}'

Qvar $i = hoge; $の意味について

初心者の質問ですみませんが教えて下さい。
jqueryのソースで以下のソースがあったのですが、
var i = ではなくvar $i にしないといけない理由ってありますか?

var $i = $( '#img' ); // 対象の img タグを選択
var img = new Image();
img.src = $i.attr('src');

Aベストアンサー

こんにちは。

$iにしなくてはいけない理由はないと思います。

多分$('#img')でjQueryのオブジェクトを取得してるので$をつけているんだと思います。
(私もjQueryで取得した要素については$を付けるようにしています)
ようするにわかりやすいようにです。

QMS-DOSで使えるコマンド一覧を表示するコマンド

そのコマンドを入力すれば、MS-DOS内で使える
コマンド一覧が表示されるコマンドを知りたいのですが
どなたかご存知の方、いらっしゃいませんか?
UNIXで言うところのmanコマンドに当たるものです。

Aベストアンサー

Windowsカテゴリなので、MS-DOSのことじゃなくて、WindowsのDOSプロンプトとか、コマンドプロンプト内で使えるコマンドのことだと思います。

1) どんなコマンドが使えるか
Win9x,Me系: \windows\command のフォルダに主なコマンドがあります
Win2K,XP系: help で主なコマンドが出ます
どちらも管理系のコマンド等は別のところにあったりします。

unixでもmanコマンドでは「使えるコマンド一覧」はわかりません。網羅的に調べるには PATHにあるディレクトリをひとつずつ ls して調べるしかないです。Windowsでも同じで、PATHにあるディレクトリをひとつずつ調べるしかないのですが、GUIでしか使えないコマンドも混じっています。アイコンの絵がついているものはおおむねGUIですが、逆は真ではないので調べるのは難しいです。

上記の主なコマンド以外も含めたプロンプトで使えるコマンドを網羅的に知りたいなら書籍を見るのが早道でしょう。

2)unix の man 相当機能
上記主要コマンドについては、コマンド名 /? で使い方が出ますが、それ以外の管理系コマンドでは出ないことが多いです。Webか書籍で調べるしかないです。

Windowsカテゴリなので、MS-DOSのことじゃなくて、WindowsのDOSプロンプトとか、コマンドプロンプト内で使えるコマンドのことだと思います。

1) どんなコマンドが使えるか
Win9x,Me系: \windows\command のフォルダに主なコマンドがあります
Win2K,XP系: help で主なコマンドが出ます
どちらも管理系のコマンド等は別のところにあったりします。

unixでもmanコマンドでは「使えるコマンド一覧」はわかりません。網羅的に調べるには PATHにあるディレクトリをひとつずつ ls して調べるしかないです。Win...続きを読む

Q$("body").height();と$("body").css("

$("body").height();と$("body").css("height");の違い?

jqueryにてbodyの高さを取得し、その数値に適当な値を足すなり引くなりして、他の要素の高さとして指定するということがやりたかったので

$(function() {
var bodyheight = $("body").css("height");
var mainheight = bodyheight-230;
$("#main").css("height",mainheight);
});

とした所、bodyの高さは取得できたのですが、その後が駄目だったので

$(function() {
var bodyheight = $("body").height();
var mainheight = bodyheight-230;
$("#main").height(mainheight);
});

と変更したところ、期待通りに動きました。

この2つの違いを、どなたかお分かりになる方にご教授いただきたいです。

Aベストアンサー

#1です。ちょっと考えが足らなかった。
css('height')だと読み出しも単位付だから設定の前に演算でNGでしたね。

というか、こういう演算目的のために常にピクセル単位で読み出したり設定できるjQuery.heightやjQuery.widthが用意されているのでしょうね。

Qコマンドプロンプトを使ってネットワークの一覧を表示

コマンドプロンプトを使ってネットワークの一覧を表示する方法
LAN内のPCやプリンタ、ネットワーク機器のIPアドレスを
調べて一覧にするコマンドプロンプトのコマンドはありませんか?
固定IPかDHCPから割り振られたIPか、わかると更に嬉しいです。

なければそういった機能があるソフトでもいいので
ご紹介頂けると幸いです。

Aベストアンサー

こちら参考に
★lan内のpcをipアドレスで一覧表示したい | OKWave
http://oshiete.goo.ne.jp/qa/5829669.html

QRuntime.execについての質問

こんにちは、Makotoと申します。
Runtime.execを使って、ディレクトリを作成する
プログラムを作っているのですが、下記のプログラムで
ディレクトリは作成されるのですが、コマンドプロンプト画面が
立ち上がったままになってしまいます。閉じようと思い、8行目でexitコマンド
を発行してみたのですが、うまくいきませんでした。このウィンドウを閉じる
方法はあるのでしょうか?


1:public class test{
2:  public static void main(String[] args) throws Exception{
3:    Runtime rt = Runtime.getRuntime();
4:    Process pr;
5:    try {
6:      Process proc1 = rt.exec("cmd /C start /MIN
7:               mkdir c:\\\poi\\test");
8:      proc1 = rt.exec("command.com, /, exit");
9:    } catch (java.io.IOException e) {
10:     System.err.println(e);
11:     System.exit(1);
12:    }
13:
14: }
15:}

こんにちは、Makotoと申します。
Runtime.execを使って、ディレクトリを作成する
プログラムを作っているのですが、下記のプログラムで
ディレクトリは作成されるのですが、コマンドプロンプト画面が
立ち上がったままになってしまいます。閉じようと思い、8行目でexitコマンド
を発行してみたのですが、うまくいきませんでした。このウィンドウを閉じる
方法はあるのでしょうか?


1:public class test{
2:  public static void main(String[] args) throws Exception{
3:    Runtime r...続きを読む

Aベストアンサー

k-makotoさんが実際にやりたい事がよく分からないので確認ですが、
・ディレクトリを作成する方法が知りたい。
・Runtime.execで起動したサブプロセスを終了させる方法が知りたい。
どちらなのでしょう?

ディレクトリを作成するだけであれば、わざわざプロセス起動しなくても、File#mkdirでよいと思います。

Runtime.execで起動したサブプロセスを終了させるには、
戻り値から取得できるProcessオブジェクトの、destroyを実行すると、
サブプロセスは終了できます。

ただし、サンプルプログラムは妙なことをしています。
Javaプログラムから、サブプロセスとしてcmd.exeを実行しています。
そしてそのcmd.exeからstartコマンドを起動しています。
startコマンドは、実行するためにウィンドウを開くためのコマンドです。

まずは、cmdとstartのヘルプを見て、動作を確認したほうがよいと思います。

Qls コマンドで *.jpg と *.JPG の画像一覧を出したい

ls コマンドいっぱつで、
*.jpg または *.JPG の画像一覧を出したいのですが
どう引数を指定したらよいでしょうか..??

Aベストアンサー

ls *.[jJ][pP][gG]

でどうですか?

Qimportするには java.io.*; import org.apache.log4j.*;

EclipseでJavaの開発をしています。
import java.io.*;
import org.apache.log4j.*;
がエラーになります。
多分ライブラリーに入れる必要があるのだと思いますが、その方法について
教えて下さい。宜しくお願い致します。

Aベストアンサー

プロジェクトフォルダを右クリック→「ビルド・パス」→「ビルド・パスの構成」
あるいはプロジェクトフォルダを右クリック→「プロパティ」→「Javaのビルド・パス」

で、ライブラリがプロジェクトフォルダ配下に存在しているなら「Jarの追加」
プロジェクトフォルダ以外の場所にあるなら「外部Jarの追加」で追加できます。

ちなみにjava.ioはJ2SEに含まれているので(「JREシステムライブラリ」があるはずなので)
追加しなくても良いです。

Qコマンドプロンプトの操作一覧

コマンドプロンプトでできる操作一覧のようなサイト、もしくは書籍を探しています。

たとえば、ipconfig /renew でIPアドレス再取得 …など

今一番知りたいのは、回線速度が安定して通信できているかを
先日、業者さんがきて、PCでやってたのが知りたいのですが
こんごもいろいろ調べて行きたいので
わかりやすい一覧のサイトがあればと思います。
よろしくお願いいたします。

Aベストアンサー

業者さんがカッコよく仕事してる姿見てると
ホント、惚れますよね~~(笑)

んでまあ、つい最近の記事(これから追加されていく)なんですけど、
ネットワーク関係ならこのへん読むといいかもですね~。

で、IT Proなんですけど、ひじょーに為になるのでぜひブックマーク
しておいてください。毎日読んでると結構勉強になりますよ~~。


っちゅうわけで、以上な感じで。


*****************************************

ネットワーク・コマンド道場

目次

日経NETWORK

 ネットワーク技術者を目指す人なら,ぜひ身につけておきたい
コマンドの使い方を解説していきます。コマンドによって何ができ,
実行結果から何が読み取れるか,現場で役立つ実践的な知識
が身につきます。(2006年02月06日)

http://itpro.nikkeibp.co.jp/article/COLUMN/20060125/227900/

↑ネットワーク技術者を目指してなくても、読んだら面白い…
と思うよ。はい。


結果を読めなきゃ意味ないから、全部読んでね☆

業者さんがカッコよく仕事してる姿見てると
ホント、惚れますよね~~(笑)

んでまあ、つい最近の記事(これから追加されていく)なんですけど、
ネットワーク関係ならこのへん読むといいかもですね~。

で、IT Proなんですけど、ひじょーに為になるのでぜひブックマーク
しておいてください。毎日読んでると結構勉強になりますよ~~。


っちゅうわけで、以上な感じで。


*****************************************

ネットワーク・コマンド道場

目次

日経NETWORK

 ネットワーク...続きを読む

QTom Cat でException Errorが出ます

Tomcat・Javascript・JavaでWebシステムにチャレンジしています。尚、素人です。具体的に質問出来るかとういと出来ません。何かヒントになることをお教えください。
Exceptionエラーになります。Caterina.Logをみると以下の通りです。
文面からはJavaのパスがないか、C:\servlet-sample\databasetestの定義が妥当でないといるように思います。
後者は練習問題で作ったもので関係ないのです。Xml等消してみましたが駄目です。
訳の分からない質問で申し訳ありませんが宜しく御願い致します。
17 。.セ. 2553 3:56:26 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\Tomcat60\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;D:\Hourensou\AppServ\MySQL\bin;C:\Program Files\PC Connectivity Solution\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\
17 。.セ. 2553 3:56:27 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
17 。.セ. 2553 3:56:27 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1799 ms
17 。.セ. 2553 3:56:27 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
17 。.セ. 2553 3:56:27 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.20
17 。.セ. 2553 3:56:27 org.apache.catalina.core.StandardContext resourcesStart
SEVERE: Error starting static Resources
java.lang.IllegalArgumentException: Document base C:\servlet-sample\databasetest does not exist or is not a readable directory
at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:142)
at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4048)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4217)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:630)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:556)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:491)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1206)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:314)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

Tomcat・Javascript・JavaでWebシステムにチャレンジしています。尚、素人です。具体的に質問出来るかとういと出来ません。何かヒントになることをお教えください。
Exceptionエラーになります。Caterina.Logをみると以下の通りです。
文面からはJavaのパスがないか、C:\servlet-sample\databasetestの定義が妥当でないといるように思います。
後者は練習問題で作ったもので関係ないのです。Xml等消してみましたが駄目です。
訳の分からない質問で申し訳ありませんが宜しく御願い致します。
17 。.セ. 2553 3...続きを読む

Aベストアンサー

エラーメッセージのとおり、
C:\servlet-sample\databasetestが
・存在しないか
・ディレクトリではないか
・読めないか(Tomcatの実行ユーザーが読めない)


人気Q&Aランキング

おすすめ情報