시스템 서비스 파일의 $OPTIONS는 무엇입니까?

시스템 서비스 파일의 $OPTIONS는 무엇입니까?

/usr/lib/systemd/system/sshd.serviceFedora 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,이건 특별해요.

관련 정보