Grundlegend
- 3378
- 179
- Hr. Moritz Bozsik
Die Linux Foundation startete die LFCS Zertifizierung (Linux Foundation Certified Sysadmin), eine brandneue Initiative, deren Ziel es ist, Einzelpersonen überall (und überall) in Basic bis intermediate operative Unterstützung für Linux-Systeme zertifiziert zu werden, einschließlich der Unterstützung von laufenden Systemen und Diensten sowie allgemeine Überwachung und Analyse sowie intelligente Entscheidungsfindung Wenn es darum geht, Probleme auf die oberen Support -Teams aufzuwerfen.
Linux Foundation Certified Sysadmin - Teil 10Schauen Sie sich das folgende Video an, mit dem Sie eine Einführung in das Linux Foundation -Zertifizierungsprogramm führen können.
Dies ist der letzte Artikel (Teil 10) der vorliegenden 10-Tutorial-Long-Serie. In diesem Artikel konzentrieren wir uns auf grundlegende Shell -Skript- und Fehlerbehebung bei Linux -Dateisystemen. Beide Themen sind für die LFCS -Zertifizierungsprüfung erforderlich.
Terminals und Muscheln verstehen
Lassen Sie uns zuerst ein paar Konzepte klarstellen.
- Eine Shell ist ein Programm, das Befehle übernimmt und sie dem operativen System zur Ausführung gibt.
- Ein Terminal ist ein Programm, mit dem wir als Endbenutzer mit der Shell interagieren können. Ein Beispiel für ein Terminal ist Gnom -Terminal, wie im folgenden Bild gezeigt.
Wenn wir zum ersten Mal eine Shell starten, präsentiert sie eine Eingabeaufforderung (auch als Befehlszeile bezeichnet), die uns mitteilt, dass die Shell bereit ist, Befehle von ihrem Standardeingabegerät aus zu akzeptieren, das normalerweise die Tastatur ist.
Möglicherweise möchten Sie auf einen anderen Artikel in dieser Serie (Befehl zum Erstellen, Bearbeiten und Manipulieren von Dateien verwenden - Teil 1), um einige nützliche Befehle zu überprüfen.
Linux bietet eine Reihe von Optionen für Shells, wobei der folgende am häufigsten vorkommt:
Bash Shell
Verprügeln steht für Bourne wieder Shell und ist die Standardschale des GNU -Projekts. Es enthält nützliche Funktionen aus der Korn Shell (KSH) und C Shell (CSH) und bietet mehrere Verbesserungen gleichzeitig. Dies ist die Standardhülle, die von den in der LFCS -Zertifizierung behandelten Verteilungen verwendet wird, und es ist die Shell, die wir in diesem Tutorial verwenden werden.
Sh Shell
Der Bourne Shell ist die älteste Hülle und ist daher seit vielen Jahren die Standardhülle vieler Unix-ähnlicher Betriebssysteme.
Ksh Shell
Der Korn Shell ist eine Unix -Shell, die in den frühen 1980er Jahren von David Korn in Bell Labs entwickelt wurde. Es ist rückwärtskompatibel mit der Bourne Shell und enthält viele Merkmale der C Shell.
Ein Shell -Skript ist nichts mehr und nichts weniger als eine Textdatei in ein ausführbares Programm, das Befehle kombiniert, die von der Shell nacheinander ausgeführt werden.
Basic Shell Scripting
Wie bereits erwähnt, wird ein Shell -Skript als einfache Textdatei geboren. Daher kann mit unserem bevorzugten Texteditor erstellt und bearbeitet werden. Möglicherweise möchten Sie die Verwendung von VI/M (siehe Nutzung des VI -Editors - Teil 2 dieser Serie) in Betracht ziehen, die für Ihre Bequemlichkeit Syntax -Marke enthält.
Geben Sie den folgenden Befehl ein, um eine Datei namens MyScript zu erstellen.sh und drücken Sie die Eingabetaste.
# Vim MyScript.Sch
Die allererste Zeile eines Shell -Skripts muss wie folgt sein (auch bekannt als a Shebang).
#!/Bin/Bash
Es "erzählt”Das Betriebssystem Der Name des Dolmetschers sollte verwendet werden, um den folgenden Text auszuführen.
Jetzt ist es Zeit, unsere Befehle hinzuzufügen. Wir können den Zweck jedes Befehls oder des gesamten Skripts auch klären, indem wir auch Kommentare hinzufügen. Beachten Sie, dass die Shell diese Zeilen ignoriert, die mit einem Pfundzeichen beginnen # (Erklärende Kommentare).
#!/bin/bash echo Dies ist Teil 10 der 10-Artikel-Serie über die LFCS-Zertifizierung Echo heute ist $ (Datum +%y-%M-%d)
Sobald das Skript geschrieben und gespeichert wurde, müssen wir es ausführbar machen.
# Chmod 755 Myscript.Sch
Bevor wir unser Skript ausführen, müssen wir ein paar Worte über die sagen $ Path Umgebungsvariable. Wenn wir rennen,
Echo $ path
Aus der Befehlszeile werden wir den Inhalt von sehen $ Path: Eine dicker getrennte Liste von Verzeichnissen, die durchsucht werden, wenn wir den Namen eines ausführbaren Programms eingeben. Es wird als Umgebungsvariable bezeichnet, da es Teil der Shell -Umgebung ist - eine Reihe von Informationen, die für die Shell und ihre untergeordneten Prozesse zur Verfügung stehen, wenn die Schale zum ersten Mal gestartet wird.
Wenn wir einen Befehl eingeben und die Eingabetaste drücken, sucht die Shell in allen in der aufgeführten Verzeichnissen $ Path Variable und führt die erste Instanz aus, die gefunden wird. Lassen Sie uns ein Beispiel sehen,
UmgebungsvariablenWenn es zwei ausführbare Dateien mit demselben Namen gibt, einer in /usr/local/bin und ein anderer in /usr/Bin, Der eine im ersten Verzeichnis wird zuerst ausgeführt, während der andere außer Acht gelassen wird.
Wenn wir unser Skript in einem der in der aufgeführten Verzeichnisse nicht gespeichert haben $ Path Variable müssen wir anhängen ./ zum Dateinamen, um ihn auszuführen. Andernfalls können wir es genauso ausführen, wie wir es mit einem regulären Befehl machen würden.
# PWD # ./MyScript.sh # cp myscript.sh… /bin # cd… /bin # pwd # myScript.SchSkript ausführen
Bedingungen
Wann immer Sie verschiedene Aktionskurse angeben müssen, die in einem Shell -Skript aus dem Erfolg oder Misserfolg eines Befehls ergriffen werden sollen, verwenden Sie die Wenn konstruieren, um solche Bedingungen zu definieren. Seine grundlegende Syntax ist:
wenn Zustand; dann befiehlt; sonst andere Kommandos fi
Wo ZUSTAND Kann eine der folgenden sein (hier werden nur die häufigsten Bedingungen zitiert) und bewertet es, wahr zu werden, wann:
- [ -eine Datei ] → Datei existiert.
- [-d Datei] → Datei existiert und ist ein Verzeichnis.
- [-f Datei] → Datei existiert und ist eine reguläre Datei.
- [-U -Datei] → Datei gibt.
- [-g -Datei] → Datei existiert und ihr SGID -Bit ist festgelegt.
- [-K -Datei] → Datei existiert und ihr klebriges Bit ist eingestellt.
- [-r -Datei] → Datei existiert und ist lesbar.
- [-S -Datei]→ Datei existiert und ist nicht leer.
- [-W -Datei]→ Datei existiert und ist beschreibbar.
- [-x Datei] ist wahr, wenn die Datei existiert und ausführbar ist.
- [String1 = String2] → Die Saiten sind gleich.
- [String1 != String2] → Die Saiten sind nicht gleich.
[int1 op int2] sollte Teil der vorhergehenden Liste sein, während die folgenden Elemente (zum Beispiel folgen, -Gl -> ist wahr, wenn int1 ist gleich int2.) sollte ein "sein"Kinder" Liste von [ int1 op int2 ] wobei OP einer der folgenden Vergleichsbetreiber ist.
- -Gl -> ist wahr, wenn int1 int2 gleich ist.
- -ne -> wahr, wenn int1 nicht gleich int2 ist.
- -lt -> wahr, wenn int1 weniger als int2 ist.
- -le -> wahr, wenn int1 kleiner oder gleich int2 ist.
- -gt -> wahr, wenn int1 größer als int2 ist.
- -GE -> wahr, wenn int1 größer oder gleich int2 ist.
Für Schleifen
Mit dieser Schleife können Sie einen oder mehrere Befehle für jeden Wert in einer Werteliste ausführen. Seine grundlegende Syntax ist:
für Element nacheinander; Befehle machen; Erledigt
Wo Artikel ist eine generische Variable, die jeden Wert in darstellt REIHENFOLGE während jeder Iteration.
Während Schleifen
Diese Schleife ermöglicht es, eine Reihe von sich wiederholenden Befehlen auszuführen, solange der Kontrollbefehl mit einem Exit -Status gleich Null ausgeführt wird (erfolgreich). Seine grundlegende Syntax ist:
während evaluation_command; execute_commands; Erledigt
Wo Evaluation_Command Kann alle Befehle (en) sein, die mit einem Erfolg beenden können (0) oder Misserfolg (anders als 0) Status und Execute_Commands können jedes Programm, ein Skript- oder Shell -Konstrukt sein, einschließlich anderer verschachtelter Schleifen.
Alles zusammenstellen
Wir werden die Verwendung des IF -Konstrukts und die für die Loop mit dem folgenden Beispiel demonstrieren.
Feststellen, ob ein Dienst in einer systemd-basierten Distribution ausgeführt wird
Erstellen wir eine Datei mit einer Liste von Diensten, die wir auf einen Blick überwachen möchten.
# Cat MyServices.Txt SSHD Mariadb Httpd Crond FirewalldSkript zur Überwachung von Linux -Diensten
Unser Shell -Skript sollte so aussehen.
#!/bin/bash # Dieses Skript iteriert eine Liste von Diensten und # wird verwendet, um festzustellen, ob sie ausgeführt werden oder nicht. Für den Service in $ (Cat MyServices.txt); DO SYSTECTL STATUS $ Service | Grep -Quiet "rennen", wenn [$? -Gl 0]; dann echo $ service "ist [aktiv]" sonst echo $ service "ist [inaktiv oder nicht installiert]" fi fertiggestelltLinux -Service -Überwachungsskript
Erklären wir, wie das Skript funktioniert.
1). Die für Schleife liest die meine Dienstleistungen.txt Datei ein Element der Liste gleichzeitig. Dieses einzelne Element wird durch die generische Variable namens Service bezeichnet. Die Liste ist mit der Ausgabe von besiedelt,
# Cat MyServices.txt
2). Der obige Befehl ist in Klammern beigefügt und wird von einem Dollar -Schild vorausgegangen, um anzuzeigen, dass es bewertet werden sollte, um die Liste zu bevölkern, über die wir iterieren werden.
3). Für jedes Element der Liste (dh jede Instanz der Dienstvariablen) wird der folgende Befehl ausgeführt.
# SystemCTL Status $ Service | Grep -Quiet "Running"
Diesmal müssen wir unserer generischen Variablen vorausgehen (die jedes Element in darstellt AUFFÜHREN) mit einem Dollar -Zeichen, um anzuzeigen, dass es eine Variable ist und somit ihr Wert in jeder Iteration verwendet werden sollte. Der Ausgang wird dann nach Grep geleitet.
Der -ruhig Flag wird verwendet, um zu verhindern Grep vom Anzeigen auf den Bildschirm Die Zeilen, in denen das Wort ausgeführt wird. In diesem Fall gibt der obige Befehl einen Exit -Status von zurück 0 (vertreten durch $? im if construct) somit überprüft, ob der Dienst ausgeführt wird.
Ein anderer Exit -Status als 0 (bedeutet die Wort Laufen wurde nicht in der Ausgabe von gefunden Systemctl Status $ Service) zeigt an, dass der Dienst nicht ausgeführt wird.
Dienste ÜberwachungsskriptWir könnten noch einen Schritt weiter gehen und nach der Existenz von prüfen meine Dienstleistungen.txt Bevor Sie sogar versuchen, die für Schleife zu betreten.
#!/bin/bash # Dieses Skript iteriert eine Liste von Diensten und # wird verwendet, um festzustellen, ob sie ausgeführt werden oder nicht. Wenn [-f myServices.txt ]; dann für den Service in $ (Cat MyServices.txt); DO SYSTECTL STATUS $ Service | Grep -Quiet "rennen", wenn [$? -Gl 0]; dann echo $ service "ist [aktiv]" sonst echo $ service "ist [inaktiv oder nicht installiert]" fi erledigt sonst echo "myServices.txt fehlt "fi
Ping einer Reihe von Netzwerk- oder Internet -Hosts für Antwortstatistik
Möglicherweise möchten Sie eine Liste von Hosts in einer Textdatei verwalten und ein Skript verwenden, um ab und zu festzustellen, ob sie pingbar sind oder nicht (zögern Sie nicht, den Inhalt von zu ersetzen myhosts und versuchen Sie es selbst).
Der integrierte Befehl read shell integriert der while-Loop, um MyHosts Zeile für Zeile zu lesen, und weist den Inhalt jeder Zeile dem variablen Host zu, der dann an die übergeben wird Klingeln Befehl.
#!/bin/bash # Dieses Skript wird verwendet, um die Verwendung einer Weile -Schleife beim Lesen des Hosts zu demonstrieren. ping -c 2 $ host erledigt < myhostsSkript an Ping -Server
Lesen Sie auch:
- Lernen Sie Shell Scripting: Eine Anleitung von Neulingen zum Systemadministrator
- 5 Shell -Skripte zum Erlernen der Shell -Programmierung
Fehlerbehebung des Dateisystems
Obwohl Linux ein sehr stabiles Betriebssystem ist, wird ein (oder mehr) Ihrer Dateisysteme aus irgendeinem Grund (z. wird neu gestartet.
Außerdem überprüft das System jedes Mal, wenn das System während eines normalen Starts stirbt. In beiden Fällen wird dies mit einem Tool mit dem Namen durchgeführt fsck ("Dateisystemprüfung”)).
fsck Überprüft nicht nur die Integrität von Dateisystemen, sondern versucht auch, beschädigte Dateisysteme zu reparieren, wenn dies darauf angewiesen wird. Abhängig von der Schwere des Schadens kann FSCK erfolgreich sein oder nicht; Wenn dies der Fall ist, werden wiederhergestellte Teile der Dateien in die platziert verloren+gefunden Verzeichnis, das sich im Stammpunkt jedes Dateisystems befindet.
Zu guter Letzt müssen wir beachten, dass Inkonsistenzen auch auftreten können, wenn wir versuchen, ein USB -Laufwerk zu entfernen, wenn das Betriebssystem noch darauf schreibt, und sogar zu Hardwareschäden führen kann.
Die grundlegende Syntax von FSCK lautet wie folgt:
# FSCK [Optionen] Dateisystem
Überprüfen Sie ein Dateisystem auf Fehler und versuchen Sie, automatisch zu reparieren
Um ein Dateisystem mit FSCK zu überprüfen, müssen wir es zunächst entlasten.
# Mount | GREP SDG1 # Umount /Mnt # fsck -y /dev /sdg1Überprüfen Sie die Dateisystemfehler
neben dem -y Flagge, wir können die verwenden -A Option, die Dateisysteme automatisch zu reparieren, ohne Fragen zu stellen, und die Prüfung zu erzwingen, auch wenn das Dateisystem sauber aussieht.
# fsck -af /dev /sdg1
Wenn wir nur daran interessiert sind, herauszufinden, was los ist (ohne zu versuchen, vorerst etwas zu reparieren), können wir FSCK mit dem ausführen -N Option, mit der die Ausgabe des Dateisystems auf Standardausgabe ausgegeben werden.
# fsck -n /dev /sdg1
Abhängig von den Fehlermeldungen in der Ausgabe von FSCK werden wir wissen, ob wir versuchen können, das Problem selbst zu lösen oder es zu technischen Teams zu eskalieren, um weitere Überprüfungen der Hardware durchzuführen.
Zusammenfassung
Wir sind am Ende angekommen 10-Artikeln Serie, in der versucht wurde, die grundlegenden Domain -Kompetenzen zu decken, die erforderlich sind, um die zu bestehen LFCS Prüfung.
Aus offensichtlichen Gründen ist es nicht möglich, jeden einzelnen Aspekt dieser Themen in einem einzigen Tutorial zu behandeln, und deshalb hoffen wir, dass diese Artikel Sie auf den richtigen Weg gebracht haben, um selbst neue Dinge auszuprobieren und weiter zu lernen.
Wenn Sie Fragen oder Kommentare haben, sind sie immer willkommen. Zögern Sie also nicht, uns eine Zeile über das folgende Formular zu geben!
Werden Sie ein Linux -zertifizierter Systemadministrator- « LFCs zusammenstellen Partitionen als RAID -Geräte - Erstellen und Verwalten von Systemsicherungen - Teil 6
- So erhöhen Sie die Datei -Upload -Größe in PHP »