Miałem skrypt, który automatycznie włącza moje Wi-Fi bez korzystania z menedżera sieci, ale nie wiem, jak uruchomić skrypt jako root podczas uruchamiania systemu. Jak ustawić automatyczne uruchamianie skryptu podczas uruchamiania?
Miałem skrypt, który automatycznie włącza moje Wi-Fi bez korzystania z menedżera sieci, ale nie wiem, jak uruchomić skrypt jako root podczas uruchamiania systemu. Jak ustawić automatyczne uruchamianie skryptu podczas uruchamiania?
Odpowiedzi:
Umieść skrypt, który chcesz uruchomić, w katalogu /etc/init.d i spraw, aby skrypt był wykonywalny.
chmod 755 myscript
Gdy to zrobisz, utwórz dowiązanie symboliczne w katalogu poziomu uruchamiania, którego chcesz użyć, na przykład, jeśli chcesz uruchomić program na graficznym poziomie pracy 2, domyślnym poziomie uruchamiania dla Ubuntu, umieścisz go w /etc/rc2.d
katalogu. Po prostu nie możesz umieścić go w katalogu, musisz zaznaczyć, kiedy się uruchomi, wskazując uruchomienie za pomocą „S”, a kolejność wykonywania jest ważna. Umieść go po wszystkim innym, co jest w katalogu, nadając mu wyższy numer.
Jeśli ostatnim skryptem, który ma zostać uruchomiony, jest rc.local
jego nazwa S99rc.local
, należy dodać skrypt jako S99myscript
.
ln -s /etc/init.d/myscript /etc/rc3.d/S99myscript
Każdy kompatybilny wstecz /etc/rc*.d
katalog ma dowiązania symboliczne do /etc/init.d/
katalogu.
/etc/rc2.d
zamiast tego, rc3.d
jak wskazano w przykładzie. Wygląda na rc2.d
to, że nie jest to tylko poziom graficzny.
cd /etc/rc`cat /etc/init/rc-sysinit.conf | grep "env DEFAULT_RUNLEVEL" | grep -oP "\d"`.d
przeniesie Cię do /etc/rc?.d
katalogu, który odpowiada domyślnemu poziomowi działania.
rc.local
i jest nazwany S99rc.local
, musisz dodać swój skrypt jako S99myscript
.”. Czy miałeś na myśli: „Jeśli ostatnim skryptem do uruchomienia jest myscript
i jest on nazwany S99myscript
, musisz dodać swój skrypt jako S99myscript
.” ???
Uwzględnij polecenie w /etc/rc.local
. Będzie uruchamiany przy każdej zmianie poziomu uruchamiania użytkownika.
Uwaga: Musisz umieścić polecenie przed ostatnim wierszem w /etc/rc.local, który zawiera: „exit 0”.
/etc/rc.local
który zawiera: exit 0
/etc/rc.local
w Ubuntu 15.10 ma w komentarzu, że „Ten skrypt jest wykonywany na końcu każdego poziomu uruchamiania dla wielu użytkowników”. Więc skrypt może być uruchamiany kilka razy podczas rozruchu, prawda?
Użyj crontab
opcji, aby skrypt był uruchamiany po ponownym uruchomieniu,
możesz to zrobić, dodając @reboot
kod do crona
Otwórz crontab przez użytkownika root:
$ sudo crontab -e
Dodaj następny rekord na dole:
@reboot yourScriptPath
To zrobi, co chcesz.
crontab -e
, które nie wymaga uprawnień administratora? Zastanawiam się, czy może uruchamiać skrypty, które muszą być uruchamiane jako root.
sudo crontab -e
aby uruchomić skrypt jako root podczas uruchamiania.
/var/run/crond.reboot
, jeśli nie, nie wykona zadania
To działało dla mnie w Ubuntu 17.04:
utwórz plik skryptu trasy jak disable_cdrom
w dogodnej dla Ciebie lokalizacji. W moim przypadku home/yterle/disable_cdrom
. W moim przypadku:
#!/bin/sh
eject /dev/sr0 -i 1
sprawiają, że jest wykonywalny chmod 775 disable_cdrom
/etc/systemd/system
i utwórz tam service
plik. Na przykładsudo gedit /etc/systemd/system/disable_cdrom.service
Mój disable_cdrom.service
wygląda tak:
[Unit]
Description=Disable cdrom
[Service]
Type=oneshot
ExecStart=/bin/sh /home/yterle/disable_cdrom
[Install]
WantedBy=multi-user.target
Gdzie ExecStart
punkty, z którymi należy uruchomić skrypt/bin/sh
Następnie uruchom, systemctl enable disable_cdrom.service
aby włączyć usługę systemd
systemctl enable disable_cdrom.service
Dołącz swój plik skryptu /etc/init.d/
z uprawnieniem do wykonywania, a następnie ustaw inny poziom uruchamiania
$ update-rc.d script-name default
Spowoduje to uruchomienie skryptu podczas uruchamiania systemu.
update-rc.d script-name enable
?
Ostrożnie dodając skrypt do rc.local
- Utknąłem z tego powodu na ekranie powitalnym. Naciśnięcie Alt+ F1ujawniło, co działo się za ekranem powitalnym (uruchomiony skrypt rc.local
).
Nie mogłem się z tego wydostać.
nic nie działa.
Musiałem uruchomić z obrazu Ubuntu USB, znaleźć rc.local
, dać sobie uprawnienia do pliku i usunąć go. Myślę, że nie powinieneś robić rzeczy, jeśli nie wiesz, co robisz.
autostart
manifestach lub w*.service
plikach w kilku lokalizacjach, a także winit.d
lubcrontab
. Zobacz: unix.stackexchange.com/a/525845/43233