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
.