Come avviare automaticamente un programma in background da un utente non root?


14

Come utente non root, voglio eseguire un processo in background all'avvio del sistema. È una specie di servizio che non richiede il privilegio di root. C'è un modo per farlo?

Un modo è quello di mettere sudo -u user commandin rc.local, ma la modificarc.local richiede i privilegi di root.

Un altro modo è quello di avviarlo da cronogni minuto e verificare l'eventuale presenza di istanze in esecuzione, ma in primo luogo riattiva il sistema inutilmente e, in secondo luogo, possono esserci condizioni di competizione nel controllo delle istanze in esecuzione.

Un terzo modo è eseguirlo ~/.bash_profile, ma voglio avviarlo senza il login dell'utente.

Risposte:


16

Puoi usare cron se la tua versione ha la @rebootfunzione. Da man 5 crontab :

Invece dei primi cinque campi, potrebbe apparire una delle otto stringhe speciali:

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

È possibile modificare un crontab locale dell'utente con il comando crontab -esenza privilegi di root. Quindi aggiungere la seguente riga:

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

Ora il tuo comando verrà eseguito una volta all'avvio.


È insolito crontab -ecreare il file cron sotto /tmp?
Warlike Chimpanzee,

@Elliott Dipende dal tuo editor. Alla fine il file finirà in /var/spool/cron/crontabs.
Marco,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.