У мене був сценарій, який автоматично включає мій 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