![다른 환경 변수/차등 매개변수를 사용하여 systemctl 서비스를 시작하는 방법은 무엇입니까?](https://linux55.com/image/161687/%EB%8B%A4%EB%A5%B8%20%ED%99%98%EA%B2%BD%20%EB%B3%80%EC%88%98%2F%EC%B0%A8%EB%93%B1%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20systemctl%20%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC%20%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
다음과 같은 서비스 정의가 있다고 가정해 보겠습니다.
[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