Ich habe 25 Leistungsüberwachungs- und Debugging-Tools zusammengestellt, die hilfreich sein werden, wenn Sie in einer Linux-Umgebung arbeiten. Diese Liste ist in keiner Weise umfassend oder maßgeblich.
Diese Liste enthält jedoch genügend Tools, mit denen Sie herumspielen und dasjenige auswählen können, das für Ihr spezifisches Debugging- und Überwachungsszenario geeignet ist.
1. SAR
Mit dem Dienstprogramm sar können Sie zwei Dinge tun:1) Überwachen Sie die Echtzeitleistung des Systems (CPU, Speicher, E/A usw.) 2) Sammeln Sie fortlaufend Leistungsdaten im Hintergrund und führen Sie Analysen der zu identifizierenden historischen Daten durch Engpässe.
Sar ist Teil des sysstat-Pakets. Im Folgenden sind einige Dinge aufgeführt, die Sie mit dem Dienstprogramm sar tun können.
- Kollektive CPU-Nutzung
- Individuelle CPU-Statistiken
- Speicher belegt und verfügbar
- Auslagerungsspeicher belegt und verfügbar
- Gesamt-E/A-Aktivitäten des Systems
- E/A-Aktivitäten einzelner Geräte
- Kontextwechselstatistiken
- Warteschlange ausführen und Durchschnittsdaten laden
- Netzwerkstatistiken
- SAR-Daten von einem bestimmten Zeitpunkt melden
- und vieles mehr...
Der folgende sar-Befehl zeigt die System-CPU-Statistiken 3 Mal (mit 1-Sekunden-Intervall) an.
Der folgende Befehl „sar -b“ meldet E/A-Statistiken. „1 3“ gibt an, dass sar -b alle 1 Sekunde für insgesamt 3 Mal ausgeführt wird.
$ sar -b 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:56:28 PM tps rtps wtps bread/s bwrtn/s 01:56:29 PM 346.00 264.00 82.00 2208.00 768.00 01:56:30 PM 100.00 36.00 64.00 304.00 816.00 01:56:31 PM 282.83 32.32 250.51 258.59 2537.37 Average: 242.81 111.04 131.77 925.75 1369.90
Weitere SAR-Beispiele:So installieren/konfigurieren Sie Sar (sysstat) und 10 nützliche Beispiele für Sar-Befehle
2. Tcpdump
tcpdump ist ein Netzwerkpaketanalysator. Mit tcpdump können Sie die Pakete erfassen und auf Leistungsengpässe analysieren.
Das folgende tcpdump-Befehlsbeispiel zeigt erfasste Pakete in ASCII an.
$ tcpdump -A -i eth0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 14:34:50.913995 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 1457239478:1457239594(116) ack 1561461262 win 63652 E.....@.@..]..i...9...*.V...]...P....h....E...>{..U=...g. ......G..7\+KA....A...L. 14:34:51.423640 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 116:232(116) ack 1 win 63652 E.....@.@..\..i...9...*.V..*]...P....h....7......X..!....Im.S.g.u:*..O&....^#Ba... E..(R.@.|.....9...i.*...]...V..*P..OWp........
Mit tcpdump können Sie Pakete basierend auf mehreren benutzerdefinierten Bedingungen erfassen. Erfassen Sie beispielsweise Pakete, die durch einen bestimmten Port fließen, erfassen Sie die TCP-Kommunikation zwischen zwei bestimmten Hosts, erfassen Sie Pakete, die zu einem bestimmten Protokolltyp gehören usw.
Weitere tcpdump-Beispiele:15 Beispiele für TCPDUMP-Befehle
3. Nagios
Nagios ist eine Open-Source-Überwachungslösung, die so ziemlich alles in Ihrer IT-Infrastruktur überwachen kann. Wenn beispielsweise ein Server ausfällt, kann er eine Benachrichtigung an Ihr Sysadmin-Team senden, wenn eine Datenbank ausfällt, kann er Ihr DBA-Team ausrufen, wenn ein Webserver ausfällt, kann er das entsprechende Team benachrichtigen.
Sie können auch Warnungen und kritische Schwellenwerte für verschiedene Dienste festlegen, um das Problem proaktiv anzugehen. Beispielsweise kann es das Sysadmin-Team benachrichtigen, wenn eine Festplattenpartition zu 80 % voll ist, was dem Sysadmin-Team genügend Zeit gibt, mehr Speicherplatz hinzuzufügen, bevor das Problem kritisch wird.
Nagios hat auch eine sehr gute Benutzeroberfläche, von der aus Sie den Zustand Ihrer gesamten IT-Infrastruktur überwachen können.
Das Folgende sind einige der Dinge, die Sie mit Nagios überwachen können:
- Beliebige Hardware (Server, Switches, Router usw.)
- Linux-Server und Windows-Server
- Datenbanken (Oracle, MySQL, PostgreSQL usw.)
- Verschiedene Dienste, die auf Ihrem Betriebssystem ausgeführt werden (Sendmail, nis, nfs, ldap usw.)
- Webserver
- Ihre benutzerdefinierte Anwendung
- usw.
Weitere Nagios-Beispiele:So installieren und konfigurieren Sie Nagios, überwachen entfernte Windows-Rechner und überwachen entfernte Linux-Server.
4. Iostat
iostat meldet CPU-, Festplatten-E/A- und NFS-Statistiken. Im Folgenden finden Sie einige Beispiele für iostat-Befehle.
Iostat zeigt ohne Argumente Informationen über die CPU-Auslastung und E/A-Statistiken über alle Partitionen auf dem System an, wie unten gezeigt.
$ iostat Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 avg-cpu: %user %nice %system %iowait %steal %idle 5.68 0.00 0.52 2.03 0.00 91.76 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 194.72 1096.66 1598.70 2719068704 3963827344 sda1 178.20 773.45 1329.09 1917686794 3295354888 sda2 16.51 323.19 269.61 801326686 668472456 sdb 371.31 945.97 1073.33 2345452365 2661206408 sdb1 371.31 945.95 1073.33 2345396901 2661206408 sdc 408.03 207.05 972.42 513364213 2411023092 sdc1 408.03 207.03 972.42 513308749 2411023092
Standardmäßig zeigt iostat E/A-Daten für alle im System verfügbaren Festplatten an. Um Statistiken für ein bestimmtes Gerät anzuzeigen (z. B. /dev/sda), verwenden Sie die Option -p wie unten gezeigt.
$ iostat -p sda Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 avg-cpu: %user %nice %system %iowait %steal %idle 5.68 0.00 0.52 2.03 0.00 91.76 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 194.69 1096.51 1598.48 2719069928 3963829584 sda2 336.38 27.17 54.00 67365064 133905080 sda1 821.89 0.69 243.53 1720833 603892838
5. Mpstat
mpstat meldet Prozessorstatistiken. Im Folgenden finden Sie einige Beispiele für mpstat-Befehle.
Option -A zeigt alle Informationen an, die mit dem Befehl mpstat angezeigt werden können, wie unten gezeigt. Dies entspricht wirklich dem Befehl „mpstat -I ALL -u -P ALL“.
$ mpstat -A Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 _x86_64_ (4 CPU) 10:26:34 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 10:26:34 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.99 10:26:34 PM 0 0.01 0.00 0.01 0.01 0.00 0.00 0.00 0.00 99.98 10:26:34 PM 1 0.00 0.00 0.01 0.00 0.00 0.00 0.00 0.00 99.98 10:26:34 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 10:26:34 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 10:26:34 PM CPU intr/s 10:26:34 PM all 36.51 10:26:34 PM 0 0.00 10:26:34 PM 1 0.00 10:26:34 PM 2 0.04 10:26:34 PM 3 0.00 10:26:34 PM CPU 0/s 1/s 8/s 9/s 12/s 14/s 15/s 16/s 19/s 20/s 21/s 33/s NMI/s LOC/s SPU/s PMI/s PND/s RES/s CAL/s TLB/s TRM/s THR/s MCE/s MCP/s ERR/s MIS/s 10:26:34 PM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 7.47 0.00 0.00 0.00 0.00 0.02 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:26:34 PM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 4.90 0.00 0.00 0.00 0.00 0.03 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:26:34 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.04 0.00 0.00 0.00 0.00 0.00 3.32 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:26:34 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.
mpstat Option -P ALL, zeigt alle einzelnen CPUs (oder Kerne) zusammen mit ihren Statistiken wie unten gezeigt an.
$ mpstat -P ALL Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 _x86_64_ (4 CPU) 10:28:04 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 10:28:04 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.99 10:28:04 PM 0 0.01 0.00 0.01 0.01 0.00 0.00 0.00 0.00 99.98 10:28:04 PM 1 0.00 0.00 0.01 0.00 0.00 0.00 0.00 0.00 99.98 10:28:04 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 10:28:04 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
6. VMstat
vmstat meldet Statistiken zum virtuellen Speicher. Im Folgenden finden Sie einige vmstat-Befehlsbeispiele.
vmstat zeigt standardmäßig die Speichernutzung (einschließlich Swap) wie unten gezeigt an.
$ vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 305416 260688 29160 2356920 2 2 4 1 0 0 6 1 92 2 0 To execute vmstat every 2 seconds for 10 times, do the following. After executing 10 times, it will stop automatically. $ vmstat 2 10 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 537144 182736 6789320 0 0 0 0 1 1 0 0 100 0 0 0 0 0 537004 182736 6789320 0 0 0 0 50 32 0 0 100 0 0 ..
iostat und vmstat sind Teil des Dienstprogramms sar. Sie sollten das sysstat-Paket installieren, damit iostat und vmstat funktionieren.
Weitere Beispiele:24 iostat-, vmstat- und mpstat-Befehlsbeispiele
7. PS-Befehl
Ein Prozess ist eine laufende Instanz eines Programms. Linux ist ein Multitasking-Betriebssystem, was bedeutet, dass mehr als ein Prozess gleichzeitig aktiv sein kann. Verwenden Sie den Befehl ps, um herauszufinden, welche Prozesse auf Ihrem System ausgeführt werden.
ps-Befehl gibt Ihnen auch viele zusätzliche Informationen über den laufenden Prozess, die Ihnen helfen werden, Leistungsengpässe auf Ihrem System zu identifizieren.
Im Folgenden finden Sie einige Beispiele für ps-Befehle.
Verwenden Sie die Option -u, um den Prozess anzuzeigen, der zu einem bestimmten Benutzernamen gehört. Wenn Sie mehrere Benutzernamen haben, trennen Sie diese durch ein Komma. Das folgende Beispiel zeigt alle Prozesse, die dem Benutzer wwwrun oder postfix.
gehören$ ps -f -u wwwrun,postfix UID PID PPID C STIME TTY TIME CMD postfix 7457 7435 0 Mar09 ? 00:00:00 qmgr -l -t fifo -u wwwrun 7495 7491 0 Mar09 ? 00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf wwwrun 7496 7491 0 Mar09 ? 00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf wwwrun 7497 7491 0 Mar09 ? 00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf wwwrun 7498 7491 0 Mar09 ? 00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf wwwrun 7499 7491 0 Mar09 ? 00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf wwwrun 10078 7491 0 Mar09 ? 00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf wwwrun 10082 7491 0 Mar09 ? 00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf postfix 15677 7435 0 22:23 ? 00:00:00 pickup -l -t fifo -u
Das folgende Beispiel zeigt die Prozess-ID und Befehle in einer Hierarchie. –forest ist ein Argument für den Befehl ps, der die ASCII-Art des Prozessbaums anzeigt. Anhand dieses Baums können wir den Elternprozess und die Kindprozesse, die rekursiv geforkt wurden, identifizieren.
$ ps -e -o pid,args --forest 468 \_ sshd: root@pts/7 514 | \_ -bash 17484 \_ sshd: root@pts/11 17513 | \_ -bash 24004 | \_ vi ./790310__11117/journal 15513 \_ sshd: root@pts/1 15522 | \_ -bash 4280 \_ sshd: root@pts/5 4302 | \_ -bash
Weitere ps-Beispiele:7 praktische Beispiele für PS-Befehle zur Prozessüberwachung
8. Kostenlos
Der Befehl Free zeigt Informationen über den physischen (RAM) und Swap-Speicher Ihres Systems an.
Im folgenden Beispiel beträgt der physische Gesamtspeicher auf diesem System 1 GB. Die unten angezeigten Werte sind in KB angegeben.
# free total used free shared buffers cached Mem: 1034624 1006696 27928 0 174136 615892 -/+ buffers/cache: 216668 817956 Swap: 2031608 0 2031608
Das folgende Beispiel zeigt den Gesamtspeicher Ihres Systems einschließlich RAM und Swap.
Im folgenden Befehl:
- Option m zeigt die Werte in MB an
- Option t zeigt die „Gesamt“-Zeile an, die die Summe der physikalischen und Auslagerungsspeicherwerte ist
- Option o ist, die Buffer/Cache-Zeile aus dem obigen Beispiel auszublenden.
# free -mto total used free shared buffers cached Mem: 1010 983 27 0 170 601 Swap: 1983 0 1983 Total: 2994 983 2011
9. OBEN
Der oberste Befehl zeigt alle laufenden Prozesse im System an, die nach bestimmten Spalten geordnet sind. Dies zeigt die Informationen in Echtzeit an.
Sie können einen Prozess beenden, ohne ihn von oben zu verlassen. Sobald Sie einen Prozess gefunden haben, der beendet werden muss, drücken Sie „k“, um nach der Prozess-ID zu fragen und ein Signal zum Senden zu senden. Wenn Sie die Berechtigung haben, diese bestimmte PID zu beenden, wird sie erfolgreich beendet.
PID to kill: 1309 Kill PID 1309 with signal [15]: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1309 geek 23 0 2483m 1.7g 27m S 0 21.8 45:31.32 gagent 1882 geek 25 0 2485m 1.7g 26m S 0 21.7 22:38.97 gagent 5136 root 16 0 38040 14m 9836 S 0 0.2 0:00.39 nautilus
Verwenden Sie top -u, um einen bestimmten Benutzerprozess nur in der obersten Befehlsausgabe anzuzeigen.
$ top -u geek
Während der Unix-Befehl top ausgeführt wird, drücken Sie u, wodurch Sie nach dem Benutzernamen gefragt werden, wie unten gezeigt.
Which user (blank for all): geek PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1309 geek 23 0 2483m 1.7g 27m S 0 21.8 45:31.32 gagent 1882 geek 25 0 2485m 1.7g 26m S 0 21.7 22:38.97 gagent
Weitere Top-Beispiele:15 praktische Linux-Top-Befehlsbeispiele
10. Pmap
Der Befehl pmap zeigt die Speicherzuordnung eines bestimmten Prozesses an. Sie müssen die PID als Argument an den pmap-Befehl übergeben.
Das folgende Beispiel zeigt die Speicherzuordnung der aktuellen Bash-Shell. In diesem Beispiel ist 5732 die PID der Bash-Shell.
$ pmap 5732 5732: -bash 00393000 104K r-x-- /lib/ld-2.5.so 003b1000 1272K r-x-- /lib/libc-2.5.so 00520000 8K r-x-- /lib/libdl-2.5.so 0053f000 12K r-x-- /lib/libtermcap.so.2.0.8 0084d000 76K r-x-- /lib/libnsl-2.5.so 00c57000 32K r-x-- /lib/libnss_nis-2.5.so 00c8d000 36K r-x-- /lib/libnss_files-2.5.so b7d6c000 2048K r---- /usr/lib/locale/locale-archive bfd10000 84K rw--- [ stack ] total 4796K
pmap -x gibt einige zusätzliche Informationen über die Speicherzuordnungen.
$ pmap -x 5732 5732: -bash Address Kbytes RSS Anon Locked Mode Mapping 00393000 104 - - - r-x-- ld-2.5.so 003b1000 1272 - - - r-x-- libc-2.5.so 00520000 8 - - - r-x-- libdl-2.5.so 0053f000 12 - - - r-x-- libtermcap.so.2.0.8 0084d000 76 - - - r-x-- libnsl-2.5.so 00c57000 32 - - - r-x-- libnss_nis-2.5.so 00c8d000 36 - - - r-x-- libnss_files-2.5.so b7d6c000 2048 - - - r---- locale-archive bfd10000 84 - - - rw--- [ stack ] -------- ------- ------- ------- ------- total kB 4796 - - -
Um die Geräteinformationen der Prozessabbildungen anzuzeigen, verwenden Sie „pamp -d pid“.
11. Netstat
Der Befehl Netstat zeigt verschiedene netzwerkbezogene Informationen wie Netzwerkverbindungen, Routing-Tabellen, Schnittstellenstatistiken, Masquerade-Verbindungen, Multicast-Mitgliedschaften usw. an,
Im Folgenden finden Sie einige Beispiele für netstat-Befehle.
Listen Sie alle Ports (sowohl lauschende als auch nicht lauschende) mit netstat -a auf, wie unten gezeigt.
# netstat -a | more Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:30037 *:* LISTEN udp 0 0 *:bootpc *:* Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 6135 /tmp/.X11-unix/X0 unix 2 [ ACC ] STREAM LISTENING 5140 /var/run/acpid.socket
Verwenden Sie den folgenden netstat-Befehl, um herauszufinden, auf welchem Port ein Programm läuft.
# netstat -ap | grep ssh (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 1 0 dev-db:ssh 101.174.100.22:39213 CLOSE_WAIT - tcp 1 0 dev-db:ssh 101.174.100.22:57643 CLOSE_WAIT -
Verwenden Sie den folgenden netstat-Befehl, um herauszufinden, welcher Prozess einen bestimmten Port verwendet.
# netstat -an | grep ':80'
Weitere Netstat-Beispiele:10 Beispiele für Netstat-Befehle
12. IPTraf
IPTraf ist eine IP-Netzwerküberwachungssoftware. Im Folgenden sind einige der Hauptfunktionen von IPTraf aufgeführt:
- Es ist ein konsolenbasiertes (textbasiertes) Dienstprogramm.
- Hier wird IP-Verkehr angezeigt, der Ihr Netzwerk durchquert. Dies zeigt TCP-Flag, Paket- und Byte-Anzahl, ICMP, OSPF-Pakettypen usw.
- Zeigt erweiterte Schnittstellenstatistiken an (einschließlich IP, TCP, UDP, ICMP, Paketgröße und -anzahl, Prüfsummenfehler usw.)
- LAN-Modul erkennt Hosts automatisch und zeigt deren Aktivitäten an
- Protokollanzeigefilter zum Anzeigen von selektivem Protokolldatenverkehr
- Erweiterte Protokollierungsfunktionen
- Neben der Ethernet-Schnittstelle unterstützt es auch FDDI, ISDN, SLIP, PPP und Loopback
- Sie können das Dienstprogramm auch im Vollbildmodus ausführen. Dies hat auch ein textbasiertes Menü.
Weitere Informationen: IPTraf-Startseite. IPTraf-Screenshot.
13. Spur
Strace wird zum Debuggen und Beheben von Fehlern bei der Ausführung einer ausführbaren Datei in einer Linux-Umgebung verwendet. Es zeigt die vom Prozess verwendeten Systemaufrufe und die vom Prozess empfangenen Signale an.
Strace überwacht die Systemaufrufe und Signale eines bestimmten Programms. Es ist hilfreich, wenn Sie den Quellcode nicht haben und die Ausführung eines Programms debuggen möchten. strace liefert Ihnen die Ausführungsreihenfolge einer Binärdatei von Anfang bis Ende.
Verfolgen Sie einen bestimmten Systemaufruf in einer ausführbaren Datei mit der Option -e
Standardmäßig zeigt strace alle Systemaufrufe für die angegebene ausführbare Datei an. Das folgende Beispiel zeigt die Ausgabe von strace für den Linux-Befehl ls.
$ strace ls execve("/bin/ls", ["ls"], [/* 21 vars */]) = 0 brk(0) = 0x8c31000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap2(NULL, 8192, PROT_READ, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78c7000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=65354, ...}) = 0
Um nur einen bestimmten Systemaufruf anzuzeigen, verwenden Sie die Option strace -e wie unten gezeigt.
$ strace -e open ls open("/etc/ld.so.cache", O_RDONLY) = 3 open("/lib/libselinux.so.1", O_RDONLY) = 3 open("/lib/librt.so.1", O_RDONLY) = 3 open("/lib/libacl.so.1", O_RDONLY) = 3 open("/lib/libc.so.6", O_RDONLY) = 3 open("/lib/libdl.so.2", O_RDONLY) = 3 open("/lib/libpthread.so.0", O_RDONLY) = 3 open("/lib/libattr.so.1", O_RDONLY) = 3 open("/proc/filesystems", O_RDONLY|O_LARGEFILE) = 3 open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3 open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
Weitere Strace-Beispiele:7 Strace-Beispiele zum Debuggen der Ausführung eines Programms unter Linux
14. Lsof
Lsof steht für ls open files, was alle offenen Dateien im System auflistet. Zu den geöffneten Dateien gehören Netzwerkverbindung, Geräte und Verzeichnisse. Die Ausgabe des lsof-Befehls hat die folgenden Spalten:
- COMMAND-Prozessname.
- PID-Prozess-ID
- USER Benutzername
- FD-Dateideskriptor
- TYPE Knotentyp der Datei
- DEVICE Gerätenummer
- SIZE Dateigröße
- NODE-Knotennummer
- NAME vollständiger Pfad des Dateinamens.
Um alle geöffneten Dateien des Systems anzuzeigen, führen Sie den Befehl lsof ohne Parameter aus, wie unten gezeigt.
# lsof | more COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME init 1 root cwd DIR 8,1 4096 2 / init 1 root rtd DIR 8,1 4096 2 / init 1 root txt REG 8,1 32684 983101 /sbin/init init 1 root mem REG 8,1 106397 166798 /lib/ld-2.3.4.so init 1 root mem REG 8,1 1454802 166799 /lib/tls/libc-2.3.4.so init 1 root mem REG 8,1 53736 163964 /lib/libsepol.so.1 init 1 root mem REG 8,1 56328 166811 /lib/libselinux.so.1 init 1 root 10u FIFO 0,13 972 /dev/initctl migration 2 root cwd DIR 8,1 4096 2 / skipped..
Um geöffnete Dateien eines bestimmten Benutzers anzuzeigen, verwenden Sie die Option lsof -u, um alle Dateien anzuzeigen, die von einem bestimmten Benutzer geöffnet wurden.
# lsof -u ramesh vi 7190 ramesh txt REG 8,1 474608 475196 /bin/vi sshd 7163 ramesh 3u IPv6 15088263 TCP dev-db:ssh->abc-12-12-12-12.
Um Benutzer einer bestimmten Datei aufzulisten, verwenden Sie lsof wie unten gezeigt. In diesem Beispiel werden alle Benutzer angezeigt, die derzeit vi verwenden.
# lsof /bin/vi COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME vi 7258 root txt REG 8,1 474608 475196 /bin/vi vi 7300 ramesh txt REG 8,1 474608 475196 /bin/vi
15. Ntop
Ntop ist genau wie top, aber für Netzwerkverkehr. ntop ist ein Netzwerkverkehrsmonitor, der die Netzwerknutzung anzeigt.
Sie können auch über den Browser auf ntop zugreifen, um Verkehrsinformationen und den Netzwerkstatus abzurufen.
Im Folgenden sind einige der Hauptfunktionen von ntop aufgeführt:
- Zeigen Sie den Netzwerkverkehr aufgeschlüsselt nach Protokollen an
- Sortieren Sie die Ausgabe des Netzwerkverkehrs nach mehreren Kriterien
- Netzwerkverkehrsstatistiken anzeigen
- Fähigkeit, die Netzwerkverkehrsstatistiken mit RRD zu speichern
- Identifizieren Sie die Identität der Benutzer und des Host-Betriebssystems
- Fähigkeit zur Analyse und Anzeige des IT-Verkehrs
- Fähigkeit, als NetFlow/sFlow-Sammler für Router und Switches zu arbeiten
- Zeigt ähnlich wie RMON Netzwerkverkehrsstatistiken an
- Funktioniert unter Linux, MacOS und Windows
Weitere Informationen:Ntop-Homepage
16. GkrellM
GKrellM steht für GNU Krell Monitors oder GTK Krell Meters. Es ist ein auf dem GTK+-Toolkit basierendes Überwachungsprogramm, das verschiedene Systemressourcen überwacht. Die Benutzeroberfläche ist stapelbar. d.h. Sie können beliebig viele Überwachungsobjekte übereinander legen. Genau wie alle anderen Desktop-UI-basierten Überwachungstools kann es CPU, Speicher, Dateisystem, Netzwerknutzung usw. überwachen. Aber mit Plugins können Sie externe Anwendungen überwachen.
Weitere Informationen:GkrellM-Homepage
17. w und Betriebszeit
Während die Systemleistung überwacht wird, hilft der w-Befehl zu wissen, wer beim System angemeldet ist.
$ w 09:35:06 up 21 days, 23:28, 2 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 :0 24Oct11 21days 1:05 1:05 /usr/bin/Xorg :0 -nr -verbose ramesh pts/0 192.168.1.10 Mon14 0.00s 15.55s 0.26s sshd: localuser [priv] john pts/0 192.168.1.11 Mon07 0.00s 19.05s 0.20s sshd: localuser [priv] jason pts/0 192.168.1.12 Mon07 0.00s 21.15s 0.16s sshd: localuser [priv]
Für jeden angemeldeten Benutzer werden die folgenden Informationen angezeigt:
- Benutzername
- tty-Info
- Remote-Host-IP-Adresse
- Anmeldezeit des Benutzers
- Wie lange der Benutzer inaktiv war
- JCPU und PCUP
- Der Befehl des aktuellen Prozesses, den der Benutzer ausführt
Zeile 1 der w-Befehlsausgabe ähnelt der uptime-Befehlsausgabe. Es zeigt Folgendes an:
- Aktuelle Uhrzeit
- Wie lange das System in Betrieb ist
- Gesamtzahl der Benutzer, die derzeit beim System angemeldet sind
- Lastdurchschnitt der letzten 1, 5 und 15 Minuten
Wenn Sie nur die Verfügbarkeitsinformationen wünschen, verwenden Sie den Befehl uptime.
$ uptime 09:35:02 up 106 days, 28 min, 2 users, load average: 0.08, 0.11, 0.05
Bitte beachten Sie, dass sowohl der w- als auch der uptime-Befehl die Informationen aus der /var/run/utmp-Datendatei beziehen.
18. /proc
/proc ist ein virtuelles Dateisystem. Wenn Sie beispielsweise ls -l /proc/stat ausführen, werden Sie feststellen, dass es eine Größe von 0 Bytes hat, aber wenn Sie „cat /proc/stat“ ausführen, sehen Sie einige Inhalte in der Datei.
Führen Sie ein ls -l /proc aus, und Sie werden viele Verzeichnisse mit nur Zahlen sehen. Diese Nummern stellen die Prozess-IDs dar, die Dateien in diesem nummerierten Verzeichnis entsprechen dem Prozess mit dieser bestimmten PID.
Die folgenden wichtigen Dateien befinden sich unter jedem nummerierten Verzeichnis (für jeden Prozess):
- cmdline – Befehlszeile des Befehls.
- environ – Umgebungsvariablen.
- fd – Enthält die Dateideskriptoren, die mit den entsprechenden Dateien verknüpft sind.
- limits – Enthält Informationen zu den spezifischen Limits des Prozesses.
- mounts – Mount-bezogene Informationen
Das Folgende sind die wichtigen Links unter jedem nummerierten Verzeichnis (für jeden Prozess):
- cwd – Link zum aktuellen Arbeitsverzeichnis des Prozesses.
- exe – Link zur ausführbaren Datei des Prozesses.
- root – Link zum Stammverzeichnis des Prozesses.
Weitere /proc-Beispiele:Untersuchen Sie das /proc-Dateisystem von Linux
19. KDE-Systemwächter
Dies wird auch als KSysGuard bezeichnet. Auf Linux-Desktops, auf denen KDE ausgeführt wird, können Sie dieses Tool verwenden, um Systemressourcen zu überwachen. Neben der Überwachung des lokalen Systems kann dies auch entfernte Systeme überwachen.
Wenn Sie den KDE-Desktop ausführen, gehen Sie zu Anwendungen -> System -> Systemmonitor, wodurch KSysGuard gestartet wird. Sie können auch ksysguard in der Befehlszeile eingeben, um es zu starten.
Dieses Tool zeigt die folgenden zwei Registerkarten an:
- Prozesstabelle – Zeigt alle aktiven Prozesse an. Sie können von hier aus die Priorität der Prozesse sortieren, beenden oder ändern
- Systemlast – Zeigt Diagramme für CPU-, Speicher- und Netzwerknutzung an. Diese Diagramme können angepasst werden, indem Sie mit der rechten Maustaste auf eines dieser Diagramme klicken.
Um eine Verbindung zu einem Remote-Host herzustellen und ihn zu überwachen, klicken Sie auf das Menü Datei -> Remote-Computer überwachen -> geben Sie die IP-Adresse des Hosts und die Verbindungsmethode (z. B. ssh) an. Dadurch werden Sie nach dem Benutzernamen/Passwort auf dem Remote-Computer gefragt. Sobald die Verbindung hergestellt ist, wird die Systemnutzung des Remote-Computers in den Registerkarten „Prozesstabelle“ und „Systemlast“ angezeigt.
20. GNOME-Systemmonitor
Auf Linux-Desktops, auf denen GNOME ausgeführt wird, können Sie dieses Tool verwenden, um Prozesse, Systemressourcen und Dateisysteme über eine grafische Oberfläche zu überwachen. Abgesehen von der Überwachung können Sie dieses UI-Tool auch verwenden, um einen Prozess zu beenden oder die Priorität eines Prozesses zu ändern.
Wenn Sie den GNOME-Desktop ausführen, gehen Sie zu System -> Verwaltung -> Systemmonitor, wodurch der GNOME-Systemmonitor gestartet wird. Sie können auch gnome-system-monitor in der Befehlszeile eingeben, um es zu starten.
Dieses Tool hat die folgenden vier Registerkarten:
- System – Zeigt die Systeminformationen an, einschließlich Linux-Distributionsversion, Systemressourcen und Hardwareinformationen.
- Prozesse – Zeigt alle aktiven Prozesse an, die nach verschiedenen Feldern sortiert werden können
- Ressourcen – Zeigt CPU-, Speicher- und Netzwerknutzung an
- Dateisysteme – Zeigt Informationen über aktuell gemountete Dateisysteme an
Weitere Informationen:Homepage von GNOME System Monitor
21. Conky
Conky ist ein Systemmonitor oder X. Conky zeigt Informationen in der Benutzeroberfläche mithilfe von Objekten an. Standardmäßig gibt es mehr als 250 Objekte, die mit conky gebündelt sind, das verschiedene Überwachungsinformationen (CPU, Speicher, Netzwerk, Festplatte usw.) anzeigt. Es unterstützt IMAP, POP3, mehrere Audioplayer.
Sie können jede externe Anwendung überwachen und anzeigen, indem Sie Ihre eigenen Objekte mithilfe von Skripten erstellen. Die Überwachungsinformationen können in verschiedenen Formaten angezeigt werden:Text, Grafiken, Fortschrittsbalken usw. Dieses Dienstprogramm ist extrem konfigurierbar.
Weitere Informationen:Conky-Screenshots
22. Kakteen
Cacti ist ein PHP-basiertes UI-Frontend für das RRDTool. Cacti speichert die zum Generieren des Diagramms erforderlichen Daten in einer MySQL-Datenbank.
Im Folgenden sind einige High-Level-Features von Cacti aufgeführt:
- Fähigkeit, die Datenerfassung durchzuführen und sie in einer MySQL-Datenbank (oder Round-Robin-Archiven) zu speichern
- Mehrere erweiterte Grafikfunktionen sind verfügbar (Gruppierung von GPRINT-Grafikelementen, automatisches Auffüllen von Grafiken, Bearbeiten von Grafikdaten mit CDEF-Mathematikfunktion, alle RRDTool-Grafikelemente werden unterstützt)
- Die Datenquelle kann lokale oder entfernte Daten für das Diagramm sammeln
- Möglichkeit, die Einstellungen für Round-Robin-Archive (RRA) vollständig anzupassen
- Benutzer können benutzerdefinierte Skripte zum Sammeln von Daten definieren
- SNMP-Unterstützung (php-snmp, ucd-snmp oder net-snmp) für die Datenerfassung
- Integrierter Poller hilft beim Ausführen benutzerdefinierter Skripte, Abrufen von SNMP-Daten, Aktualisieren von RRD-Dateien usw.
- Hochflexible Funktionen für Diagrammvorlagen
- Benutzerfreundliche und anpassbare Anzeigeoptionen für Diagramme
- Erstellen Sie verschiedene Benutzer mit verschiedenen Berechtigungssätzen, um auf das Cacti-Frontend zuzugreifen
- Granulare Berechtigungsstufen können für den einzelnen Benutzer festgelegt werden
- und vieles mehr...
Weitere Informationen:Kakteen-Homepage
23. Vnstat
vnstat ist ein Befehlszeilendienstprogramm, das den Netzwerkverkehr der Schnittstellen auf Ihren Systemen anzeigt und protokolliert. Dies hängt von den vom Kernel bereitgestellten Netzwerkstatistiken ab. vnstat fügt Ihrem System also keine zusätzliche Last für die Überwachung und Protokollierung des Netzwerkverkehrs hinzu.
vnstat ohne Argumente gibt Ihnen eine kurze Zusammenfassung mit den folgenden Informationen:
- Das letzte Mal, als die unter /var/lib/vnstat/ befindliche vnStat-Datenbank aktualisiert wurde
- Seit Beginn der Erfassung der Statistiken für eine bestimmte Schnittstelle
- Die Netzwerkstatistikdaten (übertragene Bytes, empfangene Bytes) für die letzten zwei Monate und die letzten zwei Tage.
# vnstat Database updated: Sat Oct 15 11:54:00 2011 eth0 since 10/01/11 rx: 12.89 MiB tx: 6.94 MiB total: 19.82 MiB monthly rx | tx | total | avg. rate ------------------------+-------------+-------------+--------------- Sep '11 12.90 MiB | 6.90 MiB | 19.81 MiB | 0.14 kbit/s Oct '11 12.89 MiB | 6.94 MiB | 19.82 MiB | 0.15 kbit/s ------------------------+-------------+-------------+--------------- estimated 29 MiB | 14 MiB | 43 MiB | daily rx | tx | total | avg. rate ------------------------+-------------+-------------+--------------- yesterday 4.30 MiB | 2.42 MiB | 6.72 MiB | 0.64 kbit/s today 2.03 MiB | 1.07 MiB | 3.10 MiB | 0.59 kbit/s ------------------------+-------------+-------------+--------------- estimated 4 MiB | 2 MiB | 6 MiB |
Verwenden Sie „vnstat -t“ oder „vnstat –top10“, um die Top-10-Traffic-Tage aller Zeiten anzuzeigen.
$ vnstat --top10 eth0 / top 10 # day rx | tx | total | avg. rate -----------------------------+-------------+-------------+--------------- 1 10/12/11 4.30 MiB | 2.42 MiB | 6.72 MiB | 0.64 kbit/s 2 10/11/11 4.07 MiB | 2.17 MiB | 6.24 MiB | 0.59 kbit/s 3 10/10/11 2.48 MiB | 1.28 MiB | 3.76 MiB | 0.36 kbit/s .... -----------------------------+-------------+-------------+---------------
Weitere vnstat-Beispiele:Wie man den Netzwerkverkehr mit VNStat überwacht und protokolliert
24. Htop
htop ist ein ncurses-basierter Prozessbetrachter. Dies ist ähnlich wie oben, aber flexibler und benutzerfreundlicher. Sie können mit der Maus mit dem htop interagieren. Sie können vertikal scrollen, um die vollständige Prozessliste anzuzeigen, und horizontal scrollen, um die vollständige Befehlszeile des Prozesses anzuzeigen.
Die htop-Ausgabe besteht aus drei Abschnitten:1) Kopfzeile, 2) Hauptteil und 3) Fußzeile.
Kopfzeile zeigt die folgenden drei Balken und einige wichtige Systeminformationen an. Sie können diese im Setup-Menü von htop ändern.
- CPU-Auslastung:Zeigt die %used im Text am Ende des Balkens an. Der Balken selbst zeigt verschiedene Farben. Niedrige Priorität in Blau, Normal in Grün, Kernel in Rot.
- Speichernutzung
- Swap-Nutzung
Körper zeigt die Liste der Prozesse sortiert nach %CPU-Auslastung an. Verwenden Sie die Pfeiltasten, die Bild-auf- und Bild-ab-Taste, um durch die Prozesse zu blättern.
Fußzeile Zeigt htop-Menübefehle an.
Weitere Informationen:HTOP Screenshot und Beispiele
25. Socket-Statistik – SS
ss steht für Socket-Statistiken. Dies zeigt Informationen an, die dem netstat-Befehl ähneln.
Um alle Listening-Sockets anzuzeigen, führen Sie ss -l wie unten gezeigt aus.
$ ss -l Recv-Q Send-Q Local Address:Port Peer Address:Port 0 100 :::8009 :::* 0 128 :::sunrpc :::* 0 100 :::webcache :::* 0 128 :::ssh :::* 0 64 :::nrpe :::*
Im Folgenden wird nur die hergestellte Verbindung angezeigt.
$ ss -o state established Recv-Q Send-Q Local Address:Port Peer Address:Port 0 52 192.168.1.10:ssh 192.168.2.11:55969 timer:(on,414ms,0)
Im Folgenden werden zusammenfassende Socket-Statistiken angezeigt. Hier wird die Gesamtzahl der Sockets aufgeschlüsselt nach Typ angezeigt.
$ ss -s Total: 688 (kernel 721) TCP: 16 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 11 Transport Total IP IPv6 * 721 - - RAW 0 0 0 UDP 13 10 3 TCP 16 7 9 INET 29 17 12 FRAG 0 0 0
Welches Tool verwenden Sie, um die Leistung Ihrer Linux-Umgebung zu überwachen? Habe ich eines Ihrer bevorzugten Tools zur Leistungsüberwachung verpasst? Hinterlasse einen Kommentar.