2012-03-08 18 views
0

JPSコマンドの出力からそのIDを抽出して、 "jps"コマンドを実行してすべてのJVMを表示し特定のJVMを強制終了するJavaプログラムを作成しました。私がubuntuターミナルで実行すると、うまくいきます。しかし、私は他のマシンからそのマシンをsshし、そこでこのプログラムを実行するためのスクリプトをbashに書いていました。Javaプログラムは実行されますが、bashスクリプトでは実行されません

ssh $host "java -cp daemon.jar JVMname;" 

ここで問題が発生します。

Exception in thread "main" java.io.IOException: Cannot run program "jps": error=2, No  such file or directory at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) at runtime.daemon.halt.main(halt.java:19) 
Caused by: java.io.IOException: error=2, No such file or directory at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.<init>(UNIXProcess.java:135) 
    at java.lang.ProcessImpl.start(ProcessImpl.java:130) 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1021) 

私は自分でマシンに行き、この同じコマンドを実行します。私はエグゼクティブ・ソリューションに切り替えたくない。

任意のアイデア おかげ

+2

これは、この質問に重複している(インタラクティブシェル):http://stackoverflow.com/questions/940533/how-do-i-set-path-such-that-ssh-userhost-command-works – nwinkler

+1

リモートサーバの '〜/。 bashrc'ファイル? – nwinkler

答えて

2

は、このJavaの問題自体ではない、それはどちらの場合も、ご使用の環境の違いにダウンします。具体的には、対話的に実行すると、$PATH変数にはjpsのディレクトリが含まれますが、後者の場合はSSH経由ではありません。

は、リモートマシン上の .bash_profile.bashrcファイルを見てください - 私はパスが単一を実行し、そのようなあなたのSSH呼び出しとして(非ログインシェルのために実行されていない .bash_profileファイルに設定されます疑いコマンド)。 .bashrcにパスを正しく設定すると、現在の呼び出しが機能し始めます。

(他のほとんどのシェルがログインシェルと非ログインシェルの初期化ファイルの間で同様の区別を持っているけれども、これは、あなたがシェルのためのbashを使っている前提としています。)

+0

返事をありがとう。 .bashrcは設定されていますが、そこには.bash_profileが設定されていません。私はそれが何かをするとは確信していません。しかし、あなたは正しく指摘しました。 JPS:私はこの -bash-3.2 $ sshのコンピュート-0-8 "PWD" /export/home2/shujaat.hussain -bash-3.2 $ sshをコンピュート-0-8 "JPS" のbashを実行しましたコマンドが見つかりませんでした。 したがって、jpsは実行されませんでしたが、sshedはうまく動作します。何が欠けている? – shujaat

+2

私はリンクされた質問を見て、どのファイルが非対話型シェル(ssh)から実行されるかを説明します:http://stackoverflow.com/questions/940533/how-do-i-set-path-such- that-ssh-userhost-command-works – nwinkler

+0

ありがとう@nwinkler。私はあなたが与えたリンクによって問題を把握していますが、私はまだ少し苦労しています。私はそのパスを非反復的にエコーし、$ PATHは私が対話型端末で作業するのと同じではありませんでした。通常のSSHでは、そのパスがはるかに長いことがわかります。どのように全体のパスをエクスポートすることができる任意のアイデア。問題は "jps"が全パスがエクスポートされない場合に実行できないことです。これは、従来のsshの場合にのみ起こっています。ありがとう – shujaat

関連する問題