追加読書

追加読書

Bashスクリプトで次の部分を実行すると機能します。

/usr/bin/java \
-Dspring.index.ignore=true \
--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED \
--add-exports=java.base/sun.nio.ch=ALL-UNNAMED \
--add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED \
--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED \
--add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED \
--illegal-access=permit \
-jar /home/x/my.jar \
--spring.config.additional-location=/home/x/config.yml

ただし、システムサービスの一部として使用するために少し変更すると、次のようになります。

ExecStart=/usr/bin/java \
-Dspring.index.ignore=true \
--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED \
--add-exports=java.base/sun.nio.ch=ALL-UNNAMED \
--add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED \
--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED \
--add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED \
--illegal-access=permit \
-jar /home/x/my.jar \
--spring.config.additional-location=/home/x/config.yml

それは私に示しています:

● my.service - my
   Loaded: error (Reason: Invalid argument)
   Active: inactive (dead)

 Unknown lvalue '--illegal-access' in section 'Service'
 Missing '='.
 Ignoring unknown escape sequences: "\"
 Unknown lvalue '--add-exports' in section 'Service'
 Unknown lvalue '--add-exports' in section 'Service'
 Unknown lvalue '--add-exports' in section 'Service'
 Unknown lvalue '--add-exports' in section 'Service'
 Unknown lvalue '--add-exports' in section 'Service'
 Unknown lvalue '--illegal-access' in section 'Service'
 Missing '='.

正しい構文は何ですか?私は単純なbashがここで働くと確信しています。

PSすべてを一行に入れるとうまくいくことがわかりました。しかし、すべてを複数行に維持する方法を知っておくと良いでしょう。

答え1

私は単純なbashがここで働くと確信しています。

bashはシェルスクリプトの一般的な用語ではありません。ExecStartサービスユニットの設定値は以下の通りです。シェルスクリプトではありませんまったく言うまでもなくボンアイデンティティシェルスクリプト。長年にわたり、多くの人々は実際のシェルスクリプトやシェルコマンドライン入力から変換されたシェルスクリプトをここに入れることができると考えており、結局システムマニュアルではこれについて非常に明示的に説明するようになりました。 「コマンドライン」セクションを参照してくださいman systemd.service

このマニュアルには、次の内容のみが記載されています。続くバックスラッシュは行をマージします。バックスラッシュと行末の間に空白文字(CR、SPCなど)があるのは(もちろん)末尾のスラッシュではありません。したがって、後続のすべての行は追加のキー+値設定になります(無効な形式または無効です)。

systemd.serviceマニュアルを読んで、実際に使用するルールを理解してください。これはシェルスクリプトではないので、そうではないと仮定してはいけません。

追加読書

関連情報