Wiem, że to pytanie zostało zadane kilka razy, ale po prostu nie mogę go uruchomić.
Oto kroki, które podjąłem, aby go uruchomić:
- napisał skrypt zapisany jako
collection.sh
- przeprowadził się
collection.sh
do/etc/init.d
- wykonywane,
$ sudo chmod 711 /etc/init.d/collection.sh
aby ustawić uprawnienia do wykonania skryptu - wykonane w
$ ln -s /etc/init.d/collection.sh /etc/rc0.d/
celu utworzenia dowiązania symbolicznego w/etc/rc0.d
- ponownie uruchomiłem maszynę za pomocą
$ sudo reboot
Te kroki zakończyły się niepowodzeniem collection.sh
podczas uruchamiania. Czy ktoś może więc wskazać, co zrobiłem źle?
Pomyślałem, że może tworzę dowiązanie symboliczne w niewłaściwym rc?.d
folderze, ponieważ są rc
foldery 0-6 i S. Jeśli tak, w którym folderze należy go utworzyć?
collection.sh
należy zrobić lub czego się spodziewać, że to się nie powiedzie, na to pytanie nie można odpowiedzieć w obecnej formie.Odpowiedzi:
Robisz 3 rzeczy źle, co widzę.
Po pierwsze: chcesz umieścić swoje miękkie łącze,
/etc/rcS.d/
aby działało, gdy komputer przejdzie w tryb „pojedynczego użytkownika” (brak dostępu do sieci), i/etc/rc[2-5].d/
aby było uruchomione, gdy urządzenie przejdzie w tryb „wielu użytkowników” (poziomy 2 do 5) . Poziom pracy 0/etc/rc0.d/
jest wprowadzany tylko wtedy, gdy maszyna ma zostać zamknięta. Runlevel 6 służy do „restartu”. Zobacz stronę wikipedii dla poziomów uruchomieniowych UNIXPo drugie: nazwa softlink nie może być
collection.sh
. Musi mieć postać, wS09collection
której „S” oznacza Start, a „09” oznacza Start po uruchomieniu wszystkich 08 skryptów . Zobacz tutaj po więcej szczegółów.Po trzecie: init służy do uruchamiania usług demona i nie powinien być używany do bezpośredniego uruchamiania collection.sh. Musisz utworzyć rzeczywisty skrypt inicjujący, który obsługuje uruchamianie i zatrzymywanie demona collection.sh. Przeanalizuj wcześniej istniejące skrypty inicjujące,
/etc/init.d/
aby poznać ich działanie. Alternatywnie, spójrz na poniższe linki, aby uzyskać więcej dokumentacji na temat pisania skryptów inicjujących.Nie musisz też tworzyć dowiązań symbolicznych bezpośrednio w
/etc/rc?.d
folderach. Wszystkie główne dystrybucje mają do tego celu zautomatyzowane narzędzia. Zobacz ten artykuł, aby uzyskać więcej informacji.źródło
Trudno zrozumieć, dlaczego to nie działa bez obejrzenia skryptu, ale kroki, które podjęliście, wyglądają rozsądnie.
Mogą istnieć pewne możliwości wyjaśniające awarię
Inną metodą uruchamiania skryptu przy uruchamianiu (w przypadku większości dystrybucji) jest po prostu dodanie go do /etc/rc.local - ma to tę dodatkową zaletę, że działa jako ostatni, więc zostaną spełnione warunki wstępne.
źródło
Łącza symboliczne muszą być poprzedzone trzema znakami składającymi się z „S” dla startu lub „K” dla kill / stop, po którym następuje dwucyfrowa kolejność.
Większość dystrybucji zawiera taki program,
update-rc.d
który utworzy i usunie dowiązania symboliczne zgodnie z potrzebami. Wypróbuj polecenie,man -k rc.d
aby znaleźć dokumentację.Możesz mieć szablon w swoim
/etc/init.d
katalogu. Może zawierać specjalnie sformatowane komentarze, które mają dostarczyć parametry programu aktualizacji rd.d. Jeśli nie masz szablonu, prawdopodobnie masz tam prosty skrypt, którego możesz użyć jako szablonu.Niektóre dystrybucje przechodzą na alternatywne metody przeprowadzania inicjalizacji. Sprawdź dokumentację dystrybucji.
źródło