Como os daemons criados pelo usuário são capturados pela instância do usuário systemd?

0

Ao usar uma instância do usuário systemd ( systemd --user ), todos os daemons criados pelo usuário são de propriedade dessa instância. Por exemplo:

  1. Vamos criar um daemon: nohup sleep 100 0<&- &>/dev/null & . Tem PID 12549 . Mate o processo do terminal pai (ou diretamente o shell) para que ele se torne um daemon
  2. O novo pai do processo é a instância do usuário systemd:

    UID        PID  PPID  C STIME TTY          TIME CMD
    phylliade   12549 20280  0 17:21 ?        00:00:00 sleep 100
    phylliade   20280     1  0 09:23 ?        00:00:00 /usr/lib/systemd/systemd --user
    

Então, como isso está acontecendo? Quando um pai do processo morre, o kernel normalmente atribui o init (aqui o main systemd) como seu novo pai; O sistema então atribui o daemon ao sistema do usuário?

    
por Phylliade 22.04.2018 / 17:31

1 resposta

0

Kill the parent […] so that it becomes a daemon

Não, não. Um daemon não está associado a um terminal de controle ou a uma sessão de login. Um processo em execução via nohup definitivamente ainda é. Afinal de contas, se não fosse, não haveria razão para os ginásios de ignorar o desligamento do terminal de controle.

When a process parent dies, the kernel normally assigns init […] as its new parent

Não, não. Ele atribui o processo ancestral mais próximo que foi marcado como um ceifador de processo filho, retornando ao processo # 1 se não houver tal processo ancestral. O mundo mudou.

Upstart, o service-manager eo systemd do conjunto de ferramentas do nose fazem uso disso. O gerenciamento de serviços por usuário em todos os três envolve ceifadores locais.

Leitura adicional

por 22.04.2018 / 20:56