2017-03-16 43 views
-1

我在Docker環境中嘗試了systemd腳本。systemd腳本 - 通過ExecStartPre更新環境文件

試想一下:在ExecStartPre提到的更新環境文件和ExecStart實際上是利用在ENV提到的環境變量的

命令。文件。? (全部在同一個systemd文件中)。

這樣的:

[Unit] 
Description=test service 
Before=memcached.service 

[Service] 
Type=oneshot 
EnvironmentFile=-/etc/sysconfig/testfile 
ExecStartPre=/usr/local/bin/update_sysconfig_testfile.sh 
ExecStart=/usr/bin/testmebinary $VOLUMES 

[Install] 
WantedBy=multi-user.target 

這裏,$卷的方法是內部testfile的定義,它是由 update_sysconfig_testfile.sh腳本更新。

systemd會知道ExecStartPre(或)所做的更改,它只是將任何值加載到testfile中?

如果有更好的方法,請分享。

+1

你有這麼多...只是測試一下,看看會發生什麼。 – Munir

+0

您的問題本可以更快地測試然後輸入。 –

+0

是的,我先試了一下。它在我的本地環境中工作,但在docker環境中失敗:( – kumar

回答

1

您可以使用它建議在man systemd.exec其中Environmentfile=被記錄的另一種方法:

使用一個systemd服務編寫環境文件,第二個消費它。使用[Unit]部分中的Before=After=關係,可以確保寫入環境文件的服務在引導序列中首先啓動。