다른 환경 변수/차등 매개변수를 사용하여 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

관련 정보