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

13

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

Uma maneira é colocar sudo -u user command em rc.local , mas editar rc.local requer privilégio de root.

Outra maneira é lançá-lo a partir de cron a cada minuto e verificar se há alguma instância em execução, mas primeiro ele acorda 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 em ~/.bash_profile , mas eu quero iniciá-lo sem o login do usuário.

    
por Wu Yongzheng 06.08.2013 / 07:15

1 resposta

15

Você pode usar o cron se sua versão tiver o recurso @reboot . De homem 5 crontab :

Instead of the first five fields, one of eight special strings may appear:

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

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

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

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

    
por 06.08.2013 / 11:17