У меня был скрипт, который автоматически включал мой Wi-Fi без использования сетевого менеджера, но я не знаю, как запустить скрипт от имени root, пока система загружается. Как сделать так, чтобы скрипт автоматически запускался во время загрузки?
Включить команду в /etc/rc.local
. Он будет запускаться всякий раз, когда изменяется уровень запуска пользователя.
Примечание: вы должны поместить команду перед последней строкой в /etc/rc.local, которая содержит: «exit 0».
Поместите скрипт, который вы хотите запустить, в каталог /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/
.
Используйте опцию crontab
, чтобы ваш скрипт запускался после перезагрузки,
вы можете сделать это, добавив код @reboot
в cron
@reboot yourScriptPath
сделаю это
Это работало для меня в Ubuntu 17.04:
создайте файл сценария тура, например disable_cdrom
, в удобном для вас месте. В моем случае home/yterle/disable_cdrom
. В моем случае:
#!/bin/sh
eject /dev/sr0 -i 1
сделайте его исполняемым chmod 775 disable_cdrom
/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
Включите ваш файл сценария в /etc/init.d/
с разрешением «Исполняемый файл», затем установите другой уровень запуска
$ update-rc.d script-name default
. Это запустит ваш сценарий при загрузке.
Создайте текстовый файл, подобный этому в /etc/cron.d/
:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot root yourScriptPath
(Вы должны заменить yourScriptPath
на путь к скрипту, который вы хотите запустить.)
Осторожный с добавлением сценария к rc.local
- я застрял в экране-заставке из-за этого. При нажатии Высокого звука + F1 показал то, что продолжалось позади экрана-заставки (сценарий в rc.local
работал).
я не мог выйти из него.
ничто не работает.
я должен был загрузиться из изображения Ubuntu USB, найти rc.local
, дать мне полномочия зарегистрировать и удалить его. Я предполагаю, что Вы не должны делать материала, если Вы не знаете то, что Вы делаете.