MC, 12:25 niedziela, 13.05.2012 r.
Ilustracja do artykułu: Linux rc0.d, rc6.d - Jak wykonać zadanie podczas wyłączania, lub resetu komputera

Linux rc0.d, rc6.d - Jak wykonać zadanie podczas wyłączania, lub resetu komputera

Dalszy ciąg artykułu na temat wykonywania skryptów, programów i poleceń w czasie zdarzeń takich jak włączanie, wyłączanie czy restart systemu.

Część pierwsza artykułu

W ⁣b>pierwszej części tego wpisu, dostępnej tutaj - Linux rc.local, omówiliśmy, w jaki sposób wykonać skrypt w czasie włączania komputera. Jeśli nie dane Ci było przeczytać pierwszej części, to zachęcam do przejrzenia go, ponieważ zawiera również kilka istotnych uwag wstępnych, których nie będę tutaj powtarzać.

Zdarzenie wyłączenia komputera

W katalogu /etc/ znajduje się sześć podkatalogów o nazwie rc*.d, gdzie gwiazdka to cyfra z zakresu 0-6. Są to katalogi, w których znajdują się skrypty (czy częściej dowiązania do nich), które wykonywane są podczas odpowiednich zdarzeń. W tym wypadku interesować nas będzie katalog o ścieżce /etc/rc0.d/⁣, ponieważ, to jego zawartość wykonywana jest podczas wyłączania komputera. Zajrzyjmy, jaką ma zawartość:
$ ls /etc/rc0.d/
K09apache2                  K20winbind              S30urandom
K19sendmail                 K31atieventsd           S31umountnfs.sh
K20postfix                  K74bluetooth            S35networking
K20pppstatus                K80openvpn              S40umountfs
K20speech-dispatcher        README                  S60umountroot
K20vboxballoonctrl-service  S01Synchronize.sh       S90halt
K20vboxdrv                  S10unattended-upgrades  
K20vboxweb-service          S20sendsigs
Jak widzimy, nazwy plików są dość charakterystyczne, ponieważ rozpoczynają się od K lub S, następnie występuje liczba zapisana w dwóch znakach a dalej zwykła nazwa skryptu. Dzieje się tak, ponieważ we wszystkich tych katalogach (/etc/rc*.d), skrypty wykonywane są podług kolejności alfabetycznej. Nietrudno się domyślić, że kolejność włączania pewnych procesów (skrypty rozpoczynające się od S - start) jak i ich wyłączania (skrypty na K od słowa kill) ma ogromne znaczenie podczas operacji takich jak włączanie, czy wyłączanie systemu. Z tego powodu zaleca się swoje własne skrypty umieścić w pliku rozpoczynającym się od K99, aby mieć pewność, że swoimi działaniami nie zakłócimy pracy systemu.

Znamy już teorię, która wystarczy nam do praktycznego działania. Nietrudno się pewnie domyśleć, że aby wykonać jakąś operację w czasie wyłączania systemu, należy umieścić w katalogu /etc/rc0.d/ swój skrypt lub dowiązanie do niego, pamiętając o zachowaniu konwencji nazw oraz kolejności wykonywania skryptów. Żeby było bardziej elegancko, stwórzmy dowiązanie do przykładowego skryptu znanego nam z pierwszej części artykułu:

sudo ln /ŚCIEŻKA_DO_SKRYPTU/naszSkrypt.sh /etc/rc0.d/K99NaszSkrypt.sh
W ten sposób skrypt naszSkrypt.sh zostanie wykonany każdorazowo podczas wyłączania komputera.

Zdarzenie resetu komputera

Jeśli chodzi o dołączenie skryptu, który będzie miał być wykonany w czasie restartu systemu, występuje pełna analogia do powyższego przykładu, tyle że interesować nas będzie katalog /etc/rc6.d/⁣, ponieważ to jego zawartość wykonywana jest w czasie rebootu. Sprawdźmy, co ten katalog zawiera:
$ ls /etc/rc6.d/
K09apache2                  K20winbind              S31umountnfs.sh
K19sendmail                 K31atieventsd           S35networking
K20postfix                  K74bluetooth            S40umountfs
K20pppstatus                K80openvpn              S60umountroot
K20speech-dispatcher        README                  S90reboot
K20vboxballoonctrl-service  S10unattended-upgrades  
K20vboxdrv                  S20sendsigs
K20vboxweb-service          S30urandom
Widzimy, że nie ma w nim nic, co by nas już zaskakiwało. Konwencja nazewnictwa dokładnie ta sama, z dokładnie tych samych przyczyn. Co z tym idzie? To, że dowiązanie robimy w dokładnie ten sam sposób, tylko do katalogu /etc/rc6.d/ a nasz skrypt zostanie wykonany nie w czasie wyłączania systemu (halt) a jego restarcie (reboot).

Komentarze (3)

Imię:
Treść:
Dariusz Praktykant 2017-11-16 14:06:01
Dnień dobry, Czy może mi ktoś pomóc ze skryptem do rdesktop bo mi nie działa Z góry dziękuje do widzenia! Praktykant Dariusz :)
Administrator 2017-10-03 07:16:25
@gosc, przykro mi, ale nie potrafię odpowiedzieć na Twoje pytanie. Może ktoś inny zechce podzielić się doświadczeniem w komentarzu.
gosc 2017-10-03 06:45:02
ok, jesl chodzio ubuntu - kurs sie sprawdza. ale co w przypadku urzadzen z wbudowanym linuxem? jest tylko rc.local?