2つのアプリケーション間で通信するために、サーバーでJava jarを実行する必要があります。実行するシェルスクリプトを2つ作成しましたが、そのスクリプトを起動すると、プロセスをシャットダウンまたは終了できません。を押すと ctrl+C またはコンソールを閉じると、サーバーはシャットダウンします。このスクリプトを変更して通常のサーバーとして実行する方法を教えてください。
#!/bin/sh
Java -jar /web/server.jar
echo $!
#> startupApp.pid
これを試すことができます:
#!/bin/sh
Nohup Java -jar /web/server.jar &
&記号は、プログラムをバックグラウンドで実行するように切り替えます。
Nohupユーティリティは、ログアウト後もバックグラウンドで実行される引数として渡されるコマンドを作成します。
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
Systemd大半のディストリビューションで実行されるようになりました
私のユーザー定義サービスは/usr/lib/systemd/system/
にありました
お気に入りのテキストエディター名whatever_you_want.service
でテキストファイルを作成します
次のテンプレートをファイルwhatever_you_want.service
に入れます
[Unit]
Description=webserver Daemon
[Service]
ExecStart=/usr/bin/Java -jar /web/server.jar
User=user
[Install]
WantedBy=multi-user.target
サービスを実行する
スーパーユーザーとして
$ 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