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

45

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

    
задан user128712 03.05.2013 в 14:08
источник

6 ответов

42

Поместите скрипт, который вы хотите запустить, в каталог /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/ .

    
ответ дан Radu Rădeanu 03.05.2013 в 14:28
источник
24

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

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

    
ответ дан thefourtheye 03.05.2013 в 14:13
10

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

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

@reboot yourScriptPath 

сделает это

    
ответ дан hs.chandra 03.05.2013 в 14:19
5

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

$ update-rc.d script-name default

Он загрузит ваш скрипт при загрузке.

    
ответ дан M S Parmar 05.06.2015 в 20:21
3

Создайте текстовый файл в /etc/cron.d/ :

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

@reboot   root    yourScriptPath

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

    
ответ дан jarno 27.12.2015 в 14:43
2

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

  1. создать файл сценария путешествия, например, disable_cdrom в удобном для вас месте место нахождения. В моем случае home/yterle/disable_cdrom . В моем случае:
#!/bin/sh
eject /dev/sr0 -i 1
  1. сделать его исполняемым chmod 775 disable_cdrom
  2. перейдите к /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

    
ответ дан YTerle 28.09.2017 в 23:11