systemd user e system

2

Estou tentando entender um pouco melhor, escrevendo alguns serviços.

Eu tenho dificuldades em entender as diferenças entre esses 2 serviços, por exemplo, bem, eu gostaria de ter certeza de que os entendi corretamente seria mais apropriado.

Então, por exemplo, eu tenho o serviço rtorrent, definido como rt como um serviço de sistema, que eu posso habilitar para o usuário X, Y, Z, com sudo systemctl enable [email protected]

➜  ~  cat /etc/systemd/system/[email protected]
[Unit]
Description=rTorrent
Requires=network.target local-fs.target

[Service]
Type=forking
KillMode=none
User=%I
ExecStart=/usr/bin/tmux new-session -s rt -n rtorrent -d rtorrent
ExecStop=/usr/bin/tmux send-keys -t rt:rtorrent C-q
WorkingDirectory=/home/%I/
Restart=on-failure

[Install]
WantedBy=multi-user.target

e eu tenho o Dropbox definido dessa maneira:

➜  ~  cat /etc/systemd/user/[email protected]
[Service]
ExecStart=/bin/sh %h/.dropbox-dist/dropboxd
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

Se bem entendi, o serviço da caixa de depósito pode ser iniciado / interrompido / ativado / desativado no nível do usuário, para muitos usuários, mesmo que esse usuário não seja um administrador. Isso significa que eu posso como userX habilitar para userY? Quanto ao serviço rt, apenas um administrador pode ativar / iniciar / parar isso ... Essa é a única diferença entre um serviço do sistema e um usuário?

    
por euri10 17.12.2014 / 14:20

1 resposta

5

Você está um pouco confuso, sim. ☺ Você tem:

  • Um conjunto de serviços system que são gerenciados pela instância de todo o sistema do systemd; que são, cada uma, uma instanciação de uma unidade de serviço de modelos no arquivo /etc/systemd/system/[email protected] .
  • Um conjunto de serviços usuário que são gerenciados pelas instâncias por usuário do systemd; que são cada uma instanciação de uma unidade de serviço de modelo no arquivo /etc/systemd/user/[email protected] .

Agora você precisa entender isso:

  • Existe uma instância do systemd para todo o sistema. Sempre corre. É o processo # 1. Apenas um administrador tem autoridade para controlar os serviços do sistema.
  • Existem várias instâncias por usuário do systemd. Eles são iniciados / parados sob demanda conforme os usuários fazem logon / logoff. Eles não são o processo # 1. Há um máximo de um por usuário, no entanto, muitas vezes o usuário está conectado. Somente esse usuário (ou um administrador) tem autoridade para controlar os próprios serviços do xyr.

Uma unidade de serviço modelo é uma maneira de criar várias unidades de serviço ad-hoc em tempo real, que diferem no parâmetro do modelo. As unidades de serviço instanciadas reais são nomeadas como uma combinação do nome do modelo e do parâmetro.

Combinado, isso tudo significa:

  • No seu [email protected] , o parâmetro é um nome de usuário, usado para especificar o usuário que o serviço executa e o diretório de trabalho em que é executado. Assim, você pode instanciar serviços como [email protected] e [email protected] . Estes são serviços system , gerenciados pela instância do sistema do systemd, e é necessário um administrador para iniciá-los e pará-los. só acontece que há um por usuário.
  • No seu [email protected] , o parâmetro é ignorado. Você pode instanciar serviços como [email protected] e [email protected] . Estes são serviços usuário , gerenciados pelas instâncias por-usuário do systemd. Cada usuário tem o próprio conjunto separado de instanciações de modelo que esse usuário pode iniciar e parar.

Você possivelmente não queria que sua unidade de serviço dropbox fosse um modelo. Ou você está agora descobrindo o que foi a configuração de Environment=DISPLAY=%i . ☺

    
por 04.01.2015 / 23:11

Tags