2

jschと'nohupwith&'コマンドを使用してバックグラウンドでプログラムを開始したいと思います。これは私のコードです:

    String command = "sudo nohup -jar [path to my jar] &";
    try{
        java.util.Properties config = new java.util.Properties();
        config.put("StrictHostKeyChecking", "no");
        JSch jsch = new JSch();
        Session session = jsch.getSession(user, host, 22);
        session.setPassword(password);
        session.setConfig(config);
        session.connect();
        System.out.println("Connected");

        Channel channel = session.openChannel("exec");
        ((ChannelExec)channel).setPty(true);
        ((ChannelExec)channel).setCommand(command);
        channel.setInputStream(null);
        ((ChannelExec)channel).setErrStream(System.err);

        InputStream in = channel.getInputStream();
        channel.connect(); 
        byte[] tmp = new byte[1024];
        while (true) {
            while (in.available() > 0) {
                int i = in.read(tmp, 0, 1024);
                if (i < 0) {
                    break;
                }
                System.out.print(new String(tmp, 0, i));
            }

            if (channel.isClosed()) {
                System.out.println("exit-status: " + channel.getExitStatus());
                break;
            }

            try {
                Thread.sleep(1000);
            } catch (Exception ee) {
            }
        }
        channel.disconnect();
        session.disconnect();
        System.out.println("DONE");
    } catch(Exception e) {
        e.printStackTrace();
    }

私が得る出力として:

Connected
exit-status: 0
DONE

しかし、プログラムは開始されていません。'&'がないと機能しますが、使用すると機能しません。同じ状況は、nohupコマンドを.shスクリプトに入れて実行した場合です。この問題を解決する方法はありますか?

前もって感謝します!

4

2 に答える 2