Jak automatycznie uruchomić program działający w tle przez użytkownika innego niż root?

14

Jako użytkownik inny niż root chcę uruchomić zadanie w tle podczas uruchamiania systemu. Jest to rodzaj usługi, która nie wymaga uprawnień administratora. Czy jest na to sposób?

Jednym ze sposobów jest umieszczenie sudo -u user commandw rc.local, ale edycja rc.localwymaga uprawnień administratora.

Innym sposobem jest uruchamianie go z cronkażdej minuty i sprawdzanie, czy jest uruchomiona instancja, ale po pierwsze niepotrzebnie budzi system, a po drugie, mogą występować warunki wyścigu podczas sprawdzania uruchomionych instancji.

Trzecim sposobem jest uruchomienie go ~/.bash_profile, ale chcę go uruchomić bez logowania użytkownika.

Wu Yongzheng
źródło

Odpowiedzi:

17

Możesz użyć crona, jeśli twoja wersja ma tę @rebootfunkcję. Od człowieka 5 crontab :

Zamiast pierwszych pięciu pól może pojawić się jeden z ośmiu ciągów specjalnych:

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

Możesz edytować lokalny crontab użytkownika za pomocą polecenia crontab -ebez uprawnień roota. Następnie dodaj następujący wiersz:

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

Teraz twoje polecenie zostanie uruchomione raz podczas uruchamiania.

Marco
źródło
Czy crontab -etworzenie pliku cron pod nie /tmpjest czymś niezwykłym ?
Warlike Chimpanzee
@Elliott To zależy od twojego edytora. Ostatecznie plik skończy się w /var/spool/cron/crontabs.
Marco