1

関数がstartあり、それをリモート サイトにあるスクリプトに配置します。関数のコードを以下に示します。

function start() {
    cd $install_dir

    mkdir -p logs

    export classpath=$classpath:$target_jar
    nohup java -Xms2048m -Xmx8192m -server -XX:PermSize=128m -XX:MaxPermSize=256m \
        -XX:+PrintGCDetails -XX:+PrintGCDateStamps \
        -XX:-OmitStackTraceInFastThrow \
        -cp $target_jar $main_class >> logs/jvm.log 2>&1 &

    echo "Service started, see logs"
}

そして、その関数を ssh を使用して呼び出そうとするとssh xxx@host "./service.sh start"、Java プロセスを開始できません。「サービスが開始されました。ログを参照してください」という応答メッセージしか表示されず、エラーはありません。jvm.log も空です。私のスクリプトは実行されたようですが、ターゲットの Java プロセスは実行されませんでした。

そのリモートサイトにログオンして実行する./service.sh startと、動作します。

4

1 に答える 1

0

サービスを手動で実行できたので、ssh とスクリプトの部分は問題ありません。

うまくいかないのは環境です。たとえば、絶対パスなしで java を参照しました。したがって、別のバージョンを実行している可能性があります。また、共有ライブラリをロードするための変数 (LD_LIBRARY_PATH) が異なる値を持っている可能性もあります。

最後に、ファイルの許可を確認します

于 2013-03-26T06:25:35.950 に答える