/usr/lib/systemd/system/sshd.service
Fedora 25 시스템의 파일에서 다음 줄을 보고 있습니다.
ExecStart=/usr/sbin/sshd -D $OPTIONS
나는 그것이 어디서 나오는지 잘 모르겠습니다 $OPTIONS
. 환경 변수처럼 보이지만 이런 방식으로 쉘 변수를 설정하면 무시됩니다.
# OPTIONS='-p 9999'
# systemctl start sshd
systemd.service 매뉴얼 페이지의 명령줄 섹션을 읽었는데, 이는 환경 변수가 한 줄로 설정될 수 있음을 나타냅니다 Environment
.
Environment="ONE=one" 'TWO=two two'
그러나 그러한 OPTIONS 변수는 거기에 설정되어 있지 않습니다.
다음과 같은 줄도 있습니다 EnvironmentFile
.
EnvironmentFile=-/etc/sysconfig/sshd
거기에도 설정된 변수가 없습니다 $OPTIONS
. 무슨 뜻인가요 $OPTIONS
? 어떻게 설정되어 있나요?
답변1
데비안의 유닛 파일은 유사하며 다음을 포함합니다:
[Service]
EnvironmentFile=-/etc/default/ssh
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
여기서 EnvironmentFile이 할당됩니다 SSHD_OPTS
.
# Options to pass to sshd
SSHD_OPTS=
Fedora는 비슷한 시스템을 사용할 가능성이 높지만 어떤 이유로 이 변수를 명시적으로 설정하지 않습니다. 상관없습니다. 빈 문자열로 확장되어야 합니다.
말하는여기예를 들어, 이와 같은 것을 httpd.service
사용하여 OPTIONS
로 설정하면 /etc/sysconfig/httpd
어떤 이유로든 설정되지 않을 수 있습니다.
sshd
명령줄을 확인하여 ps
변수가 확장되는 내용을 확인하거나 sysconfig 파일에서 해당 변수를 설정하여 해당 변수가 유효한지 확인할 수 있습니다.
쉘 명령줄에서 환경 변수를 설정하는 경우 AFAIU systemd는 쉘이 호출하는 환경에서 서비스를 실행하지 않지만 systemctl
기본 systemd 프로세스에서 서비스를 분기합니다. 이렇게 하면 실수로 쉘 환경의 설정을 상속받지 않습니다. 환경 변수는 광범위한 영향을 미칠 수 있으며, 서비스가 시스템 부팅 시 시작되는지 또는 명령줄에서 다시 시작되는지에 따라 서비스가 다르게 동작하는 경우 성가실 수 있습니다.
하지만 $MAINPID
,이건 특별해요.