2

「catalina.sh start」を使用して tomcat を起動するシェル スクリプトがあります。このスクリプトは問題なく実行され、ssh セッションを終了しても tomcat が起動します。

Jschからこのスクリプトを呼び出そうとしています

shell = new JSch();
session = shell.getSession(user, host, SSH_DEFAULT_PORT);
session.setConfig(config);
session.setPassword(password);
session.connect();
commandChannel = (ChannelExec) session.openChannel("exec");
commandChannel.setCommand(command);
commandChannel.setPty(true);
commandChannel.connect();

これにより、スクリプトが正常に呼び出され、Tomcat が起動しますが、プロセスが終了するとすぐに、Tomcat にシャットダウン シグナルが送られ、シャットダウンします。setDaemonThread を使用しようとしましたが成功しませんでした。なぜこれが起こっているのですか?

更新: このスクリプトは、Tomcat の起動とは関係のない sudo 操作もいくつか実行するため、tty が必要です。ユーザーはパスワードを要求しないように sudoers で設定されているため、プロンプトは必要ありません。

4

2 に答える 2

3

コマンドがバックグラウンドで実行され、端末に接続されないようにするために、コマンドに pty を割り当てるべきではないと思います。commandChannel.setPty(false)代わりにするとどうなりますか?

編集:実際に sudo を実行し、スクリプトでパスワードを指定していますか? 代わりにルートとして実行するべきではありませんか? sudo を使用したい場合は、コマンドを実行した後、disownまたはnohup(説明)を使用して端末から切り離します。

于 2010-09-24T00:43:59.967 に答える
1

この問題は、セッションがすぐに終了した場合にのみ発生しますか? 実行するコマンドが別のプロセスを生成するようです。他のプロセスが生成されるのに十分な時間を与えていない可能性があります。

コマンドをnohupで実行するとどうなりますか?

于 2010-09-24T01:00:19.570 に答える