Vor einigen Monaten bat ich die Enable Sysadmin Contributor Community, mir bei der Erstellung einer Liste ihrer wichtigsten Befehle zu helfen. Nach Verarbeitung der Ergebnisse stellten sich 17 der Befehle als wesentlich oder zumindest als äußerst vorteilhaft für den Job des Linux-Systemadministrators heraus. Lassen Sie uns also ohne weitere Verzögerung darauf eingehen.
[ Möchten Sie mehr über Netzwerkbefehle erfahren? Lesen Sie Teil 1 unserer Crowdsourcing-Befehlsliste ]
finden —Dieser Befehl ist Teil von findutils
und ermöglicht benutzerdefinierte Suchbefehle. Wenn Sie beispielsweise Verzeichnisse finden möchten, die mit einem bestimmten Namen übereinstimmen, können Sie Folgendes verwenden:
find path/ -type d -iname '*dir_name*'
Sie können finden Weitere Informationen zum Befehl finden Sie hier.
ls+xargs — Diese Paarung war mir neu; Es war jedoch wirklich interessant zu lernen und hat einige potenziell bahnbrechende Anwendungen. xargs
ermöglicht es Ihnen, zusätzliche Befehle für die Ausgabe eines bestimmten Befehls auszuführen. Ein sehr einfaches Beispiel dafür ist bei der Kopplung mit dem ls
zu sehen Befehl. Zum Beispiel, wenn Sie cat
wollten alle Dateien, die von ls
aufgelistet werden , könnten Sie so etwas verwenden:
$ ls
1.file 2.file 3.file
$ ls | xargs cat
you are reading file 1
you are reading file 2
you are reading file 3
Schauen Sie sich einen ausführlichen Blick auf xargs von HowtoGeek
awk/sed/(e)grep an – Dieses Trio wurde von unserer Community öfter benannt als alle anderen Befehle. Es war aufschlussreich zu sehen, wie wichtig diese Befehle wirklich für die Community und für Systemadministratoren insgesamt sind. Konzentrieren wir uns auf grep
zuerst.
grep —Grep ist großartig, keine Lüge. Falls Sie grep
noch nicht kennen (und seien wir ehrlich, das ist zumindest möglich, wenn Sie neu in der Linux-Befehlszeile sind), machen Sie sich damit vertraut. grep
ist ein Tool, mit dem Sie die Standardausgabe von fast allem auf der Befehlszeile filtern können. Sie können grep
für Wörter, die Sie finden möchten, oder kehren Sie das um, um Ihnen alles anzuzeigen, was NICHT zu Ihrem Schlüsselwort passt. Wir werden sogar ein wenig über ein sehr ähnliches Tool sprechen, das grep
erweitert ein bisschen. Hier sind einige Beispiele.
Um Ihnen alle Zeilen in einer bestimmten Datei anzuzeigen, die beispielsweise das Wort „Fehler“ enthalten, würden Sie etwa so vorgehen:
$ cat file.txt
This line contains an error.
This line contains a case sensitive ERROR
And this one is just an Error.
Then we have a warning.
and a WARNING
and then of course Warning.
$ grep error file.txt
This line contains an error.
$
Das nennt man ein inklusives grep
. Sie können dies auch umkehren, indem Sie ein Ausschluss-Flag verwenden. Angenommen, Sie möchten alle Konfigurationsoptionen in Ihrer sshd config
sehen die nicht auskommentiert sind, könnten Sie dies tun:
# grep -v \# /etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
… snip ...
Subsystem sftp /usr/libexec/openssh/sftp-server
#
Es ist erwähnenswert, dass grep
unterscheidet Groß- und Kleinschreibung, wie viele Dinge in Bash. Wenn Sie also nach „error“ suchen, finden Sie „Error“ oder „ERROR“ nicht. Sie können grep
sagen um mit dem -i
ohne Berücksichtigung der Groß- und Kleinschreibung zu filtern Flagge.
$ grep -i eRRor file.txt
This line contains an error.
This line contains a case sensitive ERROR
And this one is just an Error.
Dies wird bei error, ERROR, erRoR oder was auch immer übereinstimmen, solange die Buchstaben gleich sind.
Nun, ich sagte, Sie könnten grep
verwenden um die Ausgabe eines Befehls richtig zu filtern? Sie tun dies mit einer Ausgabeumleitung mithilfe einer Pipe. Dies ist wirklich nützlich für Dinge wie das Filtern von Protokollen, sogar live mit tail -f
.
# tail -f /var/log/messages | grep -i error
Es gibt viel mehr Optionen für grep
, einschließlich Filtern basierend auf einer Datei mit Schlüsselwörtern, regulären Ausdrücken, Sie können sogar die Ausgabe einfärben. Ich schlage vor, dass Sie sich mit der Manpage vertraut machen, wenn Sie mehr wissen möchten.
egrep – Was ist, wenn Sie nach mehr als einem Wort filtern möchten? Ich habe immer egrep
verwendet dafür.
Angenommen, Sie möchten grep
Bei einem Fehler oder einer Warnung könnten Sie etwa so vorgehen:
$ egrep 'error|warning' file.txt
This line contains an error.
Then we have a warning.
egrep
wird andere Muster unterstützen, da bin ich mir sicher, aber dieses hier ist dasjenige, für das ich es immer verwendet habe, und ich fand es sehr nützlich.
awk – Das awk
Der Befehl implementiert die Programmiersprache AWK zum Verarbeiten von Text und eignet sich besonders gut zum Verarbeiten von in Spalten organisierten Daten. Dieser Befehl ist in den meisten, wenn nicht allen Linux-Distributionen sowie allen anderen UNIX-Betriebssystemen verfügbar.
Systemadministratoren verwenden häufig awk
um Daten aus Dateien zu extrahieren oder aus der Ausgabe anderer Befehle in der Befehlszeile oder in Shell-Skripten zu leiten. Rufen Sie awk
auf indem Sie den Befehl ausführen, der eine Aktion zwischen '{}'
bereitstellt . Sie können Spalten als Variablen referenzieren, z. B. $1
für die erste Spalte $2
, für die zweite und so weiter. Standardmäßig awk
verwendet Leerzeichen als Spaltentrennzeichen, aber Sie können jedes beliebige Zeichen verwenden, indem Sie es mit dem Flag -F
angeben .
Um beispielsweise den Besitzer und die Gruppe zu drucken, Spalten 3 und 4 in der Ausgabe von ls -l
, leiten Sie seine Ausgabe an awk
weiter so:
$ ls -l | awk '{ print $3,$4 }'
ricardo users
ricardo users
root root
...
Sie können auch Zeilen aus der Eingabe filtern, indem Sie vor der Aktion einen optionalen regulären Ausdruck angeben. Zum Beispiel, um alle Hostnamen (Spalte 2) von Zeilen zu drucken, die mit einer Zahl in Ihrem /etc/hosts
beginnen verwenden Sie awk
so:
$ awk '/^[0-9]/ { print $2 }' /etc/hosts
localhost
sat6server
tower01.olab.home.ca
...
awk
ist ein vielseitiger Befehl, der eine ganze Programmiersprache unterstützt, mit der Sie viele Dinge tun können, z. B. Berechnungen, Bedingungen, Datentransformation und mehr. Es ist eine großartige Option, um Ihnen bei der Automatisierung Ihrer Systeme zu helfen, und es ist oft Teil von Shell-Skripten.
Weitere Informationen finden Sie im Artikel Anfängerleitfaden für gawk und den man
des Befehls Seiten.
gesendet – Der Befehl sed
– kurz für Stream-Editor – ermöglicht Ihnen das Filtern und Bearbeiten von Textströmen auf skriptgesteuerte Weise. Systemadministratoren verwenden häufig sed
in Bash-Skripten, um Text umzuwandeln, der von anderen Befehlen oder direkt aus Dateien geleitet wird. In seiner einfachsten Form sed
sucht und ersetzt Text. Verwenden Sie es zum Beispiel, um den String „stream“ durch „text“ zu ersetzen, der aus einer Pipe kommt, wie hier:
$ echo "This is a test stream" | sed 's/stream/text/'
This is a test text
Sie können auch Text in einer Datei ersetzen, indem Sie den Dateinamen als letzten Parameter angeben, etwa so:
$ sed 's/pattern/replacement/' filename
Zur Sicherheit sed
gibt die Ergebnisse an STDOUT aus, ohne die Datei zu ändern. Sie können die Ausgabe in eine neue Datei umleiten, um die Ergebnisse zu speichern. Sie können auch die Originaldatei an Ort und Stelle ändern, indem Sie -i
angeben Flagge.
Standardmäßig sed
ändert nur das erste Vorkommen des Musters in jeder Zeile. Um dieses Verhalten zu ändern und alle Instanzen des Musters zu ersetzen, geben Sie den g
an Option am Ende von sed
Befehlsausdruck wie folgt:
$ sed 's/pattern/replacement/g' filename
Zusätzlich zur einfachen Textsuche, sed
unterstützt den Abgleich regulärer Ausdrücke. Verwenden Sie beispielsweise einen regulären Ausdruck „[Ww]ord“, um sowohl „Wort“ als auch „Wort“ in jeder Zeile zu ersetzen:
$ echo "Word word WORD" | sed 's/[Ww]ord/text/g'
text text WORD
Dieser Befehl bietet viele andere Möglichkeiten, aber selbst mit dieser grundlegenden Verwendung können Sie viel Zeit sparen. Weitere Informationen zu anderen Optionen erhalten Sie vom man
Seiten für sed
.
ansehen – Mit diesem Befehl können Sie einen Befehl/ein Programm wiederholt in einem bestimmten Intervall ausführen. Standardmäßig beträgt das Intervall alle zwei Sekunden. Viele Systemadministratoren verwenden diesen Befehl, um verschiedene Systembedingungen oder Aufgaben bis zum Abschluss zu überwachen.
Wenn Sie beispielsweise Ihre Speichernutzung überwachen möchten, können Sie Folgendes verwenden: watch -d free -m
(das -d
Option hebt Werte hervor, die sich von der letzten Ausführung unterscheiden).
locken – Mit diesem Befehl können Sie Daten zu/von Servern übertragen, mit viel mehr Optionen als nur HTTP/HTTPS. Es funktioniert ohne Benutzerinteraktion und wird sehr häufig in Situationen gesehen, in denen Sie REST-API-Aufrufe (GET, POST, PUT) durchführen müssen.
curl
unterstützt viele Optionen, um eine Verbindung zu Servern herzustellen, wie z. B. SSL, die Verwendung von Cookies, die Wiederaufnahme der Dateiübertragung usw. Es ist fast so, als hätten Sie einen Webbrowser, den Sie über die Befehlszeile ausführen können.
Das folgende Beispiel zeigt curl
für einen einfachen Dateidownload, aber Begrenzung der Bandbreite:
curl -o myfile.tar.gz --limit-rate 20K https://myserver.example.com/bigfile.tar.gz
Wie im Handbuch angegeben, die Anzahl der verfügbaren Optionen, die mit curl
verwendet werden können sind viele. Einige von denen, die ich häufig verwende, sind:
-s:
im unbeaufsichtigten Modus ausführen (ohne Fortschrittsbalken)-k:
eine unsichere Verbindung zulassen (nur bei Verbindung zu einem internen, bekannten Server, für den ein selbstsigniertes Zertifikat verwendet wird)
curl -X POST --header "Content-Type: application/json" \
--data '{"my_id": 5, "my_application": "moneymaker", "body": "showmethemoney"}' \
https://myserver.example.com/posts
Im obigen Beispiel mache ich einen POST und übergebe den Header und der Körper .
Mail – Die mail
command ist ein supernettes Tool, mit dem ein Benutzer E-Mails direkt von der Befehlszeile aus senden kann, ohne einen Browser oder dedizierten Client öffnen zu müssen. Sie müssen einen SMTP-Server haben, der lokal auf Ihrem Computer läuft, also sollten Sie sich dessen bewusst sein.
Installieren Sie das Paket:
$ apt-get install mailutils
Um eine einfache E-Mail zu senden, können Sie Folgendes verwenden:
$ mail -s "Subject Line" [email protected]
Wenn Sie Enter drücken , werden Sie mit dem Cc aufgefordert Feld. Sie können weitere Empfänger hinzufügen oder einfach Enter drücken zu überspringen. Dann geben Sie Ihre Nachricht ein. Wenn Sie fertig sind, verwenden Sie Strg+D um die Nachricht zur Zustellung zu versenden. Wenn es fertig ist, sollte es so aussehen:
$ mail -s "Subject Line" [email protected]
Cc: [email protected]
"Hello world"
<Ctrl + D>
Weitere Informationen zu diesem Befehl finden Sie in diesem großartigen Artikel.
tmux – Der tmux
Der Befehl, also der Terminal-Multiplexer, ermöglicht mehrere Fenster innerhalb eines einzigen Terminalfensters. Sie können zwischen Fenstern wechseln und sie sogar in einzelne Bereiche mit jeweils eigener CLI aufteilen. Wir haben einige großartige Inhalte rund um tmux
veröffentlicht und wie man es benutzt, also werde ich Ihnen einen Link zu diesem Inhalt hinterlassen. Weitere Informationen finden Sie in den Tipps zur Verwendung von tmux.
sudo – Der sudo-Befehl ist Ihr Weg zu erhöhten Rechten. Alle Systemadministratoren müssen wissen, wie man diesen Befehl verwendet, wie er sich von su
unterscheidet (was viele anstelle von sudo
verwenden …schlechte Idee) und wie man den Zugriff durch notwendige Accounts sicherstellt. Ich habe einen Einführungsartikel zu sudo
geschrieben weit zurück, als das für Sie nützlich sein könnte.
ssh – Der ssh
(Secure Shell)-Befehl ermöglicht es Ihnen, Remote-Arbeitsprotokolle zu verwenden, um über eine Netzwerkverbindung auf Server zuzugreifen und diese zu manipulieren. Wenn Sie jemals im Support gearbeitet haben oder vom Support unterstützt wurden, verwendet der Support-Techniker oft ssh
um auf Ihren Computer oder Server zuzugreifen.
Die Verwendung von Befehlen ist ziemlich einfach:
$ ssh username@hostname
Sie werden nach einem Passwort gefragt, und wenn Sie die richtigen Anmeldeinformationen angeben können, sind Sie auf dem Weg in das gewünschte System.
scp – Der sichere Kopierbefehl (scp
) ermöglicht es einem Benutzer, Dateien zu/von einem entfernten System zu kopieren. Sie benötigen ssh
aktiviert an beiden Enden der Transaktion und eine ordnungsgemäße Befehlssyntax. All das und Sie sollten bereit sein zu gehen. Die Befehlssyntax sollte etwa so aussehen:
So kopieren Sie eine Datei VON einem entfernten System in das aktuelle Arbeitsverzeichnis:
scp user@ip_of_remote :/file/path/of/file.txt .
pkill – Dieses Befehlsdienstprogramm ermöglicht es uns, die Prozesse laufender Programme zu signalisieren. Sie können nach einem Prozess nach Namen (vollständig oder teilweise), Benutzer usw. suchen. Es gibt unzählige Optionen für die Verwendung dieses Dienstprogramms, aber standardmäßig sendet der Befehl das 15-Signal (TERM) an alle PIDS, die Ihren Kriterien entsprechen. Zum Beispiel:
$ pkill chrome
Dadurch sollten alle Chrome-Instanzen heruntergefahren werden, die auf dem Computer ausgeführt werden.
lsns – Dieser Befehl listet Namensräume auf (lsns
), macht genau das, was es sagt – listet Namespaces auf. Verrückt oder? Wie auch immer, es gibt viele Optionen, die Sie hier hinzufügen können: -J
(json-Format), -l
(Listenformat), -n
(keine Header), etc. Dieser Befehl ist ein Teil von util-linux
Paket und ist weit verbreitet. Weitere Informationen zu lsns
oder Namespaces im Allgemeinen lesen Sie diesen Artikel von Mitwirkendem Steve Ovens Die 7 am häufigsten verwendeten Linux-Namespaces.
Freigabe aufheben – Dieser konzentriert sich ebenfalls auf Namespaces. Der Unshare-Befehl führt ein Programm in einem oder mehreren neu erstellten Namespaces aus. Standardmäßig hält der neue Namensraum nur so lange an, wie Programme darin laufen. Weitere Informationen zu diesem Befehl finden Sie im man
Seite in Ihrem bevorzugten Linux-Rechner.
[ Möchten Sie Ihre Fähigkeiten als Systemadministrator testen? Machen Sie noch heute einen Kompetenztest. ]
Wenn es Ihnen gelingt, diese Tools dort in Ihren Arbeitsablauf zu integrieren, wo sie sinnvoll sind, werden Sie dafür ein besserer Systemadministrator sein. Wenn einige Ihrer Lieblingsbefehle nicht auf der Liste stehen, würden wir uns freuen, davon zu hören. Senden Sie uns gerne einen Artikel über Ihren Lieblingsbefehl, den wir nicht aufgelistet haben, an [email protected].