118

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

 #!/bin/sh
java -jar /web/server.jar
echo $! 
#> startupApp.pid
4

4 に答える 4

283

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

#!/bin/sh
nohup java -jar /web/server.jar &

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

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

于 2012-08-24T11:34:45.553 に答える
63

現在、ほとんどのディストリビューションで実行される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
于 2015-02-24T19:16:07.910 に答える
33

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ます。tail/var/log/yourservice.logして、それが機能していることを確認できます。

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

java -jar /web/server.jar > /var/log/yourservice.log 2>&1
于 2012-08-24T02:41:22.980 に答える