20 Linux-Befehle, die jeder Sysadmin kennen sollte

In einer Welt voller neuer Tools und vielfältiger Entwicklungsumgebungen ist es für jeden Entwickler oder Ingenieur praktisch eine Notwendigkeit, einige grundlegende Sysadmin-Befehle zu erlernen. Spezifische Befehle und Pakete können Entwicklern helfen, ihre Anwendungen zu organisieren, Fehler zu beheben und zu optimieren und — wenn etwas schief geht — Betreibern und Systemadministratoren wertvolle Triage-Informationen zur Verfügung zu stellen.

Egal, ob Sie ein neuer Entwickler sind oder Ihre eigene Anwendung verwalten möchten, die folgenden 20 grundlegenden Sysadmin-Befehle können Ihnen helfen, Ihre Anwendungen besser zu verstehen. Sie können Ihnen auch dabei helfen, Sysadmins Probleme bei der Fehlerbehebung zu beschreiben, warum eine Anwendung möglicherweise lokal, aber nicht auf einem Remotehost funktioniert. Diese Befehle gelten für Linux-Entwicklungsumgebungen, Container, virtuelle Maschinen (VMs) und Bare Metal.

curl

curl überträgt eine URL. Verwenden Sie diesen Befehl, um den Endpunkt einer Anwendung oder die Verbindung zu einem Upstream-Dienstendpunkt zu testen. curl kann nützlich sein, um festzustellen, ob Ihre Anwendung einen anderen Dienst erreichen kann, z. B. eine Datenbank, oder um zu überprüfen, ob Ihr Dienst fehlerfrei ist.

Stellen Sie sich als Beispiel vor, Ihre Anwendung löst einen HTTP 500-Fehler aus, der darauf hinweist, dass sie keine MongoDB-Datenbank erreichen kann:

$ curl -I -s myapplication:5000
HTTP/1.0 500 INTERNAL SERVER ERROR

Die Option -I zeigt die Header-Informationen an und die Option -s bringt den Antworttext zum Schweigen. Überprüfen des Endpunkts Ihrer Datenbank von Ihrem lokalen Desktop aus:

$ curl -I -s database:27017
HTTP/1.0 200 OK

Also, was könnte das Problem sein? Überprüfen Sie, ob Ihre Anwendung vom Anwendungshost aus neben der Datenbank auch an andere Orte gelangen kann:

$ curl -I -s https://opensource.com
HTTP/1.1 200 OK

Das scheint in Ordnung zu sein. Versuchen Sie nun, die Datenbank vom Anwendungshost aus zu erreichen. Ihre Anwendung verwendet den Hostnamen der Datenbank, versuchen Sie dies also zuerst:

$ curl database:27017
curl: (6) Couldn't resolve host 'database'

Dies zeigt an, dass Ihre Anwendung die Datenbank nicht auflösen kann, da die URL der Datenbank nicht verfügbar ist oder der Host (Container oder VM) keinen Nameserver hat, mit dem der Hostname aufgelöst werden kann.

python -m json.tool / jq

Nachdem Sie curl ausgegeben haben, ist die Ausgabe des API-Aufrufs möglicherweise schwer zu lesen. Manchmal möchten Sie die JSON-Ausgabe hübsch drucken, um einen bestimmten Eintrag zu finden. Python verfügt über eine integrierte JSON-Bibliothek, die dabei helfen kann. Sie verwenden python -m json.werkzeug zum Einrücken und Organisieren des JSON. Um das JSON-Modul von Python zu verwenden, leiten Sie die Ausgabe einer JSON-Datei in python -m json .werkzeug-Befehl.

$ cat test.json
{"title":"Person","type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"age":{"description":"Age in years","type":"integer","minimum":0}},"required":}

Um die Python-Bibliothek zu verwenden, leiten Sie die Ausgabe mit der Option -m (module) an Python weiter.

$ cat test.json | python -m json.tool
{
"properties": {
"age": {
"description": "Age in years",
"minimum": 0,
"type": "integer"
},
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
}
},
"required": ,
"title": "Person",
"type": "object"
}

Für eine erweiterte JSON-Analyse können Sie jq installieren. jq bietet einige Optionen, die bestimmte Werte aus der JSON-Eingabe extrahieren. Um wie im obigen Python-Modul zu drucken, wenden Sie einfach jq auf die Ausgabe an.

$ cat test.json | jq
{
"title": "Person",
"type": "object",
"properties": {
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"age": {
"description": "Age in years",
"type": "integer",
"minimum": 0
}
},
"required":
}

ls

ls listet Dateien in einem Verzeichnis auf. Systemadministratoren und Entwickler geben diesen Befehl häufig aus. Im Containerbereich kann dieser Befehl helfen, das Verzeichnis und die Dateien Ihres Containerimages zu bestimmen. Neben dem Nachschlagen Ihrer Dateien kann ls Ihnen helfen, Ihre Berechtigungen zu überprüfen. Im folgenden Beispiel können Sie myapp aufgrund eines Berechtigungsproblems nicht ausführen. Wenn Sie die Berechtigungen mit ls -l überprüfen, stellen Sie fest, dass die Berechtigungen kein „x“ in -rw-r–r– , die nur Lese- und Schreibzugriff haben.

$ ./myapp
bash: ./myapp: Permission denied
$ ls -l myapp
-rw-r--r--. 1 root root 33 Jul 21 18:36 myapp

tail

tail zeigt den letzten Teil einer Datei an. Normalerweise benötigen Sie nicht jede Protokollzeile zur Fehlerbehebung. Stattdessen möchten Sie überprüfen, was Ihre Protokolle über die letzte Anforderung an Ihre Anwendung aussagen. Sie können beispielsweise tail verwenden, um zu überprüfen, was in den Protokollen passiert, wenn Sie eine Anfrage an Ihren Apache-HTTP-Server stellen.

example_tail.png

Verwenden Sie tail -f, um Apache-HTTP-Serverprotokolle zu verfolgen und die Anforderungen zu sehen, sobald sie auftreten.

Verwenden Sie tail -f , um Apache-HTTP-Protokollen zu folgen und die Anforderungen so zu sehen, wie sie auftreten.

Die Option -f gibt die Option „Folgen“ an, die die Protokollzeilen ausgibt, wenn sie in die Datei geschrieben werden. Das Beispiel enthält ein Hintergrundskript, das alle paar Sekunden auf den Endpunkt zugreift, und das Protokoll zeichnet die Anforderung auf. Anstatt dem Protokoll in Echtzeit zu folgen, können Sie auch tail verwenden, um die letzten 100 Zeilen der Datei mit der Option -n anzuzeigen.

$ tail -n 100 /var/log/httpd/access_log

cat

cat verkettet und druckt Dateien. Möglicherweise geben Sie cat aus, um den Inhalt Ihrer Abhängigkeitsdatei zu überprüfen oder die Version der Anwendung zu bestätigen, die Sie bereits lokal erstellt haben.

$ cat requirements.txt
flask
flask_pymongo

Im obigen Beispiel wird überprüft, ob in Ihrer Python-Flask-Anwendung Flask als Abhängigkeit aufgeführt ist.

grep

grep durchsucht Dateimuster. Wenn Sie in der Ausgabe eines anderen Befehls nach einem bestimmten Muster suchen, hebt grep die relevanten Zeilen hervor. Verwenden Sie diesen Befehl zum Durchsuchen von Protokolldateien, bestimmten Prozessen und mehr. Wenn Sie sehen möchten, ob Apache Tomcat gestartet wird, werden Sie möglicherweise von der Anzahl der Zeilen überwältigt. Indem Sie diese Ausgabe an den Befehl grep weiterleiten, isolieren Sie die Zeilen, die den Serverstart anzeigen.

$ cat tomcat.log | grep org.apache.catalina.startup.Catalina.start
01-Jul-2017 18:03:47.542 INFO org.apache.catalina.startup.Catalina.start Server startup in 681 ms

ps

Der Befehl ps, Teil des Pakets procps-ng, der nützliche Befehle zum Untersuchen von Prozess-IDs bereitstellt, zeigt den Status eines laufenden Prozesses an. Verwenden Sie diesen Befehl, um eine laufende Anwendung zu ermitteln oder einen erwarteten Prozess zu bestätigen. Wenn Sie beispielsweise nach einem laufenden Tomcat-Webserver suchen möchten, verwenden Sie ps mit seinen Optionen, um die Prozess-ID von Tomcat abzurufen.

$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 2 18:55 ? 00:00:02 /docker-java-home/jre/bi
root 59 0 0 18:55 pts/0 00:00:00 /bin/sh
root 75 59 0 18:57 pts/0 00:00:00 ps -ef

Für noch mehr Lesbarkeit verwenden Sie ps und leiten Sie es an grep .

$ ps -ef | grep tomcat
root 1 0 1 18:55 ? 00:00:02 /docker-java-home/jre/bi

env

Mit env können Sie die Umgebungsvariablen festlegen oder drucken. Bei der Fehlerbehebung kann es hilfreich sein, zu überprüfen, ob die falsche Umgebungsvariable den Start Ihrer Anwendung verhindert. Im folgenden Beispiel wird dieser Befehl verwendet, um die auf dem Host Ihrer Anwendung festgelegten Umgebungsvariablen zu überprüfen.

$ env
PYTHON_PIP_VERSION=9.0.1
HOME=/root
DB_NAME=test
PATH=/usr/local/bin:/usr/local/sbin
LANG=C.UTF-8
PYTHON_VERSION=3.4.6
PWD=/
DB_URI=mongodb://database:27017/test

Beachten Sie, dass die Anwendung Python verwendet und über Umgebungsvariablen verfügt, um eine Verbindung zu einer MongoDB-Datenbank herzustellen.

oben

oben zeigt sortierte Prozessinformationen an und aktualisiert sie. Verwenden Sie dieses Überwachungstool, um festzustellen, welche Prozesse ausgeführt werden und wie viel Speicher und CPU sie verbrauchen. Ein häufiger Fall tritt auf, wenn Sie eine Anwendung ausführen und sie eine Minute später stirbt. Zuerst überprüfen Sie den Rückgabefehler der Anwendung, bei dem es sich um einen Speicherfehler handelt.

$ tail myapp.log
Traceback (most recent call last):
MemoryError

Hat Ihre Anwendung wirklich keinen Speicher mehr? Um dies zu bestätigen, verwenden Sie top, um zu bestimmen, wie viel CPU und Arbeitsspeicher Ihre Anwendung verbraucht. Wenn Sie top ausgeben, stellen Sie fest, dass eine Python-Anwendung den größten Teil der CPU verbraucht und die Speichernutzung steigt, und vermuten, dass es sich um Ihre Anwendung handelt. Während der Ausführung drücken Sie die Taste „C“, um den vollständigen Befehl anzuzeigen und zurückzuentwickeln, ob der Prozess Ihre Anwendung ist. Es stellt sich heraus, dass es sich um Ihre speicherintensive Anwendung handelt.memeater.py ). Wenn Ihre Anwendung keinen Arbeitsspeicher mehr hat, beendet das System sie mit einem OOM-Fehler (Out-of-Memory).

beispiel_top.png

Ausgabe von Top gegen eine Anwendung, die den gesamten Speicher belegt.

Die Speicher- und CPU-Auslastung der Anwendung steigt und wird schließlich OOM-killed.

example_topwithc.png

 Wenn Sie C drücken, während Sie oben ausgeführt werden, wird der vollständige Befehl angezeigt

Durch Drücken der Taste „C“ sehen Sie den vollständigen Befehl, mit dem die Anwendung gestartet wurde.

Zusätzlich zur Überprüfung Ihrer eigenen Anwendung können Sie top verwenden, um andere Prozesse zu debuggen, die CPU oder Speicher verwenden.

netstat

netstat zeigt den Netzwerkstatus an. Dieser Befehl zeigt die verwendeten Netzwerkports und ihre eingehenden Verbindungen an. Netstat ist jedoch unter Linux nicht sofort einsatzbereit. Wenn Sie es installieren müssen, finden Sie es im Paket net-tools. Als Entwickler, der lokal experimentiert oder eine Anwendung an einen Host sendet, erhalten Sie möglicherweise die Fehlermeldung, dass ein Port bereits zugewiesen oder eine Adresse bereits verwendet wird. Die Verwendung von netstat mit Protokoll-, Prozess- und Portoptionen zeigt, dass der Apache HTTP-Server bereits Port 80 auf dem folgenden Host verwendet.

beispiel_netstat.png

netstat überprüft, ob Apache auf Port läuft 80

Die Verwendung von netstat -tulpn zeigt, dass Apache auf diesem Computer bereits Port 80 verwendet.

ip

Wenn die IP-Adresse auf Ihrem Host nicht funktioniert, muss sie mit dem iproute2-Paket installiert werden. Die Unterbefehlsadresse (oder kurz ip a) zeigt die Schnittstellen und IP-Adressen des Hosts Ihrer Anwendung an. Sie verwenden die IP-Adresse, um die IP-Adresse Ihres Containers oder Hosts zu überprüfen. Wenn Ihr Container beispielsweise an zwei Netzwerke angeschlossen ist, kann die IP-Adresse anzeigen, welche Schnittstelle eine Verbindung zu welchem Netzwerk herstellt. Für eine einfache Überprüfung können Sie jederzeit den Befehl IP-Adresse verwenden, um die IP-Adresse des Hosts abzurufen. Das folgende Beispiel zeigt, dass der Web-Tier-Container eine IP-Adresse von 172.17.0.2 auf der Schnittstelle eth0 hat.

$ ip address show eth0
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether d4:3b:04:9e:b2:c2 brd ff:ff:ff:ff:ff:ff
inet 10.1.1.3/27 brd 10.1.1.31 scope global dynamic noprefixroute eth0
valid_lft 52072sec preferred_lft 52072sec

lsof

lsof listet die geöffneten Dateien auf, die Ihrer Anwendung zugeordnet sind. Auf einigen Linux-Maschinen-Images müssen Sie lsof mit dem lsof-Paket installieren. Unter Linux wird fast jede Interaktion mit dem System wie eine Datei behandelt. Wenn Ihre Anwendung also in eine Datei schreibt oder eine Netzwerkverbindung öffnet, spiegelt lsof diese Interaktion als Datei wider. Ähnlich wie bei netstat können Sie lsof verwenden, um nach Abhörports zu suchen. Wenn Sie beispielsweise überprüfen möchten, ob Port 80 verwendet wird, verwenden Sie lsof, um zu überprüfen, welcher Prozess ihn verwendet. Unten sehen Sie, dass httpd (Apache) auf Port 80 lauscht. Sie können lsof auch verwenden, um die Prozess-ID von httpd zu überprüfen und zu untersuchen, wo sich die Binärdatei des Webservers befindet (/ usr / sbin / httpd).

beispiel_lsof.png

lsof enthüllt den Ursprung von Prozessinformationen

Lsof zeigt an, dass httpd auf Port 80 lauscht. Wenn Sie die Prozess-ID von httpd untersuchen, werden auch alle Dateien angezeigt, die httpd zum Ausführen benötigt.

Der Name der geöffneten Datei in der Liste der geöffneten Dateien hilft, den Ursprung des Prozesses, insbesondere Apache, genau zu bestimmen.

df

Sie können df (display free disk space) verwenden, um Probleme mit dem Festplattenspeicher zu beheben. Wenn Sie Ihre Anwendung auf einem Container-Orchestrator ausführen, erhalten Sie möglicherweise eine Fehlermeldung, die auf einen Mangel an freiem Speicherplatz auf dem Container-Host hinweist. Während der Speicherplatz von einem Systemadministrator verwaltet und optimiert werden sollte, können Sie mit df den vorhandenen Speicherplatz in einem Verzeichnis ermitteln und bestätigen, ob tatsächlich kein Speicherplatz mehr vorhanden ist.

$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 7.7G 0 7.7G 0% /dev
/dev/mapper/RHEL-Root 50G 16G 35G 31% /
/dev/nvme0n1p2 3.0G 246M 2.8G 9% /boot
/dev/mapper/RHEL-Home 100G 88G 13G 88% /home
/dev/nvme0n1p1 200M 9.4M 191M 5% /boot/efi
/dev/sdb1 114G 55G 54G 51% /run/media/tux/red

Die Option -h gibt die Informationen in einem für Menschen lesbaren Format aus. Sie können die Ergebnisse jedoch auch einschränken, indem Sie ein Verzeichnis als Teil Ihres Befehls angeben (z. B. df -h /home).

du

Um detailliertere Informationen darüber abzurufen, welche Dateien den Speicherplatz in einem Verzeichnis belegen, können Sie den Befehl du verwenden. Wenn Sie beispielsweise herausfinden möchten, welches Protokoll den meisten Speicherplatz im Verzeichnis /var/log belegt, können Sie es mit der Option -h (lesbar) und der Option -s für die Gesamtgröße verwenden.

$ du -sh /var/log/*
1.8M /var/log/anaconda
384K /var/log/audit
4.0K /var/log/boot.log
0 /var/log/chrony
4.0K /var/log/cron
4.0K /var/log/maillog
64K /var/log/messages

Das obige Beispiel zeigt, dass das größte Verzeichnis unter /var/log /var/log/audit . Sie können du in Verbindung mit df verwenden, um zu bestimmen, was den Speicherplatz auf dem Host Ihrer Anwendung nutzt.

id

Um den Benutzer zu überprüfen, der die Anwendung ausführt, verwenden Sie den Befehl id, um die Benutzeridentität zurückzugeben. Im folgenden Beispiel wird Vagrant verwendet, um die Anwendung zu testen und ihre Entwicklungsumgebung zu isolieren. Wenn Sie versuchen, Apache HTTP Server (eine Abhängigkeit) zu installieren, nachdem Sie sich bei der Vagrant Box angemeldet haben, gibt das System an, dass Sie den Befehl nicht als root ausführen können. Um Ihren Benutzer und Ihre Gruppe zu überprüfen, geben Sie den Befehl id aus und stellen Sie fest, dass Sie als Benutzer „vagrant“ in der Gruppe „vagrant“ ausgeführt werden.

$ dnf -y install httpd
Loaded plugins: fastestmirror
You need to be root to perform this command.
$ id
uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

Um dies zu korrigieren, müssen Sie den Befehl als Superuser ausführen, der erhöhte Berechtigungen bereitstellt.

chmod

Wenn Sie Ihre Anwendungsbinärdatei zum ersten Mal auf Ihrem Host ausführen, wird möglicherweise die Fehlermeldung „Berechtigung verweigert.“ Wie im Beispiel für ls zu sehen ist, können Sie die Berechtigungen Ihrer Anwendungsbinärdatei überprüfen.

$ ls -l
total 4
-rw-rw-r--. 1 vagrant vagrant 34 Jul 11 02:17 test.sh

Dies zeigt, dass Sie keine Ausführungsrechte (kein „x“) haben, um die Binärdatei auszuführen. chmod kann die Berechtigungen korrigieren, damit Ihr Benutzer die Binärdatei ausführen kann.

$ chmod +x test.sh
$ ls -l
total 4
-rwxrwxr-x. 1 vagrant vagrant 34 Jul 11 02:17 test.sh

Wie im Beispiel gezeigt, werden dadurch die Berechtigungen mit Ausführungsrechten aktualisiert. Wenn Sie nun versuchen, Ihre Binärdatei auszuführen, gibt die Anwendung keinen Fehler mit verweigerter Berechtigung aus. Chmod kann auch nützlich sein, wenn Sie eine Binärdatei in einen Container laden. Es stellt sicher, dass Ihr Container über die richtigen Berechtigungen zum Ausführen Ihrer Binärdatei verfügt.

dig / nslookup

Ein Domain Name Server (DNS) hilft beim Auflösen einer URL in eine Reihe von Anwendungsservern. Es kann jedoch vorkommen, dass eine URL nicht aufgelöst wird, was zu einem Verbindungsproblem für Ihre Anwendung führt. Angenommen, Sie versuchen, vom Host Ihrer Anwendung aus unter der mydatabase-URL auf Ihre Datenbank zuzugreifen. Stattdessen erhalten Sie den Fehler „kann nicht behoben werden“. Zur Fehlerbehebung versuchen Sie, mit dig (DNS Lookup Utility) oder nslookup (query Internet name servers) herauszufinden, warum die Anwendung die Datenbank anscheinend nicht auflösen kann.

$ nslookup mydatabase
Server: 10.0.2.3
Address: 10.0.2.3#53
** server can't find mydatabase: NXDOMAIN

Die Verwendung von nslookup zeigt, dass mydatabase nicht aufgelöst werden kann. Der Versuch, mit dig zu lösen, führt zum gleichen Ergebnis.

$ dig mydatabase
; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7_3.1 <<>> mydatabase
;; global options: +cmd
;; connection timed out; no servers could be reached

Diese Fehler können durch viele verschiedene Probleme verursacht werden. Wenn Sie die Ursache nicht debuggen können, wenden Sie sich an Ihren Systemadministrator, um weitere Informationen zu erhalten. Bei lokalen Tests kann dieses Problem darauf hinweisen, dass die Nameserver Ihres Hosts nicht ordnungsgemäß konfiguriert sind. Um diese Befehle verwenden zu können, müssen Sie das Paket BIND Utilities installieren.

firewall-cmd

Traditionell wurden Firewalls unter Linux mit dem Befehl iptables konfiguriert, und obwohl es seine Allgegenwart beibehält, wurde es tatsächlich weitgehend durch nftables ersetzt. Ein benutzerfreundliches Frontend für nftables, das standardmäßig mit vielen Distributionen ausgeliefert wird, ist firewall-cmd . Mit diesem Befehl können Sie Regeln für den ausgehenden und eingehenden Netzwerkverkehr Ihres Computers festlegen. Diese Regeln können in Zonen gruppiert werden, sodass Sie je nach Ihren Anforderungen schnell und einfach von einem Regelsatz zum anderen wechseln können.

Die Befehlssyntax ist einfach. Sie verwenden den Befehl und eine Reihe von Optionen, die alle so benannt sind, dass Sie fast einen für Menschen lesbaren Satz erstellen können. Zum Beispiel, um zu sehen, in welcher Zone Sie sich gerade befinden:

$ sudo firewall-cmd --get-active-zones``
corp
interfaces: ens0
dmz
interfaces: ens1

In diesem Beispiel verfügt Ihr Computer über zwei Netzwerkgeräte, von denen eines der Zone corp und das andere der Zone dmz zugewiesen ist.

Um zu sehen, was jede Zone zulässt, können Sie die Option --list-all verwenden:

$ sudo firewall-cmd --zone corp --list-all
corp
target: default
interfaces: ens0
services: cockpit dhcpv6-client ssh
ports:
protocols:

Das Hinzufügen von Diensten ist genauso einfach:

$ sudo firewall-cmd --add-service http --permanent
$ sudo firewall-cmd --reload

Die Interaktion mit Firewall-cmd ist intuitiv gestaltet und verfügt über eine umfangreiche Sammlung vordefinierter Dienste sowie die Möglichkeit, nft-Regeln direkt zu schreiben. Sobald Sie firewall-cmd verwenden, können Sie unseren firewall-cmd-Spickzettel herunterladen, damit Sie sich an die wichtigsten Optionen erinnern können.

sestatus

Normalerweise wird SELinux (ein Linux-Sicherheitsmodul) auf einem von einem Unternehmen verwalteten Anwendungshost erzwungen. SELinux bietet Zugriff mit den geringsten Berechtigungen auf Prozesse, die auf dem Host ausgeführt werden, und verhindert so, dass potenziell schädliche Prozesse auf wichtige Dateien auf dem System zugreifen können. In einigen Situationen muss eine Anwendung auf eine bestimmte Datei zugreifen, kann jedoch einen Fehler auslösen. Um zu überprüfen, ob SELinux die Anwendung blockiert, verwenden Sie tail und grep, um nach einer „denied“ -Nachricht in der / var /log / audit-Protokollierung zu suchen. Andernfalls können Sie mithilfe von sestatus überprüfen, ob SELinux in der Box aktiviert ist.

$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28

Die obige Ausgabe zeigt an, dass auf dem Host der Anwendung SELinux aktiviert ist. In Ihrer lokalen Entwicklungsumgebung können Sie SELinux aktualisieren, um freizügiger zu sein. Wenn Sie Hilfe bei einem Remotehost benötigen, kann Ihnen Ihr Systemadministrator dabei helfen, die bewährte Methode zu ermitteln, mit der Ihre Anwendung auf die benötigte Datei zugreifen kann. Wenn Sie häufig mit SELinux interagieren, laden Sie unser SELinux-Spickzettel zum schnellen Nachschlagen herunter.

Verlauf

Wenn Sie so viele Befehle zum Testen und Debuggen ausgeben, vergessen Sie möglicherweise die nützlichen! Jede Shell hat eine Variante des History-Befehls. Es zeigt den Verlauf der Befehle an, die Sie seit Beginn der Sitzung ausgegeben haben. Sie können den Verlauf verwenden, um zu protokollieren, welche Befehle Sie zur Fehlerbehebung in Ihrer Anwendung verwendet haben. Wenn Sie beispielsweise im Verlauf dieses Artikels den Verlauf ausgeben, werden die verschiedenen Befehle angezeigt, mit denen Sie experimentiert und gelernt haben.

$ history
1 clear
2 df -h
3 du

Was ist, wenn Sie einen Befehl in Ihrem vorherigen Verlauf ausführen möchten, ihn aber nicht erneut eingeben möchten? Verwenden ! vor der Befehlsnummer erneut ausführen.

example_history.png

Führen Sie einen Befehl in Ihrem Verlauf erneut aus

Hinzufügen ! bevor die Befehlsnummer, die Sie ausführen möchten, den Befehl erneut ausgibt.

Grundlegende Befehle können Ihr Fachwissen zur Fehlerbehebung verbessern, wenn Sie feststellen, warum Ihre Anwendung in einer Entwicklungsumgebung funktioniert, in einer anderen jedoch möglicherweise nicht. Viele Systemadministratoren nutzen diese Befehle, um Probleme mit Systemen zu beheben. Wenn Sie einige dieser nützlichen Befehle zur Fehlerbehebung verstehen, können Sie mit Systemadministratoren kommunizieren und Probleme mit Ihrer Anwendung beheben.

Dieser Artikel wurde ursprünglich im Juli 2017 veröffentlicht und vom Herausgeber aktualisiert.



+