2017-06-19 6 views

答えて

0

Javaプロセスから変数にアクセスできるようにするには、何らかの形でシステムに挿入する必要があります。 docs for the EnvironmentFile= directiveは、=符号を持つパラメータ代入文ではない行はすべて無視されると言います。だから私たちはあなたのスクリプトを取ってそれを調理して、私たちが残したすべてが実行後の変数になるようにする必要があります。

custom_script.shファイルをソースとし、環境内のすべての値をcustom_script.envという別のファイルに出力する補助 "蒸留所"サービスを作成することができます。その後、 "蒸留された"環境ファイルをEnvironmentFileディレクティブのJavaプロセスに提供することができます。だから、

元のサービスは、このようなAfter=Requires=を追加した場合、

[Unit] 
Description=My description 
After=custom-script-distillery 
Requires=custom-script-distillery 

[Service] 
Type=simple 
User=myuser 
EnvironmentFile=/path/to/my/custom_script.env 
ExecStart=/path/to/my/start_script.sh 
ExecStop=/path/to/my/stop_script.sh 
ExecReload=/bin/kill -HUP $MAINPID 
KillMode=process 
Restart=on-failure 
RestartSec=30s 

[Install] 
WantedBy=multi-user.target 

その後蒸留所は、次のようになります。

[Unit] 
Description=My service to distill custom_script.sh to an EnvironmentFile 

[Service] 
Type=oneshot 
RemainAfterExit=yes 
ExecStart=/bin/bash -c 'set -o allexport; source /path/to/my/custom_script.sh; set +o allexport; unset IFS; set | grep -v "^BASH" > /path/to/my/custom_script.env' 
+1

を私はこれを行うことによって終わった: 'ExecStart =/binに/ bash -c 'set -a && source custom_script.sh && start_script.sh' ' ありがとうございます。 –

+0

ああ、ええ、それは素晴らしいアイデアです。 – pneumatics

関連する問題