У мене був сценарій, який автоматично включає мій wifi без використання networkmanager, але я не знаю, як запустити скрипт як root під час завантаження системи. Як зробити так, щоб сценарій запускався автоматично під час завантаження?
У мене був сценарій, який автоматично включає мій wifi без використання networkmanager, але я не знаю, як запустити скрипт як root під час завантаження системи. Як зробити так, щоб сценарій запускався автоматично під час завантаження?
Відповіді:
Розмістіть сценарій, який потрібно запустити, у каталог /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/каталог.
/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:
$ sudo crontab -e
Додайте наступний запис внизу:
@reboot yourScriptPath
Це зробить те, що ти хочеш.
crontab -e, яка не потребує привілеїв суперпользователя? Цікаво, чи може він запускати сценарії, які потрібно запускати як root.
sudo crontab -eщоб змусити її запускати скрипт як root під час запуску.
/var/run/crond.reboot, якщо ні, то завдання не виконає
Це працювало для мене на 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Моє 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 disable_cdrom.serviceщоб увімкнути системну службу
systemctl enable disable_cdrom.service
Додайте файл Script до /etc/init.d/
дозволу на виконання, а потім встановіть інший рівень запуску
$ update-rc.d script-name default
Він поставить ваш сценарій при запуску завантаження.
update-rc.d script-name enable?
Будьте обережні з додаванням сценарію до rc.local- я застряг на екрані заставки. Натискання Alt+ F1виявило, що відбувається за екраном сплеску (сценарій у rc.localвиконанні).
Я не міг вибратися з цього.
нічого не працює.
Мені довелося завантажуватися із зображення USB USB Ubuntu, знайти rc.local, дати собі дозволи на файл та видалення. Я думаю, вам не слід робити речі, якщо ви не знаєте, що робите.
autostartманіфестах або у*.serviceфайлах у кількох місцях, а також уinit.dабоcrontab. Дивіться це: unix.stackexchange.com/a/525845/43233