Il simbolo @ e systemctl e vsftpd


27

Ho una domanda in due parti.

  1. Qual è il significato del simbolo @ negli script systemctl?

  2. Come avviare vsftpd in fedora 16, (che in alcuni tutorial sembra contenere un @ nel suo nome)? Ho fatto tutto ciò che dicono i tutorial e mi dà ancora un errore. http://blog.tuxforge.com/fedora-16-vsftpd/

Quello che ho fatto

systemctl enable vsftpd@.service

Quello che vedo

Failed to issue method call: No such file or directory

(L'ho provato anche con un percorso assoluto, e dopo aver controllato non esiste un file simile. Il file reale non contiene un segno @ e si trova nella directory / lib / systemd / system /. Ho anche provato l'avvio e l'abilitazione con e senza il simbolo @, l'abilitazione funziona, ma l'avvio non funziona. Mi rendo conto che l'articolo è ormai obsoleto, ma non riesco ancora ad avviare il servizio. Quando provo a connettermi non mi consente)

EDIT: Ho iniziato il servizio in qualche modo, ma vorrei ancora sapere cosa significa il simbolo @ in alcuni nomi di servizio. Inoltre sto ancora ricevendo un numero di errore di accesso n. 500 non è possibile modificare la directory [...], cosa significa?

Per iniziare ho appena digitato

sudo systemctl enable vsftpd.service

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

Risposte:


48

Il @simbolo è per servizi speciali, socket e altre unità in cui è possibile eseguire più istanze.

Ad esempio, getty@.serviceè il servizio che fornisce terminali di accesso al testo. Quando si preme Ctrl+ Alt+ F2, getty@tty2.serviceviene avviato, creando il terminale virtuale n. 2.

Un altro servizio che utilizza questa funzionalità è OpenVPN. È possibile creare un file /etc/openvpn/work.conf, configurato per connettersi alla VPN sul posto di lavoro e quindi systemctl start openvpn@work.serviceconnettersi ad esso. Allo stesso modo, è possibile creare /etc/openvpn/home.conf, quindi iniziare openvpn@home.servicese si dispone di una VPN a casa. Questo ti impedisce di dover creare un .servicefile per ogni VPN a cui ti connetti.

Ma non crederci sulla parola. Provalo! Creiamo un semplice servizio che trasmette un messaggio a syslog. Creare un file /etc/systemd/system/echo@.servicecon i seguenti contenuti:

[Unit]
Description=Echo '%I'

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

Notare il %i? systemd lo popolerà con qualunque cosa segua il @segno all'avvio del servizio. Quindi, prova a iniziare echo@foo.service:

systemctl start echo@foo.service

Quindi, controlla il diario :

 journalctl -n10

In fondo, vedrai che systemd ha funzionato /bin/echo foo:

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

Adesso prova systemctl start echo@bar.service. Questa volta, systemd popolerà %icon bar, così vedrete:

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

Questo è tutto quello che c'è da fare! Qualsiasi cosa potrebbe potenzialmente seguire il @segno, poiché systemd sostituisce semplicemente %ila definizione del servizio con esso. OpenVPN lo utilizza per la configurazione, altri servizi potrebbero utilizzare per qualcos'altro, come un numero di porta.

Per ulteriori informazioni, vedere man systemd.unit.


1
vengono avviati e arrestati come normali servizi ad eccezione dell'inclusione del simbolo @? Ad esempio, se dovessi avviare il servizio una seconda volta, ricomincerei semplicemente? Come si avviano più istanze?
rubixibuc,

Sì, basta cambiare il testo seguendo il @segno per quello che è appropriato. Ho aggiunto un esempio che puoi provare per vedere come funziona.
Patch

@Patches: Dov'è un documento per "Il simbolo @ è per servizi speciali in cui è possibile eseguire più istanze". Non lo vedo su freedesktop.org/software/systemd/man/systemd.service.html
pevik

È descritto in systemd.unit . È anche utile per prese e altri tipi di unità. (Aggiunto per rispondere ora, grazie. :-)
Patch del
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.