Einführung
Jedes Computersystem profitiert von einer ordnungsgemäßen Verwaltung und Überwachung. Ein Blick darauf, wie Ihr System läuft, wird Ihnen helfen, Probleme zu entdecken und schnell zu lösen.
Es gibt zahlreiche Befehlszeilen-Dienstprogramme, die zu diesem Zweck erstellt wurden. Dieser Leitfaden wird Sie mit einigen der hilfreichsten Anwendungen vertraut machen, die Sie in Ihrem Werkzeugkasten haben sollten.
Voraussetzungen
Um diesem Leitfaden zu folgen, benötigen Sie Zugriff auf einen Computer, der ein auf Linux basierendes Betriebssystem ausführt. Dies kann entweder ein virtueller privater Server sein, auf den Sie über SSH zugegriffen haben, oder Ihr lokaler Computer. Beachten Sie, dass dieses Tutorial unter Verwendung eines Linux-Servers unter Ubuntu 20.04 validiert wurde, aber die gegebenen Beispiele auf einem Computer mit jeder Version einer beliebigen Linux-Distribution funktionieren sollten.
Wenn Sie planen, einen Remote-Server zu verwenden, um diesem Leitfaden zu folgen, empfehlen wir Ihnen, zuerst unseren Initial Server Setup-Leitfaden abzuschließen. Dadurch erhalten Sie eine sichere Serverumgebung – einschließlich eines nicht-Root-Benutzers mit sudo
-Berechtigungen und einer mit UFW konfigurierten Firewall –, die Sie zur Verbesserung Ihrer Linux-Kenntnisse verwenden können.
Schritt 1 – So zeigen Sie laufende Prozesse in Linux an
Sie können alle auf Ihrem Server laufenden Prozesse mit dem Befehl top
anzeigen:
Outputtop - 15:14:40 up 46 min, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 56 total, 1 running, 55 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1019600k total, 316576k used, 703024k free, 7652k buffers
Swap: 0k total, 0k used, 0k free, 258976k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
7 root RT 0 0 0 0 S 0.0 0.0 0:00.03 watchdog/0
8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset
9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
Die ersten mehreren Zeilen der Ausgabe zeigen Systemstatistiken wie CPU-/Speicherauslastung und die Gesamtanzahl der laufenden Aufgaben an.
Sie sehen, dass es 1 laufenden Prozess gibt und 55 Prozesse, die als schlafend betrachtet werden, da sie CPU-Zyklen nicht aktiv nutzen.
Der Rest der angezeigten Ausgabe zeigt die laufenden Prozesse und ihre Nutzungsstatistiken. Standardmäßig sortiert top
diese automatisch nach CPU-Auslastung, sodass Sie zuerst die am stärksten ausgelasteten Prozesse sehen können. top
wird in Ihrer Shell weiterhin ausgeführt, bis Sie es mit der Standardtastenkombination Strg+C
beenden, um einen laufenden Prozess zu beenden. Dies sendet ein kill
-Signal, das den Prozess anweist, ordnungsgemäß anzuhalten, wenn er dazu in der Lage ist.
Eine verbesserte Version von top
namens htop
ist in den meisten Paket-Repositories verfügbar. Auf Ubuntu 20.04 können Sie es mit apt
installieren:
Danach wird der Befehl htop
verfügbar sein:
Output Mem[||||||||||| 49/995MB] Load average: 0.00 0.03 0.05
CPU[ 0.0%] Tasks: 21, 3 thr; 1 running
Swp[ 0/0MB] Uptime: 00:58:11
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
1259 root 20 0 25660 1880 1368 R 0.0 0.2 0:00.06 htop
1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 /sbin/init
311 root 20 0 17224 636 440 S 0.0 0.1 0:00.07 upstart-udev-brid
314 root 20 0 21592 1280 760 S 0.0 0.1 0:00.06 /sbin/udevd --dae
389 messagebu 20 0 23808 688 444 S 0.0 0.1 0:00.01 dbus-daemon --sys
407 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.02 rsyslogd -c5
408 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.00 rsyslogd -c5
409 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.00 rsyslogd -c5
406 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.04 rsyslogd -c5
553 root 20 0 15180 400 204 S 0.0 0.0 0:00.01 upstart-socket-br
htop
bietet eine bessere Visualisierung mehrerer CPU-Threads, eine bessere Unterstützung von Farben in modernen Terminals und mehr Sortieroptionen sowie andere Funktionen. Im Gegensatz zu top
ist es nicht immer standardmäßig installiert, kann jedoch als Ersatz verwendet werden. Sie können htop
wie top
durch Drücken von Strg+C
beenden.
Hier sind einige Tastenkombinationen, die Ihnen helfen, htop
effektiver zu verwenden:
- M: Sort processes by memory usage
- P: Sort processes by processor usage
- ?: Hilfe aufrufen
- k: Kill current/tagged process
- F2: Konfigurieren von htop. Hier können Sie Anzeigeoptionen auswählen.
- /: Prozesse durchsuchen
Es gibt viele weitere Optionen, auf die Sie über Hilfe oder Konfiguration zugreifen können. Dies sollten Ihre ersten Anlaufstellen sein, um die Funktionalität von htop zu erkunden. Im nächsten Schritt erfahren Sie, wie Sie die Netzwerkbandbreite überwachen können.
Schritt 2 – So überwachen Sie Ihre Netzwerkbandbreite
Wenn Ihre Netzwerkverbindung überlastet zu sein scheint und Sie unsicher sind, welche Anwendung dafür verantwortlich ist, ist ein Programm namens nethogs
eine gute Wahl, um dies herauszufinden.
Auf Ubuntu können Sie nethogs mit folgendem Befehl installieren:
Nach der Installation steht Ihnen der Befehl nethogs
zur Verfügung:
OutputNetHogs version 0.8.0
PID USER PROGRAM DEV SENT RECEIVED
3379 root /usr/sbin/sshd eth0 0.485 0.182 KB/sec
820 root sshd: root@pts/0 eth0 0.427 0.052 KB/sec
? root unknown TCP 0.000 0.000 KB/sec
TOTAL 0.912 0.233 KB/sec
nethogs
ordnet jeder Anwendung ihren Netzwerkverkehr zu.
Es gibt nur wenige Befehle, die Sie verwenden können, um nethogs
zu steuern:
- M: Change displays between “kb/s”, “kb”, “b”, and “mb”.
- R: Sort by traffic received.
- S: Sort by traffic sent.
- Q: quit
iptraf-ng
ist eine weitere Möglichkeit, den Netzwerkverkehr zu überwachen. Es bietet eine Reihe verschiedener interaktiver Überwachungsschnittstellen.
Hinweis: IPTraf erfordert eine Bildschirmgröße von mindestens 80 Spalten mal 24 Zeilen.
Auf Ubuntu können Sie iptraf-ng
mit dem folgenden Befehl installieren:
iptraf-ng
muss mit Root-Rechten ausgeführt werden, daher sollten Sie es mit sudo
voranstellen:
Sie werden mit einem Menü präsentiert, das eine beliebte Befehlszeilenschnittstellenframework namens ncurses
verwendet.
Mit diesem Menü können Sie auswählen, auf welche Schnittstelle Sie zugreifen möchten.
Zum Beispiel können Sie eine Übersicht über alle Netzwerkverbindungen erhalten, indem Sie das erste Menü auswählen und dann „Alle Schnittstellen“ auswählen. Es wird Ihnen einen Bildschirm anzeigen, der so aussieht:
Hier sehen Sie, mit welchen IP-Adressen Sie auf allen Ihren Netzwerkschnittstellen kommunizieren.
Wenn Sie diese IP-Adressen in Domains auflösen möchten, können Sie die Rückwärtssuche nach DNS beenden, indem Sie den Verkehrsmonitor verlassen, Konfigurieren
auswählen und dann die Rückwärtssuche nach DNS
aktivieren.
Sie können auch die TCP/UDP-Dienstnamen
aktivieren, um die Namen der ausgeführten Dienste anstelle der Portnummern zu sehen.
Mit beiden aktivierten Optionen kann die Anzeige so aussehen:
Der Befehl netstat
ist ein weiteres vielseitiges Werkzeug zur Erfassung von Netzwerkinformationen.
netstat
ist standardmäßig auf den meisten modernen Systemen installiert, aber Sie können es selbst installieren, indem Sie es aus den Standardpaketquellen Ihres Servers herunterladen. Auf den meisten Linux-Systemen, einschließlich Ubuntu, befindet sich das Paket, das netstat
enthält, unter net-tools
:
Standardmäßig gibt der Befehl netstat
alle offenen Sockets aus:
OutputActive Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.241.187.204:ssh ip223.hichina.com:50324 ESTABLISHED
tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 5 [ ] DGRAM 6559 /dev/log
unix 3 [ ] STREAM CONNECTED 9386
unix 3 [ ] STREAM CONNECTED 9385
. . .
Wenn Sie die Option -a
hinzufügen, werden alle Ports aufgelistet, die hören und nicht hören:
OutputActive Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED
tcp6 0 0 [::]:ssh [::]:* LISTEN
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 6195 @/com/ubuntu/upstart
unix 2 [ ACC ] STREAM LISTENING 7762 /var/run/acpid.socket
unix 2 [ ACC ] STREAM LISTENING 6503 /var/run/dbus/system_bus_socket
. . .
Wenn Sie nur TCP- oder UDP-Verbindungen anzeigen möchten, verwenden Sie die Flags -t
oder -u
entsprechend:
OutputActive Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED
tcp6 0 0 [::]:ssh [::]:* LISTEN
Statistiken können durch Übergeben des Flags „-s“ angezeigt werden:
OutputIp:
13500 total packets received
0 forwarded
0 incoming packets discarded
13500 incoming packets delivered
3078 requests sent out
16 dropped because of missing route
Icmp:
41 ICMP messages received
0 input ICMP message failed.
ICMP input histogram:
echo requests: 1
echo replies: 40
. . .
Wenn Sie die Ausgabe kontinuierlich aktualisieren möchten, können Sie das Flag -c
verwenden. Es gibt viele weitere Optionen für netstat, die Sie durch Überprüfen seiner Handbuchseite erfahren können.
Im nächsten Schritt lernen Sie einige nützliche Methoden zur Überwachung Ihres Festplattenverbrauchs kennen.
Schritt 3 – Überwachen des Festplattenverbrauchs
Für einen schnellen Überblick darüber, wie viel Speicherplatz auf Ihren angeschlossenen Laufwerken verbleibt, können Sie das Programm df
verwenden.
Ohne Optionen sieht die Ausgabe wie folgt aus:
OutputFilesystem 1K-blocks Used Available Use% Mounted on
/dev/vda 31383196 1228936 28581396 5% /
udev 505152 4 505148 1% /dev
tmpfs 203920 204 203716 1% /run
none 5120 0 5120 0% /run/lock
none 509800 0 509800 0% /run/shm
Dies gibt den Festplattenverbrauch in Bytes aus, was möglicherweise etwas schwer zu lesen ist.
Um dieses Problem zu beheben, können Sie die Ausgabe in einem für Menschen lesbaren Format angeben:
OutputFilesystem Size Used Avail Use% Mounted on
/dev/vda 30G 1.2G 28G 5% /
udev 494M 4.0K 494M 1% /dev
tmpfs 200M 204K 199M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 498M 0 498M 0% /run/shm
Wenn Sie den Gesamtplatz auf allen Dateisystemen sehen möchten, können Sie die Option --total
übergeben. Dadurch wird eine Zeile am Ende mit Zusammenfassungsinformationen hinzugefügt:
OutputFilesystem Size Used Avail Use% Mounted on
/dev/vda 30G 1.2G 28G 5% /
udev 494M 4.0K 494M 1% /dev
tmpfs 200M 204K 199M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 498M 0 498M 0% /run/shm
total 32G 1.2G 29G 4%
df
kann einen nützlichen Überblick bieten. Ein weiterer Befehl, du
, gibt eine Aufschlüsselung nach Verzeichnis.
du
analysiert die Nutzung für das aktuelle Verzeichnis und alle Unterverzeichnisse. Die Standardausgabe von du
in einem fast leeren Home-Verzeichnis sieht so aus:
Output4 ./.cache
8 ./.ssh
28 .
Sie können erneut eine menschenlesbare Ausgabe spezifizieren, indem Sie -h
übergeben:
Output4.0K ./.cache
8.0K ./.ssh
28K .
Um auch Dateigrößen sowie Verzeichnisse zu sehen, geben Sie folgendes ein:
Output0 ./.cache/motd.legal-displayed
4 ./.cache
4 ./.ssh/authorized_keys
8 ./.ssh
4 ./.profile
4 ./.bashrc
4 ./.bash_history
28 .
Für eine Gesamtsumme am Ende können Sie die Option -c
hinzufügen:
Output4 ./.cache
8 ./.ssh
28 .
28 total
Wenn Sie nur am Gesamtinteresse und nicht an den Details interessiert sind, können Sie ausgeben:
Output28 .
Es gibt auch eine ncurses
-Schnittstelle für du
, die passenderweise ncdu
heißt, die Sie installieren können:
Dies wird Ihre Festplattennutzung grafisch darstellen:
Output--- /root ----------------------------------------------------------------------
8.0KiB [##########] /.ssh
4.0KiB [##### ] /.cache
4.0KiB [##### ] .bashrc
4.0KiB [##### ] .profile
4.0KiB [##### ] .bash_history
Sie können sich durch das Dateisystem bewegen, indem Sie die Pfeiltasten nach oben und unten verwenden und die Eingabetaste auf einem beliebigen Verzeichniseintrag drücken.
In der letzten Sektion erfahren Sie, wie Sie Ihren Speicherverbrauch überwachen können.
Schritt 4 – So überwachen Sie Ihren Speicherverbrauch
Sie können den aktuellen Speicherverbrauch auf Ihrem System mit dem Befehl free
überprüfen.
Wenn ohne Optionen verwendet, sieht die Ausgabe so aus:
Output total used free shared buff/cache available
Mem: 1004896 390988 123484 3124 490424 313744
Swap: 0 0 0
Um sie in einem lesbareren Format anzuzeigen, können Sie die Option -m
übergeben, um die Ausgabe in Megabytes anzuzeigen:
Output total used free shared buff/cache available
Mem: 981 382 120 3 478 306
Swap: 0 0 0
Die Mem
-Zeile enthält den Speicher, der für Pufferung und Zwischenspeicherung verwendet wird, der freigegeben wird, sobald er für andere Zwecke benötigt wird. Swap
ist Speicher, der in einer Swapdatei
auf der Festplatte geschrieben wurde, um aktiven Speicher zu sparen.
Zuletzt kann der Befehl vmstat
verschiedene Informationen über Ihr System ausgeben, einschließlich Speicher, Swap, Festplatten-E/A und CPU-Informationen.
Sie können den Befehl verwenden, um einen weiteren Einblick in die Speicherauslastung zu erhalten:
Outputprocs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 99340 123712 248296 0 0 0 1 9 3 0 0 100 0
Sie können dies in Megabytes anzeigen, indem Sie Einheiten mit dem Flag -S
angeben:
Outputprocs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 96 120 242 0 0 0 1 9 3 0 0 100 0
Um einige allgemeine Statistiken zur Speicherauslastung zu erhalten, geben Sie ein:
Output 495 M total memory
398 M used memory
252 M active memory
119 M inactive memory
96 M free memory
120 M buffer memory
242 M swap cache
0 M total swap
0 M used swap
0 M free swap
. . .
Um Informationen über die Cache-Nutzung einzelner Systemprozesse zu erhalten, geben Sie ein:
OutputCache Num Total Size Pages
ext4_groupinfo_4k 195 195 104 39
UDPLITEv6 0 0 768 10
UDPv6 10 10 768 10
tw_sock_TCPv6 0 0 256 16
TCPv6 11 11 1408 11
kcopyd_job 0 0 2344 13
dm_uevent 0 0 2464 13
bsg_cmd 0 0 288 14
. . .
Dies gibt Ihnen Details darüber, welche Art von Informationen im Cache gespeichert sind.
Fazit
Mit diesen Tools sollten Sie beginnen können, Ihren Server von der Befehlszeile aus zu überwachen. Es gibt viele andere Überwachungsprogramme, die für verschiedene Zwecke verwendet werden, aber diese sind ein guter Ausgangspunkt.
Als nächstes könnten Sie sich mit der Linux-Prozessverwaltung mithilfe von ps, kill und nice vertraut machen.