@WhiteColor75

Как добавить bash в автозагрузку от имени root?

В файле под названием main.sh записано следующее :
modprobe -r uvcvideo
Из консоли он не запускается, выводит operation permitted
Как мне заставить его запускаться при старте системы, если учесть что сам скрипт запускается только от имени рут? Пароль запрашиваться не должен!
  • Вопрос задан
  • 166 просмотров
Решения вопроса 5
@voleg4u
http://www.voleg.info/
Тебе заблокировать модуль ? Почитай про blacklist в modprobe.d .
Ответ написан
Комментировать
@Vindicar
Если убунта новая - то сделай из него systemd модуль. Тебе нужен тип one-shot, т.е. который выполняется и завершается, а не работает постоянно. Вот приблизительный пример. Допустим, файл называется foo.service
[Unit]
#человекочитаемое описание
Description=Setup foo

[Service]
Type=oneshot
#это путь к скрипту, который будет выполняться разово при запуске сервиса
ExecStart=/opt/foo/setup-foo.sh
#если ExecStart отработал, сервис считается активным
RemainAfterExit=true
#это путь к скрипту, который будет выполняться разово при остановке сервиса
ExecStop=/opt/foo/teardown-foo.sh
StandardOutput=journal

[Install]
#когда запускать скрипт при загрузке - когда готовы выполняться от имени пользователей, или когда сеть есть, или ещё когда.
WantedBy=multi-user.target


Создав файл, не забудь сделать systemctl daemon-reload чтобы systemd подцепил изменения.
А чтобы срабатывало при загрузке - systemctl enable foo.service. Если назвал файл иначе, поправь последний аргумент.
Если твои скрипты не отмечены как испоняемые, или не имеют в первой строке #!/bin/bash, то тогда надо изменить строки ExecStart/ExecStop так:
ExecStart=/bin/bash /opt/foo/setup-foo.sh
Ответ написан
Комментировать
@WhiteColor75 Автор вопроса
Больше всем спасибо и всем кто отвечал!Я разобрался! =>
Добавил filename.conf в /etc/modprobe.d
В файле записано следующее =>
blacklist uvcvideo
Просто подход был не тот :(
Ответ написан
Комментировать
Ну, .sh в конце по нонешним временам - эт лишнее, без него можно и нужно.

В шапке скрипта, надеюсь:
#!/bin/bash
присуйтствует?

А также, ты его, надеюсь, исполняемым сделал:
sudo chmod o+x /путь_к_срипту/main
???

И, из консоли его, если ты в сессии пользователя, чтобы он от рута запускался, апосля всех условий выше, надо через sudo запускать:
sudo ./main
А про автозагрузку тебе парни уже всё написали...
Systemd, Supervisor, Cron (crontab) - что душе угодно...
Ответ написан
@Drno
Файл исполняемый ?
Тогда добавбте его в кронтаб
sudo crontab -e
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы