Como iniciar automaticamente um programa em segundo plano por um usuário não raiz?

14

Como usuário não root, desejo executar um trabalho em segundo plano quando o sistema inicializar. É uma espécie de serviço que não requer privilégios de root. Existe uma forma de fazer isso?

Uma forma é colocar sudo -u user commandem rc.local, mas a edição rc.localexige privilégios de root.

Outra maneira é iniciá-lo a croncada minuto e verificar qualquer instância em execução, mas, primeiro, ele ativa o sistema desnecessariamente e, em segundo lugar, pode haver condição de corrida na verificação de instâncias em execução.

Uma terceira maneira é executá-lo ~/.bash_profile, mas quero iniciá-lo sem o login do usuário.

Wu Yongzheng
fonte

Respostas:

16

Você pode usar o cron se sua versão tiver o @rebootrecurso Do man 5 crontab :

Em vez dos cinco primeiros campos, uma das oito seqüências especiais pode aparecer:

  string         meaning
  ------         -------
  @reboot        Run once, at startup.
  …

Você pode editar um crontab local do usuário com o comando crontab -esem privilégios de root. Em seguida, adicione a seguinte linha:

@reboot /usr/local/bin/some-command

Agora seu comando será executado uma vez no momento da inicialização.

Marco
fonte
É incomum crontab -ecriar o arquivo cron abaixo /tmp?
Chimpanzé em guerra
@ Elliott Isso depende do seu editor. No final, o arquivo terminará em /var/spool/cron/crontabs.
Marco