我对 systemd 还很陌生。ExecStart我有一项在命令行硬编码下运行良好的服务。现在我正在尝试对其进行参数化,我EnvironmentFile在网上找到了写的。所以我修改了我的服务文件如下(为了隐私而混淆了一些内容):
[Service]
Type=simple
EnvironmentFile=/etc/my-service/my-service-systemd.cfg
ExecStart=/usr/local/bin/my-service -port=$PORT -log-level=$LOG_LEVEL -creds=$CREDENTIALS_FILE
ExecStop=/bin/kill -15 $MAINPID
Run Code Online (Sandbox Code Playgroud)
我查了一下,环境文件/etc/my-service/my-service-systemd.cfg肯定是有的:
CREDENTIALS_FILE=/etc/my-service/my-service.pwd
LOG_LEVEL=2
PORT=443
Run Code Online (Sandbox Code Playgroud)
但是当我运行该服务时,它失败了,日志表明所有参数都是空的,即服务文件没有传入EnvironmentFile.
我究竟做错了什么?
$前缀的扩展有规则ExecStart等等。$var和之间是有区别的${var}。仅当前者作为单词单独出现(由空格包围)时才会进行插值。后者则没有这个限制。因此,例如,使用
-port=${PORT}
Run Code Online (Sandbox Code Playgroud)
有关此内容的参考位于man systemd.service中的命令行标题下。
| 归档时间: |
|
| 查看次数: |
964 次 |
| 最近记录: |