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 vsftpd@.service

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)

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, getty@.serviceest le service qui fournit des terminaux de connexion texte. Lorsque vous appuyez sur Ctrl+ Alt+ F2, getty@tty2.servicedé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 openvpn@work.servicepour vous y connecter. De même, vous pouvez créer /etc/openvpn/home.conf, puis démarrer openvpn@home.servicesi 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/echo@.serviceavec 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 echo@foo.service:

systemctl start echo@foo.service

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 echo@bar.service. 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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.