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?
59
autostart
manifestach lub w*.service
plikach w kilku lokalizacjach, a także winit.d
lubcrontab
. Zobacz: unix.stackexchange.com/a/525845/43233Odpowiedzi:
Umieść skrypt, który chcesz uruchomić, w katalogu /etc/init.d i spraw, aby skrypt był wykonywalny.
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 nazwaS99rc.local
, należy dodać skrypt jakoS99myscript
.Każdy kompatybilny wstecz
/etc/rc*.d
katalog ma dowiązania symboliczne do/etc/init.d/
katalogu.źródło
/etc/rc2.d
zamiast tego,rc3.d
jak wskazano w przykładzie. Wygląda narc2.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 nazwanyS99rc.local
, musisz dodać swój skrypt jakoS99myscript
.”. Czy miałeś na myśli: „Jeśli ostatnim skryptem do uruchomienia jestmyscript
i jest on nazwanyS99myscript
, musisz dodać swój skrypt jakoS99myscript
.” ???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”.
źródło
/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 cronaOtwórz crontab przez użytkownika root:
Dodaj następny rekord na dole:
To zrobi, co chcesz.
źródło
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 zadaniaTo działało dla mnie w Ubuntu 17.04:
utwórz plik skryptu trasy jak
disable_cdrom
w dogodnej dla Ciebie lokalizacji. W moim przypadkuhome/yterle/disable_cdrom
. W moim przypadku:sprawiają, że jest wykonywalny
chmod 775 disable_cdrom
/etc/systemd/system
i utwórz tamservice
plik. Na przykładsudo gedit /etc/systemd/system/disable_cdrom.service
Mój
disable_cdrom.service
wygląda tak: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źródło
systemctl enable disable_cdrom.service
Dołącz swój plik skryptu
/etc/init.d/
z uprawnieniem do wykonywania, a następnie ustaw inny poziom uruchamianiaSpowoduje to uruchomienie skryptu podczas uruchamiania systemu.
źródło
update-rc.d script-name enable
?Utwórz taki plik tekstowy w
/etc/cron.d/
:(Należy zastąpić
yourScriptPath
ścieżką do skryptu, który chcesz uruchomić).źródło
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 skryptrc.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.źródło