¿Cómo iniciar automáticamente un programa en segundo plano por un usuario no root?

14

Como usuario no root, quiero ejecutar un trabajo en segundo plano cuando se inicia el sistema. Es una especie de servicio que no requiere privilegios de root. ¿Hay una manera de hacerlo?

Una forma es poner sudo -u user command en rc.local, pero la edición rc.localrequiere privilegios de root.

Otra forma es iniciarlo desde croncada minuto y verificar cualquier instancia en ejecución, pero en primer lugar activa el sistema innecesariamente y, en segundo lugar, puede haber una condición de carrera al verificar las instancias en ejecución.

Una tercera forma es ejecutarlo ~/.bash_profile, pero quiero iniciarlo sin inicio de sesión del usuario.

Wu Yongzheng
fuente

Respuestas:

16

Puede usar cron si su versión tiene la @rebootfunción. Desde man 5 crontab :

En lugar de los primeros cinco campos, puede aparecer una de las ocho cadenas especiales:

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

Puede editar un crontab local de usuario con el comando crontab -esin privilegios de root. Luego agregue la siguiente línea:

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

Ahora su comando se ejecutará una vez en el momento del arranque.

Marco
fuente
¿Es inusual crontab -ecrear el archivo cron /tmp?
Warlike Chimpanzee
@Elliott Eso depende de tu editor. Al final, el archivo terminará en /var/spool/cron/crontabs.
Marco