MC, 11:37 niedziela, 13.05.2012 r.
Ilustracja do artykułu: Linux rc.local - Jak wykonać zadanie podczas włączania komputera

Linux rc.local - Jak wykonać zadanie podczas włączania komputera

W tym wpisie chciałbym nieco przybliżyć zagadnienie wykonywania pewnych operacji (rozumianych jako wykonywanie poleceń, skryptów, uruchamianie programów itp.) podczas zdarzeń takich jak uruchamianie komputera, wyłączanie go czy restart. Umiejętność podpięcia pod te zdarzenia własnych szeroko rozumianych pomysłów, raz, że jest naprawdę bardzo przydatną umiejętnością a dwa, że daje duże poczucie kontroli nad naszym własnym komputerem. Świadomość, że system zachowuje się tak, jak my to sobie wymyśliliśmy, a nie jedynie tak jak przewidzieli to jego autorzy, jest prawdziwie słodka ;)

Co i po co podpinać?

Po co w ogóle wpychać się w te zdarzenia? Odpowiedzi może być cały worek. Operacji wykonywanie na starcie, zazwyczaj mają na celu dokładniejsze przygotowanie środowiska pracy, w tym np. odpalenie programów, które chcemy mieć włączone wraz z systemem. Z wykonywania pewnych działań podczas restartu, czy wyłączania komputera, może czujemy mniejszą potrzebę korzystanie, jednak to tylko pozory. Wystarczy potrwać trochę z myślą, że można w wygodny sposób zaingerować w przebieg tych zdarzeń, by pojawiły się pomysły, jak wygodnie ułatwić sobie tym pracę i jeszcze bardziej spersonalizować swój komputer. Jeden z przykładów, w mojej ocenie bardzo przydatny, pojawi się w którymś z kolejnych artykułów (ten wpis, można właściwie traktować jako taki wstęp teoretyczny, do czegoś, co pojawi się później).

No dobrze... chcemy dołączać swoje operacje do tych zdarzeń ale w jakiej postaci? Możemy wykonywać pojedyncze polecenia, programy czy skrypty, jednak niezależnie od tego co chcielibyśmy zrobić, proponuję zrobić to w osobnym skrypcie, żeby zachować porządek.
Na potrzeby tego artykułu, załóżmy, że nasz skrypt po prostu utworzy plik na pulpicie naszego użytkownika, po którego istnieniu będziemy wiedzieli, że skrypt został wykonany poprawnie. Proponuję takie coś na kształt:

#!/bin/bash

touch /home/TWÓJ_UŻYTKOWNIK/Pulpit/Udało_się
Oczywiście TWÓJ_UŻYTKOWNIK powinien zostać zastąpiony właściwą nazwą użytkownika. Skrypt zapiszmy pod nazwą naszSkrypt.sh

Uwaga!!!

Nim przejdziemy do sedna sprawy, chciałbym zwrócić uwagę na pewną kluczową sprawę. Każdy skrypt, który będziemy dołączać, musi koniecznie posiadać prawa do wykonywania! Dotyczy to absolutnie każdej opisywanej dalej sytuacji, nawet jeśli nie będę o tym ponownie wspominał. Jeśli nie bardzo wiesz, jak nadać prawa do wykonywania jakimś plikom, to poniższe polecenie powinno być pomocne:
chmod +x naszSkrypt.sh

Zdarzenie włączenia systemu

Teraz już możemy przejść do meritum. W tym miejscu należy zdać sobie sprawę, że dołączanie jakichkolwiek dodatkowych treści podczas różnych operacji systemowych, nie jest żadnym magicznym zabiegiem z pogranicza zepsucia systemu. Są do tego wyznaczone odpowiednie miejsca w postaci plików czy katalogów i przestrzegając kilku bardzo prostych zasad, żadnej krzywdy systemowi nie wyrządzimy.
Jeśli więc chcemy wykonać jakąś czynność, w tym wypadku dołączyć skrypt, który będzie miał za zadanie wykonać się przy starcie systemu, interesować nas powinien plik: /etc/rc.local
Otwórzmy go z pozycji roota, np. w programie gedit:
sudo gedit /etc/rc.local
Najprawdopodobniej to, co zobaczymy, będzie plikiem zawierającym jedynie komentarze i polecenie exit 0. I teraz bardzo ważna rzecz! Jak możemy przeczytać w tychże komentarzach, ten plik zawsze musi kończyć się poleceniem exit 0! Jest to konieczne do prawidłowego uruchomienia systemu. Zatem jeśli chcemy ten plik edytować, to róbmy to tak, aby exit 0 było zawsze obecne na końcu pliku.
W naszym wypadku chcielibyśmy podpiąć uprzednio przygotowany skrypt. Powinniśmy więc otrzymać coś na wzór:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.


sh /ŚCIEŻKA_DO_SKRYPTU/naszSkrypt.sh

exit 0
Po podaniu odpowiedniej ścieżki do naszego skryptu z poleceniem utworzenia pliku oraz zapisaniu zmian w pliku rc.local możemy oczekiwać, że przy ponownym uruchomieniu komputera nasz skrypt zostanie wykonany.

Zapraszam do przeczytania drugiej części artykułu:
Linux rc0.d

Komentarze (4)

Imię:
Treść:
Administrator 2017-11-23 11:48:22
@Praktykant, literówka poprawiona, dziękuję za zgłoszenie. Co zaś dotyczy Twojej uwagi o niedziałaniu, to bez dodatkowych informacji, ciężko jakkolwiek się do niej odnieść.
Praktykant 2017-11-16 13:46:47
Nie działa i w dodatku w artykule jest błąd zamiast od jest of proszę to poprawić Pozdrawiam Praktykant Dariusz
Administrator 2017-09-14 07:03:51
@gość, dziękuję i zapraszam ponownie do czytania i komentowania.
gość 2017-09-12 17:35:26
prosto i konkretnie.