У меня был скрипт, который автоматически включал мой Wi-Fi без использования сетевого менеджера, но я не знаю, как запустить скрипт от имени пользователя root во время загрузки системы. Как сделать так, чтобы скрипт автоматически запускался во время загрузки?
59
autostart
манифестах или в*.service
файлах в нескольких местах, а также вinit.d
илиcrontab
. Смотрите это: unix.stackexchange.com/a/525845/43233Ответы:
Поместите скрипт, который вы хотите запустить, в каталог /etc/init.d и сделайте скрипт исполняемым.
Как только это будет сделано, создайте символическую ссылку в каталоге уровня запуска, который вы хотели бы использовать, например, если вы хотите запустить программу с графическим уровнем запуска 2, уровнем запуска по умолчанию для Ubuntu, вы поместите ее в
/etc/rc2.d
каталог. Вы просто не можете поместить его в каталог, вы должны указать, когда он будет работать, указав при запуске «S», и порядок выполнения важен. Разместите его после всего остального, что находится в каталоге, присвоив ему большее число.Если последний запущенный скрипт имеет имя
rc.local
и имя,S99rc.local
то вам нужно добавить свой скрипт какS99myscript
.Каждый обратно совместимый
/etc/rc*.d
каталог имеет символические ссылки на/etc/init.d/
каталог.источник
/etc/rc2.d
, а неrc3.d
как указано в примере. Кажется,rc2.d
это не только графический уровень запуска.cd /etc/rc`cat /etc/init/rc-sysinit.conf | grep "env DEFAULT_RUNLEVEL" | grep -oP "\d"`.d
приведет вас к тому, какой/etc/rc?.d
каталог соответствует вашему уровню запуска по умолчанию.rc.local
и он назван,S99rc.local
вам нужно добавить ваш скрипт какS99myscript
.». Возможно, вы имели в виду: «Если последний скрипт, который нужно запустить,myscript
и он назван,S99myscript
вам нужно добавить свой скрипт какS99myscript
.» ???Включить команду в
/etc/rc.local
. Он будет запускаться всякий раз, когда изменяется уровень запуска пользователя.Примечание: вы должны поместить команду перед последней строкой в /etc/rc.local, которая содержит: «exit 0».
источник
/etc/rc.local
, содержащей:exit 0
/etc/rc.local
В Ubuntu 15.10 есть комментарий, что «Этот скрипт выполняется в конце каждого многопользовательского уровня запуска». Так что скрипт может быть запущен несколько раз во время загрузки, верно?Используйте
crontab
опцию, чтобы ваш скрипт запускался после перезагрузки,Вы можете сделать это, добавив
@reboot
код в cronОткройте crontab пользователем root:
Добавьте следующую запись внизу:
Это будет делать то, что вы хотите.
источник
crontab -e
имели в виду использование команды , которая не требует привилегий суперпользователя? Интересно, может ли он запускать скрипты, которые нужно запускать с правами root.sudo crontab -e
чтобы он запускал скрипт от имени root во время запуска./var/run/crond.reboot
, если нет, не будет выполнять задачуЭто работало для меня на Ubuntu 17.04:
Создайте файл сценария тура, как
disable_cdrom
в удобном для вас месте. В моем случаеhome/yterle/disable_cdrom
. В моем случае:сделать его исполняемым
chmod 775 disable_cdrom
/etc/systemd/system
и создайте тамservice
файл. Напримерsudo gedit /etc/systemd/system/disable_cdrom.service
Моя
disable_cdrom.service
выглядит так:Где
ExecStart
указывает на запуск вашего скрипта/bin/sh
Затем запустите,
systemctl enable disable_cdrom.service
чтобы включить службу systemdисточник
systemctl enable disable_cdrom.service
Включите ваш файл Script
/etc/init.d/
с разрешением «Исполняемый файл», затем установите другой уровень запускаЭто поместит ваш скрипт в автозагрузку.
источник
update-rc.d script-name enable
?Создайте текстовый файл следующим образом
/etc/cron.d/
:(Вам следует заменить
yourScriptPath
путь к сценарию, который вы хотите запустить.)источник
Осторожно с добавлением скрипта в
rc.local
- я застрял в заставке из-за этого. Нажатие Alt+ F1показало, что происходит за заставкой (скриптrc.local
был запущен).Я не мог выйти из этого.
ничего не работает
Мне пришлось загрузиться с образа USB Ubuntu, найти
rc.local
, дать себе разрешения на файл и удалить его. Я думаю, что вы не должны делать вещи, если вы не знаете, что делаете.источник