Как запустить скрипт во время загрузки как root

У меня был скрипт, который автоматически включал мой Wi-Fi без использования сетевого менеджера, но я не знаю, как запустить скрипт от имени root, пока система загружается. Как сделать так, чтобы скрипт автоматически запускался во время загрузки?

59
задан 17 February 2014 в 13:10

7 ответов

Включить команду в /etc/rc.local. Он будет запускаться всякий раз, когда изменяется уровень запуска пользователя.

Примечание: вы должны поместить команду перед последней строкой в ​​/etc/rc.local, которая содержит: «exit 0».

0
ответ дан 17 February 2014 в 13:10

Поместите скрипт, который вы хотите запустить, в каталог /etc/init.d и сделайте скрипт исполняемым.

chmod 755 myscript

Как только это будет сделано, создайте символическую ссылку в каталоге уровня запуска, который вы хотели бы использовать, например, если вы хотите запустить программу на графическом уровне запуска 2, уровне запуска по умолчанию для Ubuntu, вы должны разместить его в каталоге /etc/rc2.d. Вы просто не можете поместить его в каталог, вы должны указать, когда он будет работать, указав при запуске «S», и порядок выполнения важен. Поместите его после всего остального, что находится в каталоге, присвоив ему большее число.

Если последним скриптом, который нужно запустить, является rc.local и он называется S99rc.local, то вам нужно добавить свой скрипт как S99myscript.

ln -s /etc/init.d/myscript /etc/rc3.d/S99myscript

Каждый обратно совместимый каталог /etc/rc*.d имеет символические ссылки на каталог /etc/init.d/.

0
ответ дан 17 February 2014 в 13:10

Используйте опцию crontab, чтобы ваш скрипт запускался после перезагрузки,

вы можете сделать это, добавив код @reboot в cron

@reboot yourScriptPath 

сделаю это

0
ответ дан 17 February 2014 в 13:10

Это работало для меня в Ubuntu 17.04:

  1. создайте файл сценария тура, например disable_cdrom, в удобном для вас месте. В моем случае home/yterle/disable_cdrom. В моем случае:

    #!/bin/sh
    eject /dev/sr0 -i 1
    
  2. сделайте его исполняемым chmod 775 disable_cdrom

  3. перейдите к /etc/systemd/system и создайте там файл service. Например, sudo gedit /etc/systemd/system/disable_cdrom.service

My disable_cdrom.service выглядит следующим образом:

[Unit]
Description=Disable cdrom

[Service]
Type=oneshot
ExecStart=/bin/sh /home/yterle/disable_cdrom

[Install]
WantedBy=multi-user.target

Где ExecStart указывает на запуск вашего скрипта с /bin/sh

Затем запустите systemctl enable vgaoff.service, чтобы включить службу systemd

0
ответ дан 17 February 2014 в 13:10

Включите ваш файл сценария в /etc/init.d/ с разрешением «Исполняемый файл», затем установите другой уровень запуска

$ update-rc.d script-name default

. Это запустит ваш сценарий при загрузке.

0
ответ дан 17 February 2014 в 13:10

Создайте текстовый файл, подобный этому в /etc/cron.d/:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

@reboot   root    yourScriptPath

(Вы должны заменить yourScriptPath на путь к скрипту, который вы хотите запустить.)

0
ответ дан 17 February 2014 в 13:10

Осторожный с добавлением сценария к rc.local - я застрял в экране-заставке из-за этого. При нажатии Высокого звука + F1 показал то, что продолжалось позади экрана-заставки (сценарий в rc.local работал).

я не мог выйти из него.

  • Ctrl + Высокий звук + Del или
  • Высокий звук + PrtSc + K или
  • Ctrl + Высокий звук + F#

ничто не работает.

я должен был загрузиться из изображения Ubuntu USB, найти rc.local, дать мне полномочия зарегистрировать и удалить его. Я предполагаю, что Вы не должны делать материала, если Вы не знаете то, что Вы делаете.

1
ответ дан 14 October 2019 в 10:32

Другие вопросы по тегам:

Похожие вопросы: