Как автоматически запустить фоновую программу пользователем без полномочий root?

14

Как пользователь без полномочий root, я хочу запускать фоновое задание при загрузке системы. Это своего рода сервис, который не требует привилегий 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

Теперь ваша команда будет запущена один раз во время загрузки.

Marco
источник
Это необычно для crontab -eсоздания файла cron под /tmp?
Воинственный шимпанзе
@ Эллиотт Это зависит от вашего редактора. В конце концов файл окажется в /var/spool/cron/crontabs.
Марко