Ubuntu - запускать команду при запуске с помощью «sudo»

91

Я хотел бы запустить sudoкоманду при запуске Ubuntu (до того, как кто-либо войдет в систему):

sudo searchd

Как мне это сделать?

Марк Уиллис
источник

Ответы:

195

Вы можете добавить команду в /etc/rc.localсценарий, который выполняется в конце запуска.

Напишите команду раньше exit 0. Все, что написано после exit 0, никогда не будет выполнено.

Дидье Троссет
источник
38
Раньше точно. Все, что написано после exit 0, никогда не будет выполнено.
Дидье Троссет
Привет, у меня также есть и команда rvmsudo, которую нужно выполнить в той же ситуации. команда обычно запрашивает пароль. Возникнут ли проблемы, если я помещу команду непосредственно в /etc/rc.local?
ravi1991 09
@fmonegaglia Это зависит от обстоятельств. Если вы хотите, чтобы команда была запущена, а сценарий ожидает ее завершения, прежде чем перейти к следующей команде в сценарии, тогда нет &. Если вы хотите, чтобы следующая команда запускалась, даже если текущая еще не завершена, добавьте файл &.
Дидье Троссет
@NoOne Проверить права доступа к этому файлу для текущего пользователя. Запуск команды редактора с помощью sudo может помочь.
Дидье Троссет
1
Конечно, он существует, и да, я установил исполняемый бит. При попытке включить службу я получаю только The unit files have no installation config (WantedBy, RequiredBy, Also, Alias settings in the [Install] section, and DefaultInstance for template units) […].советы по этому поводу ?
oarfish
9

Отредактируйте конфигурацию tty /etc/init/tty*.confс помощью сценария оболочки в качестве параметра:

(...)
exec /sbin/getty -n -l  theInputScript.sh -8 38400 tty1
(...)

Предполагается, что мы редактируем tty1, а сценарий, который считывает ввод, - этоInputScript.sh.

Предупреждение: этот скрипт запускается от имени пользователя root, поэтому, когда вы вводите в него данные, у вас есть привилегии root. Также добавьте путь к расположению скрипта.

Важно: скрипт по завершении должен вызывать / sbin / login, иначе вы не сможете войти в систему в терминале.

Самородок
источник
1
этот ответ был очень полезен для меня при создании нашего продукта, большое спасибо
Хосе Ф. Романиелло
0

Хорошие ответы. Вы также можете установить задания (т.е. команды) с помощью « Crontab » для большей гибкости (который предоставляет различные варианты для запуска сценариев, регистрации выходных данных и т. Д.), Хотя для этого требуется больше времени, чтобы понять и правильно настроить:

Используя '@reboot', вы можете запустить команду один раз при запуске.

Завершение : беги$ sudo crontab -e -u root

И добавьте строку в конце файла с вашей командой следующим образом:

@reboot sudo searchd
Хави
источник