システムサービスファイルの$OPTIONSとは何ですか?

システムサービスファイルの$OPTIONSとは何ですか?

/usr/lib/systemd/system/sshd.serviceFedora 25システムのファイルで次の行を見ています。

ExecStart=/usr/sbin/sshd -D $OPTIONS

私はそれがどこから来るのかわかりません$OPTIONS。環境変数のように見えますが、このようにシェル変数を設定すると無視されます。

# OPTIONS='-p 9999'
# systemctl start sshd

systemd.serviceのマニュアルページのコマンドラインセクションを読みました。これは、環境変数を1行に設定できることを示していますEnvironment

Environment="ONE=one" 'TWO=two two'

しかし、そのようなOPTIONS変数はそこに設定されていません。

次の行もありますEnvironmentFile

EnvironmentFile=-/etc/sysconfig/sshd

そこにも設定された変数はありません$OPTIONS。どういう意味ですか$OPTIONS?どのように設定されていますか?

ベストアンサー1

Debian のユニットファイルは類似しており、以下を含んでいます:

[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はシェルが呼び出す環境でサービスを実行しませんが、デフォルトのsystemctlsystemdプロセスからサービスを分岐します。これにより、誤ってシェル環境の設定が継承されなくなります。環境変数は広範な影響を及ぼす可能性があり、サービスがシステム起動時に開始されるのか、コマンドラインから再起動されるかに応じて、サービスが異なる動作をする場合は迷惑になることがあります。

しかし$MAINPIDこれは特別です。

おすすめ記事