&
を追加した後に行う必要がある重要なことが 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