在systemd的单元定义文件中如何使用变量.

在使用systemctl命令启动服务时,介绍了在Unit定义文件中使用变量的方法。

环境

    OS:CentOS Linux release 7.7.1908

在Unit定义文件中指定变量

在Unit定义文件中,您可以使用Environment来指定变量。此处我们将创建并验证test.service的Unit定义文件。

    • 変数TEST_VALUE1にdisplay1、変数TEST_VALUE2にdisplay2を設定します。

echoで変数を表示させます。

[Unit]
Description=TestService

[Service]
Environment=TEST_VALUE1=display1
Environment=TEST_VALUE2=display2
ExecStart=/bin/echo ${TEST_VALUE1} ${TEST_VALUE2}

使用systemctl start test命令进行启动。

[root@CENTOS7 ~]# systemctl start test
[root@CENTOS7 ~]#

请使用 `journalctl -u test` 命令进行确认。

[root@CENTOS7 ~]# journalctl -u test
-- Logs begin at 日 2019-12-29 17:19:15 JST, end at 日 2019-12-29 18:07:04 JST.
12月 29 18:07:04 CENTOS7 systemd[1]: Started TestService.
12月 29 18:07:04 CENTOS7 echo[1398]: display1 display2

显示了变量TEST_VALUE1、TEST_VALUE2的值,以及display1、display2。

在Unit定义文件中指定环境变量

可以在Unit定义文件中使用EnvironmentFile来指定环境变量文件。
我们可以创建并测试test2.service的Unit定义文件。

TEST_VALUE1=display1
TEST_VALUE2=display2

EnvironmentFileに環境変数ファイル/etc/sysconfig/test2を設定します。

echoで変数を表示させます。

[Unit]
Description=Test2Service

[Service]
EnvironmentFile=/etc/sysconfig/test2
ExecStart=/bin/echo ${TEST_VALUE1} ${TEST_VALUE2}

使用systemctl start test2命令启动。

[root@CENTOS7 ~]# systemctl start test2
[root@CENTOS7 ~]#

使用 journalctl -u test2 命令进行确认。

[root@CENTOS7 ~]# journalctl -u test2
-- Logs begin at 日 2019-12-29 17:19:15 JST, end at 日 2019-12-29 18:19:45 JST.
12月 29 18:19:45 CENTOS7 systemd[1]: Started Test2Service.
12月 29 18:19:45 CENTOS7 echo[1444]: display1 display2

在/etc/sysconfig/test2中设置的变量TEST_VALUE1、TEST_VALUE2的值,显示了display1、display2。

補足 – bu zu (supplement, fill in the gap)

另外,在环境变量文件/etc/sysconfig/test2中,即使指定了TEST_VALUE1=$PATH等,但是如下所述,$PATH不会被展开。

TEST_VALUE1=display1
TEST_VALUE2=$PATH
[root@CENTOS7 ~]# systemctl start test2
[root@CENTOS7 ~]# journalctl -u test2
-- Logs begin at 日 2019-12-29 17:19:15 JST, end at 日 2019-12-29 18:25:04 JST.
12月 29 18:25:04 CENTOS7 systemd[1]: Started Test2Service.
12月 29 18:25:04 CENTOS7 echo[1457]: display1 $PATH

以上

广告
将在 10 秒后关闭
bannerAds