如何使用不同的环境变量/差异参数启动 systemctl 服务?

如何使用不同的环境变量/差异参数启动 systemctl 服务?

假设我有一个类似的服务定义:

[Unit]
Description=ES log capture
After=network.target
StartLimitIntervalSec=0

[Service]
Environment=emit_only_json=yes
Environment=ec2_logging_machine_ip=ec2-18-xxx-66-xxx.us-west-2.compute.amazonaws.com
Type=simple
Restart=always
RestartSec=1
User=root
ExecStart=/home/ubuntu/repos/es-app/syslog-exec.sh

[Install]
WantedBy=multi-user.target

但我希望ec2_logging_machine_ip环境变量根据该服务运行的机器而有所不同。以下是该服务运行的 bash 脚本:

#!/usr/bin/env bash

set -eo pipefail
cd "$(dirname "$BASH_SOURCE")"

export interos_emit_only_json='nope'
export interos_ec2_logging_machine_ip='ec2-18-xxx-66-xxx.us-west-2.compute.amazonaws.com'

tail -n 100 -f '/var/log/syslog' | node . &> /dev/null

我还可以将环境变量放在那里。也许答案是改变.bashrc这台机器的?还有其他潜在的解决方案吗?

答案1

改变 ~/.bashrc 然后在我的 ExecStart 脚本中获取它不起作用,但使用它确实有效:

[Service]
EnvironmentFile=/home/ubuntu/myenvs/es-service.env

相关内容