Як автозапустити фонову програму некористувальним користувачем?


14

Як некористувач, я хочу запустити фонове завдання, коли система завантажується. Це така собі послуга, яка не вимагає привілеїв root. Чи є спосіб це зробити?

Один з способів покласти sudo -u user commandв rc.local, але редагування rc.localвимагає кореневої привілеї.

Інший спосіб - запускати його з cronкожної хвилини і перевіряти наявність будь-якого запущеного екземпляра, але, по-перше, він прокидає систему без необхідності, по-друге, може бути стан гонки при перевірці запущених екземплярів.

Третій спосіб - запустити його ~/.bash_profile, але я хочу його запустити без входу користувача.

Відповіді:


17

Ви можете використовувати cron, якщо ваша версія має цю @rebootфункцію. Від людини 5 crontab :

Замість перших п'яти полів може з'явитися один з восьми спеціальних рядків:

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

Ви можете редагувати локальну crontab користувача за допомогою команди crontab -eбез привілеїв root. Потім додайте наступний рядок:

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

Тепер ваша команда буде виконуватися один раз під час завантаження.


Це незвично для crontab -eстворення файлу cron під /tmp?
Войовничий шимпанзе

@Elliott Це залежить від редактора. Зрештою файл закінчиться в /var/spool/cron/crontabs.
Марко
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.