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.

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.