web-dev-qa-db-ja.com

バックグラウンドプロセスとしてサーバーでJava jarファイルを実行します

2つのアプリケーション間で通信するために、サーバーでJava jarを実行する必要があります。実行するシェルスクリプトを2つ作成しましたが、そのスクリプトを起動すると、プロセスをシャットダウンまたは終了できません。を押すと ctrl+C またはコンソールを閉じると、サーバーはシャットダウンします。このスクリプトを変更して通常のサーバーとして実行する方法を教えてください。

 #!/bin/sh
Java -jar /web/server.jar
echo $! 
#> startupApp.pid
90
Bernad Ali

これを試すことができます:

#!/bin/sh
Nohup Java -jar /web/server.jar &

&記号は、プログラムをバックグラウンドで実行するように切り替えます。

Nohupユーティリティは、ログアウト後もバックグラウンドで実行される引数として渡されるコマンドを作成します。

197

Ubuntuを使用していて、「Upstart」(http://upstart.ubuntu.com/)がある場合、これを試すことができます。

/var/init/yourservice.confを作成

次の内容で

description "Your Java Service"  
author "You"  

start on runlevel [3]  
stop on shutdown  

expect fork  

script     
    cd /web 
    Java -jar server.jar >/var/log/yourservice.log 2>&1  
    emit yourservice_running  
end script  

これで、service yourservice startおよびservice yourservice stopコマンドを発行できます。 /var/log/yourservice.logを末尾にして、動作していることを確認できます。

コンソールウィンドウを占有せずにコンソールからjarを実行するだけの場合は、次のようにします。

Java -jar /web/server.jar > /var/log/yourservice.log 2>&1
27
Strelok

Systemd大半のディストリビューションで実行されるようになりました

ステップ1:

私のユーザー定義サービスは/usr/lib/systemd/system/にありました

ステップ2:

お気に入りのテキストエディター名whatever_you_want.serviceでテキストファイルを作成します

ステップ3:

次のテンプレートをファイルwhatever_you_want.serviceに入れます

[Unit]
Description=webserver Daemon

[Service]
ExecStart=/usr/bin/Java -jar /web/server.jar
User=user

[Install]
WantedBy=multi-user.target

ステップ4:

サービスを実行する
スーパーユーザーとして

$ systemctl start whatever_you_want.service # starts the service
$ systemctl enable whatever_you_want.service # auto starts the service
$ systemctl disable whatever_you_want.service # stops autostart
$ systemctl stop whatever_you_want.service # stops the service
$ systemctl restart whatever_you_want.service # restarts the service
26
mtelesha