@記号とsystemctlおよびvsftpd


27

二つの質問があります。

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

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

私がやったこと

systemctl enable vsftpd@.service

私が見るもの

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)

回答:


48

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

たとえば、getty@.serviceテキストログイン端末を提供するサービスです。押すとCtrl+ Alt+ F2getty@tty2.service仮想端末#2を作成し、起動されます。

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

しかし、私の言葉を受け入れないでください。やってみて!syslogにメッセージを出力する簡単なサービスを作成しましょう。/etc/systemd/system/echo@.service次の内容のファイルを作成します。

[Unit]
Description=Echo '%I'

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

注意してください%i?systemdは@、サービスが開始されたときに記号に続くものでそれを埋めます。だから、開始してみてくださいecho@foo.service

systemctl start echo@foo.service

次に、ジャーナルを確認します。

 journalctl -n10

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

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

今、試してみてくださいsystemctl start echo@bar.service。今回は、systemdにが入力さ%iれるbarため、以下が表示されます。

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

それだけです!@systemd %iはサービス定義でそれを置き換えるだけなので、記号の後ろに何かが潜在的に続く可能性があります。OpenVPNはこれを構成に使用しますが、他のサービスはポート番号など他のサービスに使用する場合があります。

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


1
@記号を含めることを除いて、通常のサービスのように開始および停止しますか?たとえば、2回目にサービスを開始する場合、再度開始するだけですか?複数のインスタンスを起動するにはどうすればよいですか?
ルビキシブ

うん、@サインに続くテキストを適切なものに変更するだけです。動作を確認するためにテストできる例を追加しました。
パッチ

@Patches:「@記号は、複数のインスタンスを実行できる特別なサービス用です」のドキュメントはどこにありますか?freedesktop.org/software/systemd/man/systemd.service.htmlに
pevik

systemd.unitに記述されています。また、ソケットやその他のタイプのユニットにも役立ちます。(今すぐ回答を追加、ありがとう。:-)
パッチ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.