existe algo como um daemon por usuário?

11

Eu preciso executar alguns processos em segundo plano, desde que eu esteja logado com um determinado usuário.

Existe algo como um daemon por usuário? Eu sei apenas de daemons globais que vivem da inicialização do computador até o desligamento (ou inicialização / kill manual).

por enquanto eu fiz um script que verifica se o processo já existe e cria o processo se não existir. Este script é executado com o comando nohup do meu .profile . Dessa forma, o processo é iniciado na inicialização e é lançado apenas uma vez (mesmo com vários rxvt de termos indo e vindo). No entanto, nunca é morto depois de eu logar (o que não é um desastre, mas é mais limpo também terminar o processo).

    
por romeovs 03.09.2012 / 18:21

3 respostas

9

systemd permite que os usuários executem suas próprias instâncias do systemd para gerenciar daemons particulares.

Se você já tiver o systemd instalado, tudo o que precisa fazer é iniciar systemd --user e gerenciar seus serviços executando systemctl --user . Os serviços do usuário serão pesquisados em ~/.config/systemd/user .

Por padrão, o systemd matará os serviços do usuário no logout (conforme solicitado). Esse comportamento pode ser alterado, permitindo a permanência de um usuário com o comando loginctl --enable-linger $USER .

Informações sobre Mor podem ser encontradas na página do ArchWiki .

    
por 25.02.2013 / 04:23
4

O serviço dbus é feito preciosamente para que ... ok, pode ser usado precicamente que :-). O deamon dbus por usuário é iniciado quando um usuário efetua login em um ambiente de área de trabalho e é encerrado quando o usuário efetua logout (consulte a página de manual de dbus-launch e a opção --exit-with-session ). Um serviço dbus pode ser iniciado junto com a instância do dbus ou quando a interface do serviço é chamada pela primeira vez através do dbus. Cada usuário pode ter suas próprias especificações de serviços dbus, definidas em um diretório oculto na página inicial dos usuários ou globalmente em /etc . Veja a página inicial do dbus no freedesktop para muita documentação e implementação de referência.

Eu só uso distros baseadas no Debian atualmente. Todos os que possuem scripts em /etc/X11/Xsession.d , que muitas vezes modificam uma string que, no final, será avaliada como o comando que inicia o ambiente de área de trabalho selecionado. Existe um tal script para o dbus, que preenche o comando com o wrapper dbus-launch do dbus. Este wrapper lança um dbus-server e pelo menos no vanilla Debian (e estou disposto a dizer "em todas as distribuições baseadas no Debian") dbus-launch recebe a opção --exit-with-session .

Você deve ser capaz de envolver os processos que deseja executar enquanto um usuário estiver logado em um serviço dbus e o IIRC dbus se encarrega automagicamente de terminar seus serviços antes de sair.

    
por 03.09.2012 / 20:26
2

Se você estiver usando BASH como seu shell, você pode tentar fazer alguma detecção em ~ / .bash_logout e encerrar o processo em execução.

O que você provavelmente está procurando no longo prazo é interagir (por exemplo, via D-Bus) com algo como ConsoleKit ou do systemd .

    
por 03.09.2012 / 20:39