& を追加した後に行う必要がある重要なことが 1 つあります。 コマンドの最後に。プロセスはまだターミナルにリンクされています。 disown を実行する必要があります java コマンドを実行した後。
java -jar yourApp.jar > log.txt &
disown
これで、ターミナルを閉じることができます。
そのようなことを達成するには、いくつかの方法があります:
<オール>nohup java -server myApplication.jar > /log.txt -これはかなり簡単です。アプリケーションをバックグラウンドに置くだけです。これは機能しますが、あまり良い方法ではありません。init.d に含めることができます 通常の開始、停止、およびステータスコマンドで必要な実行レベル。必要に応じて例を挙げます。
 個人的には、将来このサーバーを使用する必要がある場合、および/またはクライアントやエンド ユーザーなどに配布する必要がある場合は、解決策 2 または 3 を使用します。 nohup 何かを実行する必要があり、問題のより複雑なソリューションを開発する時間がない場合に適しています。
広告 2:
多くのプロジェクトで使用されている最適なスクリプトは、ここにあります。
 Debian/Ubuntu の場合、start-stop-daemon に基づく非常に単純なスクリプトを使用できます。 .疑わしい場合は /etc/init.d/skeleton があります 変更できます。
#!/bin/sh
DESC="Description"
NAME=YOUR_NAME
PIDFILE=/var/run/$NAME.pid
RUN_AS=USER_TO_RUN
COMMAND=/usr/bin/java -- -jar YOUR_JAR
d_start() {
    start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE --chuid $RUN_AS --exec $COMMAND
}
d_stop() {
    start-stop-daemon --stop --quiet --pidfile $PIDFILE
    if [ -e $PIDFILE ]
        then rm $PIDFILE
    fi
}
case $1 in
    start)
    echo -n "Starting $DESC: $NAME"
    d_start
    echo "."
    ;;
    stop)
    echo -n "Stopping $DESC: $NAME"
    d_stop
    echo "."
    ;;
    restart)
    echo -n "Restarting $DESC: $NAME"
    d_stop
    sleep 1
    d_start
    echo "."
    ;;
    *)
    echo "usage: $NAME {start|stop|restart}"
    exit 1
    ;;
esac
exit 0