Zrozumienie i uczenie się Podstawowe skrypty skorupowe i rozwiązywanie problemów z systemem plików Linux - Część 10

Zrozumienie i uczenie się Podstawowe skrypty skorupowe i rozwiązywanie problemów z systemem plików Linux - Część 10

Fundacja Linux uruchomiła LFCS certyfikacja (Sysadmin z certyfikatem Linux Foundation; Jeśli chodzi o podniesienie problemów z drużynami wyższymi wsparcia.

Certyfikowana Fundacja Linux Sysadmin - część 10

Sprawdź poniższy film, który prowadzi do wprowadzenia do programu certyfikacji Fundacji Linux.

To jest ostatni artykuł (część 10) obecnej serii 10-tutorialnej. W tym artykule skupimy się na podstawowych skryptach skorupowych i rozwiązywaniu problemów z systemami plików Linux. Oba tematy są wymagane do egzaminu certyfikacyjnego LFCS.

Zrozumienie terminali i muszli

Wyjaśnijmy najpierw kilka koncepcji.

  1. Shell to program, który przejmuje polecenia i daje je systemowi operacyjnym do wykonania.
  2. Terminal to program, który pozwala nam jako użytkownikom końcowym na interakcję z powłoką. Jednym z przykładów terminalu jest terminal gnome, jak pokazano na poniższym obrazku.
Terminal gnome

Kiedy po raz pierwszy uruchomimy powłokę, przedstawia wiersz polecenia (znany również jako wiersz poleceń), który mówi nam, że powłoka jest gotowa zacząć akceptować polecenia ze standardowego urządzenia wejściowego, które zwykle jest klawiaturą.

Możesz odwołać się do innego artykułu w tej serii (użyj polecenia, aby tworzyć, edytować i manipulować plikami - część 1), aby przejrzeć niektóre przydatne polecenia.

Linux zapewnia szereg opcji dla powłok, a następujące są najczęstsze:

Bash Shell

Grzmotnąć oznacza Bourne ponownie Shell i jest domyślną powłoką projektu GNU. Zawiera przydatne funkcje z Shorn Shell (KSH) i C Shell (CSH), oferując jednocześnie kilka ulepszeń. Jest to domyślna powłoka używana przez rozkłady objęte certyfikatem LFCS i jest to powłoka, której użyjemy w tym samouczku.

SH Shell

Bourne Shell jest najstarszą skorupą i dlatego od wielu lat jest domyślną powłoką wielu systemów operacyjnych podobnych do Unix.

KSH Shell

Korn Shell to powłoka Unix, która została opracowana przez Davida Korna w Bell Labs na początku lat osiemdziesiątych. Jest kompatybilny go z Bourne Shell i zawiera wiele cech C Shell.

Skrypt powłoki jest niczym więcej niż plik tekstowy przekształcony w program wykonywalny, który łączy polecenia wykonywane przez powłokę jeden po drugim.

Podstawowe skontaktowanie skorupy

Jak wspomniano wcześniej, skrypt powłoki rodzi się jako zwykły plik tekstowy. W ten sposób można być tworzone i edytowane za pomocą naszego preferowanego edytora tekstu. Możesz rozważyć użycie vi/m (patrz użycie edytora vi - część 2 tej serii), która ma podświetlenie składni dla wygody.

Wpisz następujące polecenie, aby utworzyć plik o nazwie myscript.SH i naciśnij Enter.

# vim myscript.cii 

Pierwszy wiersz skryptu powłoki musi być następujący (znany również jako A szulernia).

#!/bin/bash 

To "mówi„System operacyjny Nazwa tłumacza, której należy użyć do uruchamiania następującego tekstu.

Teraz nadszedł czas, aby dodać nasze polecenia. Możemy wyjaśnić cel każdego polecenia lub całego skryptu, dodając również komentarze. Zauważ, że skorupa ignoruje te linie zaczynające się od znaku funta # (komentarze wyjaśniające).

#!/bin/bash echo Jest to część 10 z serii 10-artystycznej o echo certyfikacji LFCS to $ (data +%y-%m-%d) 

Po napisaniu i zapisaniu skryptu musimy uczynić go wykonywaniem.

# CHMOD 755 myscript.cii 

Przed uruchomieniem naszego skryptu musimy powiedzieć kilka słów o $ Ścieżka Zmienna środowiskowa. Jeśli biegniemy,

Echo $ ścieżka 

Z wiersza poleceń zobaczymy zawartość $ Ścieżka: rozdzielona na okrężnicy lista katalogów, które są przeszukiwane, gdy wprowadzamy nazwę programu wykonywalnego. Nazywa się to zmienną środowiskową, ponieważ jest częścią środowiska powłoki - zestaw informacji, które stają się dostępne dla powłoki i jego dzieci, gdy powłoka zostanie uruchomiona.

Kiedy wpisujemy polecenie i naciśniemy Enter, powłoka wyszukuje we wszystkich katalogach wymienionych w $ Ścieżka zmienne i wykonuje pierwszą znalezioną instancję. Zobaczmy przykład,

Zmienne środowiska

Jeśli istnieją dwa pliki wykonywalne o tej samej nazwie, jeden w /usr/lokalny/bin i inny /usr/bin, Jeden w pierwszym katalogu zostanie wykonany pierwszy, podczas gdy drugi zostanie zignorowany.

Jeśli nie zapisaliśmy naszego skryptu w jednym z katalogów wymienionych w $ Ścieżka zmienne, musimy dołączyć ./ do nazwy pliku, aby go wykonać. W przeciwnym razie możemy to uruchomić, tak jak zrobilibyśmy to ze zwykłym poleceniem.

# pwd # ./myscript.SH # CP MYSCRIPT.sh… /bin # cd… /bin # pwd # myscript.cii 
Wykonaj skrypt

Warunki

Ilekroć musisz określić różne kursy działania, które należy podjąć w skrypcie powłoki, w wyniku sukcesu lub porażki polecenia, użyjesz Jeśli konstruować, aby zdefiniować takie warunki. Jego podstawowa składnia to:

Jeśli stan; Następnie polecenia; inaczej innymi komandorami fi 

Gdzie STAN może być jednym z poniższych (tylko najczęstsze warunki są tu cytowane) i ocenia się na true, kiedy:

  1. [ -plik ] → Plik istnieje.
  2. [-d Plik] → Plik istnieje i jest katalogiem.
  3. [-f plik] → Plik istnieje i jest zwykłym plik.
  4. [-u plik] → Plik istnieje, a jego bit SUID (ustawiony identyfikator użytkownika) jest ustawiony.
  5. [-g plik] → Plik istnieje, a jego bit SGID jest ustawiony.
  6. [-k Plik] → Plik istnieje, a jego lepki bit jest ustawiony.
  7. [-r plik] → Plik istnieje i jest czytelny.
  8. [-s plik]→ Plik istnieje i nie jest pusty.
  9. [-w plik]→ Plik istnieje i jest zapisany.
  10. [-x Plik] jest prawdą, jeśli plik istnieje i jest wykonywalny.
  11. [string1 = String2] → Strings są równe.
  12. [String1 != String2] → Strings nie są równe.

[int1 op Int2] powinny być częścią poprzedniej listy, podczas gdy następujące elementy (na przykład, -Eq -> jest prawdą, jeśli int1 jest równe int2.) powinien być „dzieci" Lista [ int1 op int2 ] gdzie OP jest jednym z następujących operatorów porównawczych.

  1. -Eq -> jest prawdą, jeśli INT1 jest równe INT2.
  2. -ne -> Prawda, jeśli INT1 nie jest równe INT2.
  3. -Lt -> To prawda, jeśli INT1 jest mniej niż INT2.
  4. -le -> To prawda, jeśli INT1 jest mniejszy lub równy INT2.
  5. -GT -> To prawda, jeśli INT1 jest większy niż INT2.
  6. -Ge -> To prawda, jeśli INT1 jest większy lub równy INT2.

Dla pętli

Ta pętla pozwala na wykonanie jednego lub więcej poleceń dla każdej wartości na liście wartości. Jego podstawowa składnia to:

dla pozycji w sekwencji; DO Polecenia; zrobione 

Gdzie przedmiot to zmienna ogólna, która reprezentuje każdą wartość w SEKWENCJA podczas każdej iteracji.

Podczas pętli

Ta pętla pozwala na wykonanie serii powtarzających się poleceń, o ile polecenie sterowania wykonuje się ze statusem wyjścia równym zero (pomyślnie). Jego podstawowa składnia to:

podczas oceny_command; wykonać Execute_Commands; zrobione 

Gdzie Ocena_command może być dowolne polecenie, które mogą wyjść z powodzeniem (0) lub niepowodzenie (inne niż 0) Status i Execute_Commands mogą być dowolnym programem, skryptem lub konstrukcją powłoki, w tym inne zagnieżdżone pętle.

Kładąc wszystko razem

Wykazamy użycie konstrukcji IF i pętli dla następującego przykładu.

Określenie, czy usługa działa w dystrybucji opartej na systemie

Utwórzmy plik z listą usług, które chcemy monitorować na pierwszy rzut oka.

# Cat MyServices.txt sshd mariadb httpd crond firewalld 
Skrypt do monitorowania usług Linux

Nasz skrypt powinien wyglądać jak.

#!/bin/bash # Ten skrypt itera listy usług, a # służy do ustalenia, czy działają, czy nie. do serwisu w $ (Cat Myservices.tekst); DO SystemCtl Status $ Service | GREP -QUIET „Bieganie”, jeśli [$? -Eq 0]; wtedy echo $ service „jest [aktywny]„ else echo $ service ”jest [nieaktywna lub nie zainstalowana]” Fi gotowe 
Skrypt monitorowania usług Linux
Wyjaśnijmy, jak działa skrypt.

1). Pętla odczytuje moje usługi.tekst Złóż jeden element listy na raz. Ten pojedynczy element jest oznaczony przez zmienną ogólną o nazwie usługa. Lista jest wypełniona wyjściem,

# Cat MyServices.tekst 

2). Powyższe polecenie jest zamknięte w nawiasach i poprzedzone znakiem dolara, aby wskazać, że należy ją ocenić, aby wypełnić listę, którą będziemy iterować.

3). Dla każdego elementu listy (co oznacza każdą instancję zmiennej serwisowej) wykonane zostanie następujące polecenie.

# SystemCtl Status $ Service | Grep -Quiet „Bieganie” 

Tym razem musimy poprzedzić naszą zmienną ogólną (która reprezentuje każdy element w LISTA) ze znakiem dolara, który wskazuje, że jest to zmienna, a zatem należy użyć jej wartości w każdej iteracji. Wyjście jest następnie przekładane do GREP.

-cichy Flaga służy do zapobiegania Grep Od wyświetlania do ekranu linii, w których pojawia się bieżące słowo. Kiedy tak się stanie, powyższe polecenie zwraca status wyjścia 0 (reprezentowane przez $? w konstrukcji IF), w ten sposób sprawdzając, czy usługa działa.

Status wyjścia inny niż 0 (oznacza słowo Bieganie nie znaleziono na wyjściu Status SystemCtl $ Service) wskazuje, że usługa nie działa.

Skrypt monitorujący usługi

Moglibyśmy pójść o krok dalej i sprawdzić istnienie moje usługi.tekst Przed próbą wejścia do pętli dla.

#!/bin/bash # Ten skrypt itera listy usług, a # służy do ustalenia, czy działają, czy nie. Jeśli [-f myservices.tekst ]; Następnie dla serwisu w $ (Cat Myservices.tekst); DO SystemCtl Status $ Service | GREP -QUIET „Bieganie”, jeśli [$? -Eq 0]; wtedy echo $ service ”jest [aktywny]„ else echo $ service ”jest [nieaktywna lub nie zainstalowana]„ Fi zrobione else echo ”MyServices.TXT brakuje „fi 
Pingowanie serii hostów sieciowych lub internetowych w celu uzyskania statystyk odpowiedzi

Możesz zachować listę hostów w pliku tekstowym i używać skryptu, aby od czasu do czasu ustalić Myhosts i spróbuj sam).

Wbudowane polecenie odczytu powłoka informuje pętlę While, aby odczytać linię myhosts według wiersza i przypisuje zawartość każdego wiersza do zmiennego hosta, który jest następnie przekazywany do świst Komenda.

#!/bin/bash # Ten skrypt służy do zademonstrowania użycia pętli podczas przeczytania hosta; Zrób ping -c 2 $ host < myhosts 
Skrypt do serwerów ping

Przeczytaj także:

  1. Naucz się scenariuszy Shell: Przewodnik od początkujących do administratora systemu
  2. 5 Skrypty Shell, aby nauczyć się programowania powłoki

Rozwiązywanie problemów z systemem plików

Chociaż Linux jest bardzo stabilnym systemem operacyjnym, jeśli z jakiegoś powodu zawiesi się (na przykład z powodu awarii zasilania), jeden (lub więcej) systemów plików nie zostanie poprawnie wymyślony, a zatem zostanie automatycznie sprawdzony pod kątem błędów, gdy Linux jest ponownie uruchomiony.

Ponadto, za każdym razem, gdy system bieści się podczas normalnego rozruchu, zawsze sprawdza integralność systemów plików przed ich zamontowaniem. W obu przypadkach jest to wykonywane przy użyciu narzędzia o nazwie FSCK („Kontrola systemu plików”).

FSCK nie tylko sprawdzi integralność systemów plików, ale także próbuje naprawić uszkodzone systemy plików, jeśli zostanie to poinstruowane. W zależności od nasilenia szkód FSCK może się powiodowo lub nie; Kiedy to się stanie, odzyskane części plików są umieszczane w Znaleziono+ katalog, znajdujący się w korzeni każdego systemu plików.

Wreszcie musimy zauważyć, że niekonsekwencje mogą również się zdarzyć, jeśli spróbujemy usunąć napęd USB, gdy system operacyjny nadal do niego pisze, a nawet może spowodować uszkodzenie sprzętu.

Podstawowa składnia FSCK jest następująca:

# fsck [opcje] system plików 
Sprawdzanie systemu plików pod kątem błędów i próby automatycznej naprawy

Aby sprawdzić system plików za pomocą FSCK, musimy najpierw go zdjąć.

# Mount | GREP SDG1 # UMOUNT /MNT # FSCK -Y /Dev /Sdg1 
Sprawdź błędy systemu plików

Oprócz -y flaga, możemy użyć -A opcja automatycznej naprawy systemów plików bez zadawania pytań i wymuszania czeku, nawet gdy system plików wygląda na czystość.

# FSCK -AF /Dev /Sdg1 

Jeśli jesteśmy zainteresowani tylko dowiedzieć się, co jest nie tak (bez próby naprawy na razie), możemy uruchomić FSCK z -N opcja, która wyprowadzi problemy systemu plików do standardowego wyjścia.

# fsc -n /dev /sdg1 

W zależności od komunikatów o błędach w wyjściu FSCK, będziemy wiedzieć, czy możemy spróbować rozwiązać problem, czy eskalować go zespołom inżynieryjnym, aby przeprowadzić dalsze kontrole sprzętu.

Streszczenie

Przybyliśmy na koniec tego 10-Article seria, w której próbowały pokryć podstawowe kompetencje domeny wymagane do przekazania LFCS egzamin.

Z oczywistych powodów nie jest możliwe omówienie każdego aspektu tych tematów w żadnym jednym samouczku i dlatego mamy nadzieję, że te artykuły umieściły Cię na dobrej drodze, aby samodzielnie wypróbować nowe rzeczy i kontynuować naukę.

Jeśli masz jakieś pytania lub komentarze, zawsze są one mile widziane - więc nie wahaj się upuścić nas za pośrednictwem poniższego formularza!

Zostań certyfikowanym administratorem systemu