Zrozumienie i uczenie się Podstawowe skrypty skorupowe i rozwiązywanie problemów z systemem plików Linux - Część 10
- 4665
- 1455
- Pani Janina Cieśla
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ęść 10Sprawdź 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.
- Shell to program, który przejmuje polecenia i daje je systemowi operacyjnym do wykonania.
- 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.
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 środowiskaJeś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.ciiWykonaj 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:
- [ -plik ] → Plik istnieje.
- [-d Plik] → Plik istnieje i jest katalogiem.
- [-f plik] → Plik istnieje i jest zwykłym plik.
- [-u plik] → Plik istnieje, a jego bit SUID (ustawiony identyfikator użytkownika) jest ustawiony.
- [-g plik] → Plik istnieje, a jego bit SGID jest ustawiony.
- [-k Plik] → Plik istnieje, a jego lepki bit jest ustawiony.
- [-r plik] → Plik istnieje i jest czytelny.
- [-s plik]→ Plik istnieje i nie jest pusty.
- [-w plik]→ Plik istnieje i jest zapisany.
- [-x Plik] jest prawdą, jeśli plik istnieje i jest wykonywalny.
- [string1 = String2] → Strings są równe.
- [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.
- -Eq -> jest prawdą, jeśli INT1 jest równe INT2.
- -ne -> Prawda, jeśli INT1 nie jest równe INT2.
- -Lt -> To prawda, jeśli INT1 jest mniej niż INT2.
- -le -> To prawda, jeśli INT1 jest mniejszy lub równy INT2.
- -GT -> To prawda, jeśli INT1 jest większy niż INT2.
- -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 firewalldSkrypt 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 gotoweSkrypt 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ługiMoglibyś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 < myhostsSkrypt do serwerów ping
Przeczytaj także:
- Naucz się scenariuszy Shell: Przewodnik od początkujących do administratora systemu
- 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 /Sdg1Sprawdź 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- « LFCS montażowe partycje jako urządzenia RAID - Tworzenie i zarządzanie tworzeniem kopii zapasowych systemu - Część 6
- Jak zwiększyć rozmiar przesyłania pliku w PHP »