Le symbole @ et systemctl et vsftpd

27

J'ai une question en deux parties.

  1. Quelle est la signification du symbole @ dans les scripts systemctl?

  2. Comment démarrer vsftpd dans fedora 16, (qui dans certains tutoriels semble contenir un @ dans son nom)? J'ai fait tout ce que disent les tutoriels, et cela me donne toujours une erreur. http://blog.tuxforge.com/fedora-16-vsftpd/

Ce que j'ai fait

systemctl enable [email protected]

Ce que je vois

Failed to issue method call: No such file or directory

(J'ai également essayé cela avec un chemin absolu, et après avoir vérifié qu'il n'y a pas de fichier de ce type. Le vrai fichier ne contient pas de signe @ et se trouve sous le répertoire / lib / systemd / system /. J'ai également essayé démarrer et activer avec et sans le symbole @, activer les travaux, mais pas le démarrage. Je me rends compte que l'article est maintenant obsolète, mais je n'arrive toujours pas à démarrer le service. Lorsque j'essaie de me connecter, il ne me laisse pas)

EDIT: J'ai obtenu le service pour démarrer en quelque sorte, mais je voudrais toujours savoir ce que le symbole @ signifie dans certains noms de service. De plus, je reçois toujours un numéro d'erreur de connexion # 500 ne peut pas changer de répertoire [...], qu'est-ce que cela signifie?

Pour commencer je viens de taper

sudo systemctl enable vsftpd.service

sudo systemctl start vsftpd.service (the problem was I was using an absolute path for this I think)
rubixibuc
la source

Réponses:

48

Le @symbole est pour les services spéciaux, les sockets et autres unités où plusieurs instances peuvent être exécutées.

Par exemple, [email protected]est le service qui fournit des terminaux de connexion texte. Lorsque vous appuyez sur Ctrl+ Alt+ F2, [email protected]démarre, créant le terminal virtuel # 2.

Un autre service qui utilise cette fonctionnalité est OpenVPN. Vous pouvez créer un fichier /etc/openvpn/work.conf, configuré pour vous connecter au VPN sur votre lieu de travail, puis systemctl start [email protected]pour vous y connecter. De même, vous pouvez créer /etc/openvpn/home.conf, puis démarrer [email protected]si vous avez un VPN à la maison. Cela vous évite d'avoir à créer un .servicefichier pour chaque VPN auquel vous vous connectez.

Mais ne me croyez pas sur parole. Essaye le! Créons un service simple qui envoie un message à syslog. Créez un fichier /etc/systemd/system/[email protected]avec le contenu suivant:

[Unit]
Description=Echo '%I'

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

Remarquez le %i? systemd remplira ce qui suit le @signe au démarrage du service. Alors, essayez de commencer [email protected]:

systemctl start [email protected]

Ensuite, consultez le journal :

 journalctl -n10

En bas, vous verrez que systemd a fonctionné /bin/echo foo:

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

Maintenant, essayez systemctl start [email protected]. Cette fois -ci , systemd renseignera %iavec bar, vous verrez:

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

C'est tout ce qu'on peut en dire! Tout pourrait potentiellement suivre le @signe, car systemd remplace simplement %idans la définition de service par lui. OpenVPN l'utilise pour la configuration, d'autres services peuvent utiliser pour autre chose, comme un numéro de port.

Pour plus d'informations, voir man systemd.unit.

Patchs
la source
1
sont-ils démarrés et arrêtés comme des services normaux, à l'exception de l'inclusion du symbole @? Par exemple, si je devais démarrer le service une deuxième fois, est-ce que je recommencerais tout simplement? Comment démarrez-vous plusieurs instances?
rubixibuc
Ouaip, changez simplement le texte suivant le @signe en ce qui est approprié. J'ai ajouté un exemple que vous pouvez tester pour voir comment cela fonctionne.
Correctifs
@Patches: où est un document pour "Le symbole @ est pour les services spéciaux où plusieurs instances peuvent être exécutées."? Je ne le vois pas sur freedesktop.org/software/systemd/man/systemd.service.html
pevik
Il est décrit dans systemd.unit . Il est également utile pour les prises et autres types d'unités. (Ajouté pour répondre maintenant, merci. :-)
Correctifs