Javaスクリプトのシステムサービスは作業フォルダで実行する必要があります。

Javaスクリプトのシステムサービスは作業フォルダで実行する必要があります。

次のように、JJSコマンドラインスクリプトファイルを使用して起動されたUbuntu 20.04サーバーにJavaアプリケーションをインストールしました。

#!../lib/bin/jre/bin/jjs -scripting function myJAVA(c){ bala bala bala ......}

通常、このアプリケーションを実行するには、次の手順2を実行する必要があります。

# cd /my_app_path/MsgPro/bin
# ./myJAVA start

明らかにbinフォルダに移動し、そこからスクリプトを実行する必要があります。それ以外の場合(別のフォルダで実行している場合)、次のエラーが発生します。

bash: ./bin/msgProcessor: ../lib/bin/jre/bin/jjs: bad interpreter: No such file or directory

私はJavaについてはまったくわかりませんが、systemctlを介してmyJAVA.serviceを生成するように求められました。これにより、サーバーが再起動または予期せず終了した場合、アプリケーションは自動的に再起動します。

/etc/system/systemd/myJAVA.serviceにこれを実行できる単位ファイルがあることを知っていますが、どのように機能させるかはわかりません。以下は私の単位ファイルです。

[Unit]
Description=myJAVA Daemon
After=network-online.target

[Service]
User=root

Environment=PATH=/bin:/sbin:/usr/bin:/usr/sbin
ExecStart=/my_app_path/MsgPro/bin/myJAVA start

Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

私のExecStartまたは環境が間違っているようですが、正しいことが何であるかわかりません。

どんな助けでもいただければ幸いです。

ベストアンサー1

スクリプトの最初の行を設定します。

#!../lib/bin/jre/bin/jjs

相対パスではなく絶対パスです(インタプリタの場合)。
ただプログラムを実行するには、スクリプトを次のようにします。

....../lib/bin/jre/bin/jjs -scripting function myJAVA(c){ bala bala bala ......}

プログラムの絶対パスをリセットする

おすすめ記事