O símbolo @ e systemctl e vsftpd

20

Eu tenho uma pergunta em duas partes.

  1. What is the significance of the @ symbol in systemctl scripts?

  2. How to start vsftpd in fedora 16, (which in some tutorials seems to contain an @ in it's name)? I have done everything the tutorials say, and it still gives me an error. http://blog.tuxforge.com/fedora-16-vsftpd/

O que eu fiz

systemctl enable [email protected]

O que eu vejo

Failed to issue method call: No such file or directory

(Eu tentei isso com um caminho absoluto também, e depois que eu verifiquei não existe tal arquivo. O arquivo real não contém um sinal @, e está localizado no diretório / lib / systemd / system /. também tentei iniciar e ativar com e sem o símbolo @, habilitando trabalhos, mas começando não. Eu percebo que o artigo agora está obsoleto, mas ainda não consigo iniciar o serviço. Quando tento conectar ele não não me deixe)

EDIT: Eu tenho o serviço para começar de alguma forma, mas eu ainda gostaria de saber o que significa o símbolo @ em alguns nomes de serviço. Também ainda estou recebendo um número de erro de login # 500 não pode alterar o diretório [...], o que isso significa?

Para começar, acabei de digitar

sudo systemctl enable vsftpd.service

sudo systemctl start vsftpd.service (the problem was I was using an absolute path for this I think)
    
por rubixibuc 24.02.2012 / 01:52

1 resposta

35

O símbolo @ é para serviços especiais, soquetes e outras unidades nas quais várias instâncias podem ser executadas.

Por exemplo, [email protected] é o serviço que fornece terminais de login de texto. Quando você pressiona Ctrl + Alt + F2 , [email protected] é iniciado, criando o terminal virtual # 2.

Outro serviço que usa essa funcionalidade é o OpenVPN. Você pode criar um arquivo /etc/openvpn/work.conf , configurado para se conectar à VPN em seu local de trabalho e, em seguida, systemctl start [email protected] para se conectar a ele. Da mesma forma, você pode criar /etc/openvpn/home.conf e, em seguida, iniciar [email protected] se tiver uma VPN em casa. Isso evita que você tenha que criar um arquivo .service para cada VPN à qual você se conecta.

Mas não acredite na minha palavra. Experimente! Vamos criar um serviço simples que produza uma mensagem para o syslog. Crie um arquivo /etc/systemd/system/[email protected] com o seguinte conteúdo:

[Unit]
Description=Echo '%I'

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

Observe o %i ? O systemd preencherá com o que segue o sinal @ quando o serviço for iniciado. Então, tente iniciar [email protected] :

systemctl start [email protected]

Em seguida, verifique o jornal :

 journalctl -n10

Na parte inferior, você verá que o systemd executou /bin/echo foo :

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

Agora, tente systemctl start [email protected] . Dessa vez, o systemd preencherá %i com bar , então você verá:

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

Isso é tudo que existe para isso! Qualquer coisa poderia potencialmente seguir o sinal @ , já que o systemd apenas substitui %i na definição de serviço por ele. O OpenVPN o utiliza para configuração, outros serviços podem usar para outra coisa, como um número de porta.

Para mais informações, consulte man systemd.unit .

    
por 24.02.2012 / 02:09