web-dev-qa-db-ja.com

@記号とsystemctlおよびvsftpd

2つの質問があります。

  1. Systemctlスクリプトでの@記号の意味は何ですか?

  2. Fedora 16でvsftpdを開始する方法(チュートリアルによっては、名前に@が含まれているようです)?チュートリアルに書かれていることはすべて実行しましたが、それでもエラーが発生します。 http://blog.tuxforge.com/Fedora-16-vsftpd/

私がやったこと

systemctl enable [email protected]

私が見るもの

Failed to issue method call: No such file or directory

(私はこれも絶対パスで試してみましたが、確認したところ、そのようなファイルはありません。実際のファイルには@記号が含まれておらず、/ lib/systemd/system /ディレクトリの下にあります。また、 @記号の有無にかかわらず、開始と有効化、有効化は機能しますが、開始は機能しません。記事は現在廃止されていると思いますが、それでもサービスを開始できないようです。接続しないでください)

編集:なんらかの方法でサービスを開始しましたが、一部のサービス名で@記号が何を意味するのかを知りたいです。また、ログインエラー番号#500がディレクトリ[...]を変更できません。これはどういう意味ですか?

それを始めるために私はちょうどタイプした

Sudo systemctl enable vsftpd.service

Sudo systemctl start vsftpd.service (the problem was I was using an absolute path for this I think)
29
rubixibuc

@シンボルは、複数のインスタンスを実行できる特別なサービス、ソケット、およびその他のユニット用です。

たとえば、[email protected]は、テキストログイン端末を提供するサービスです。押すと Ctrl+Alt+F2[email protected]が開始され、仮想端末#2が作成されます。

この機能を使用する別のサービスはOpenVPNです。職場でVPNに接続するように構成されたファイル/etc/openvpn/work.confを作成し、次にsystemctl start [email protected]に接続するように構成できます。同様に、自宅にVPNがある場合は、/etc/openvpn/home.confを作成し、次に[email protected]を開始できます。これにより、接続するVPNごとに.serviceファイルを作成する必要がなくなります。

しかし、私の言葉をそれに取ってはいけません。やってみよう!メッセージをsyslogに出力する簡単なサービスを作成してみましょう。次の内容のファイル/etc/systemd/system/[email protected]を作成します。

[Unit]
Description=Echo '%I'

[Service]
Type=oneshot
ExecStart=/bin/echo %i
StandardOutput=syslog

%i? systemdは、サービスが開始されたときに、@記号に続くものをそこに入力します。したがって、[email protected]を開始してみてください。

systemctl start [email protected]

次に、 journal を確認します。

 journalctl -n10

下部に、systemdが/bin/echo fooを実行したことが表示されます。

Feb 24 12:41:01 localhost echo[8412]: foo

では、systemctl start [email protected]をお試しください。今回は、systemdが%ibarを入力するため、次のように表示されます。

Feb 24 12:42:51 localhost echo[8432]: bar

これですべてです! systemdがサービス定義の@をそれで置き換えるだけなので、何かが%i記号に続く可能性があります。 OpenVPNはそれを構成に使用しますが、他のサービスはポート番号のような他の何かに使用するかもしれません。

詳細については、 man systemd.unit を参照してください。

52
Patches