Die täglichen Aufgaben des Systemadministrators sind für jeden immer anders; Es gibt jedoch einfache Aufgaben, die gleichermaßen auf verwalteten Systemen ausgeführt werden. In den Tagen, als Festplattenplatz zu Administratorenzeiten ein Risikofaktor war, war es äußerst wichtig, das Verzeichnis oder Dateisystem zum Debuggen zu finden.
Heutzutage ist es vor allem bei virtuellen Maschinen genauso wichtig, dass die verwalteten Systeme fehlerfrei sind und Speicherplatz für die Ausführung ihrer Prozesse und die Protokollierung ihrer Protokolldateien zur Verfügung haben.
[Das könnte Ihnen auch gefallen: Linux scripting:3 how-tos for while loops in Bash ]
Der beste Weg, um zu beginnen, besteht darin, die einfachsten Befehle zu verwenden, indem Sie ihre Ausgaben als Eingaben mit einer neuen Ausführung verknüpfen und so einen sogenannten Einzeiler bilden. Das heißt, den Befehlszeileninterpreter zu verwenden, um die Standardausgabe eines Befehls zu lesen und sie als Eingabevariable des nächsten Befehls einzusetzen. Dazu hilft der xargs-Befehl, diese Variable zu empfangen und auszuführen.
Sehen Sie sich ein praktisches Beispiel an:
Ticket RH0502201-1:Der Prodenv-Produktionsserver sendet Warnungen zu "wenig Speicherplatz auf dem Root-Dateisystem". Die Bereinigung des Dateisystems wird angefordert.
-
Greifen Sie auf den Server zu und überprüfen Sie den Speicherplatz in
/filesystem
:
# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/prodenv--vg-root 720G 720G 0 100% /
-
Wechseln Sie in das Stammverzeichnis, listen Sie die Verzeichnisse auf, und verwenden Sie zur Berechnung des in jedem Verzeichnis verwendeten Speicherplatzes eine
pipe
undxargs
um dasls
zu senden Befehlsausgabe andu
Befehl:
# ls | xargs du -sk
-
Mit einer
pipe
Verwenden Sie erneut den sort-Befehl, um die Ausgabe vom niedrigsten bis zum höchsten in den Verzeichnissen verwendeten Speicherplatz aufzulisten:
# ls | xargs du -sk | sort -n
-
Für diesen Fall werden nur die Verzeichnisse mit dem meisten belegten Speicherplatz benötigt, sodass wir die Liste auf die letzten fünf Verzeichnisse in der Liste beschränken könnten. Mit einer anderen Pipe und dem tail-Befehl:
# ls | xargs du -sk | sort -n | tail -5
Hinweis : Wenn Sie die Fehlermeldung vermeiden möchten, bei der du
Befehl nicht zugreifen konnte, senden Sie die Standardfehlerausgabe an das Gerät /dev/null:
# ls | xargs du -sk 2> /dev/null | sort -n | tail -5
-
Wenn die Liste der Verzeichnisse definiert ist, verwenden Sie AWK, um eine neue sortierte Liste der Verzeichnisse zu erstellen, Spalte zwei der ursprünglichen Liste:
# ls | xargs du -sk 2> /dev/null | sort -n | tail -5 | awk '{ print $2 }'
-
Die sortierte Liste wird als Variable an
du
übergeben um den verwendeten Platz in einem für Menschen lesbaren Format anzuzeigen. Verwenden Sie eine anderepipe
undxargs
:
# ls | xargs du -sk 2> /dev/null | sort -n | tail -5 | awk '{ print $2 }' | xargs du -sh
-
Prüfen Sie, ob es möglich ist, die Dateien zu löschen oder zu komprimieren, die das Dateisystem überlasten, um so viel Speicherplatz wie möglich freizugeben.
Wahrscheinlich ist es möglich, die Schritte 5 und 6 zu vermeiden und die Reinigung direkt auszuführen. In vielen Fällen gehören diese Verzeichnisse jedoch zu einer Anwendung und benachrichtigen Sie den Verantwortlichen Partei davon, um die Reinigung durchzuführen oder einfach als Nachweis des ausgeführten Prozesses für die Problemlösungsdokumentation.
Zum Schluss unser Einzeiler sieht wie folgt aus:
# ls | xargs du -sk 2> /dev/null | sort -n | tail -5 | awk '{ print $2 }' | xargs du -sh
Dieser Einzeiler ist Teil meines Arsenals, das ich bei den täglichen Aufgaben als Systemadministrator verwende. Ich hoffe, Sie finden es nützlich. Und du? Was für Einzeiler Hast du was im Ärmel?
[ Holen Sie sich dieses kostenlose E-Book:Verwalten Ihrer Kubernetes-Cluster für Dummies. ]