私は正常に動作しているJavaソケットサーバー接続を開発しました。
端末から開始すると、クライアントからのリスニングから開始されます。しかし、ターミナルを閉じると、リスニングが停止します。
jarファイルが開始された場所からユーザーが端末を閉じた場合でも、続行する必要があります。
LinuxでJavaサーバーソケットアプリケーションをバックグラウンドプロセスとして実行するにはどうすればよいですか?
このようなことを実現するには、いくつかの方法があります。
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
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加