pidstat steht für PID-Statistik.
Dieses Tool kann einen einzelnen Prozess überwachen, der vom Kernel verwaltet wird, und einen Bericht erstellen. Es kann entweder eine bestimmte PID (Prozess-ID) oder alle auf dem System laufenden Prozesse überwachen.
pidstat ist ein Teil des Dienstprogramms sysstat.
Dieses Tool meldet verschiedene Statistiken, einschließlich CPU-Nutzung durch einen Prozess, Festplattennutzungsstatistiken eines Prozesses, Statistiken für Threads, die mit ausgewählten Aufgaben und untergeordneten Prozessen verbunden sind.
Sie sollten das systat-Paket installieren, um diesen Befehl zu verwenden.
yum install sysstat
1. Statistiken für ALLE laufenden Prozesse (oder einen bestimmten Prozess) anzeigen
Verwenden Sie die Option -p ALL, um Leistungsstatistiken aller laufenden Prozesse anzuzeigen, wie unten gezeigt.
Standardmäßig wird die CPU-Auslastung angezeigt. Sie können dies jedoch in andere Leistungsstatistiken ändern, wie in späteren Beispielen gezeigt.
# pidstat -p ALL | wc -l 165 # pidstat -p ALL | head Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 05:00:03 PID %usr %system %guest %CPU CPU Command 05:00:03 1 0.00 0.00 0.00 0.00 0 init 05:00:03 2 0.00 0.00 0.00 0.00 0 kthreadd 05:00:03 3 0.00 0.00 0.00 0.00 0 ksoftirqd/0 05:00:03 6 0.00 0.00 0.00 0.00 0 migration/0 05:00:03 7 0.00 0.00 0.00 0.00 0 watchdog/0 05:00:03 8 0.00 0.00 0.00 0.00 0 cpuset 05:00:03 9 0.00 0.00 0.00 0.00 0 khelper
Verwenden Sie -p PID, um Leistungsstatistiken für einen bestimmten Prozess wie unten gezeigt zu überwachen.
# pidstat -p 13203 Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 05:04:29 PID %usr %system %guest %CPU CPU Command 05:04:29 13203 0.00 0.00 0.00 0.00 0 vim
Wenn Sie neu im Systat-Paket sind, sollten Sie auch die vom Befehl sar bereitgestellten Leistungsstatistikdaten verstehen.
2. Zeigen Sie Leistungsstatistiken basierend auf dem Prozessnamen mit -C
anDas folgende Beispiel zeigt Leistungsstatistiken für alle Prozesse, die mit einem bestimmten Schlüsselwort übereinstimmen (zum Beispiel:mysql).
# pidstat -C "mysql" Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 06:33:14 PID %usr %system %guest %CPU CPU Command 06:33:14 23132 0.00 0.00 0.00 0.00 0 mysqld_safe 06:33:14 23493 0.06 0.02 0.00 0.08 0 mysqld
Hinweis:Im obigen Beispiel steht die Option -C für „Command Name“. d.h. Es wird der Befehlsname des Prozesses mit dem angegebenen Schlüsselwort gesucht.
3. Wiederholen Sie die Ausgabe in einem bestimmten Intervall
Standardmäßig wird die Ausgabe nicht wiederholt. Beispielsweise zeigt die Option -u die CPU-Auslastungsstatistiken von Aufgaben an, und dies ist die Standardstatistik, die vom Befehl pidstat angegeben wird. Dadurch wird die Ausgabe nur einmal angezeigt.
# pidstat -p 23493 Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 06:52:35 PID %usr %system %guest %CPU CPU Command 06:52:36 23493 1.00 0.00 0.00 1.00 0 mysqld
Um die Ausgabe zu wiederholen, geben Sie als letzten Parameter das Intervall in Sekunden an. Im folgenden Beispiel wird die Ausgabe beispielsweise alle 1 Sekunde wiederholt (bis Sie Strg-C drücken).
# pidstat -p 23493 1 Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 06:52:35 PID %usr %system %guest %CPU CPU Command 06:52:36 23493 1.00 0.00 0.00 1.00 0 mysqld 06:52:37 23493 0.00 0.00 0.00 0.00 0 mysqld 06:52:38 23493 0.00 0.00 0.00 0.00 0 mysqld 06:52:39 23493 0.00 0.00 0.00 0.00 0 mysqld 06:52:40 23493 0.00 0.00 0.00 0.00 0 mysqld 06:52:41 23493 0.00 0.00 0.00 0.00 0 mysqld ..
Im Folgenden wird die Ausgabe alle 5 Sekunden wiederholt (bis Sie Strg-C drücken).
# pidstat -p 23493 5
4. Zeigen Sie E/A-Statistiken für einen bestimmten Prozess mit -d
anVerwenden Sie die Option -d, um E/A-Statistiken des Prozesses zu melden. Die Ausgabe zeigt verschiedene Attribute wie PID, Lese- und Schreibgeschwindigkeit der Festplatte in kB/s an, wie unten gezeigt.
Das folgende Beispiel zeigt die Festplattennutzung für PID 23493 alle 1 Sekunde an.
# pidstat -p 23493 -d 1 Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 06:48:33 PID kB_rd/s kB_wr/s kB_ccwr/s Command 06:48:34 23493 0.00 0.00 0.00 mysqld 06:48:35 23493 0.00 0.00 0.00 mysqld 06:48:36 23493 0.00 0.00 0.00 mysqld 06:48:37 23493 0.00 0.00 0.00 mysqld 06:48:38 23493 0.00 0.00 0.00 mysqld 06:48:39 23493 0.00 0.00 0.00 mysqld 06:48:40 23493 0.00 0.00 0.00 mysqld 06:48:41 23493 0.00 0.00 0.00 mysqld
5. Zeigen Sie die Paging-Aktivität für einen bestimmten Prozess mit -r
anVerwenden Sie die Option -r, um Seitenfehler und Speicherauslastung für eine bestimmte Aufgabe (PID) anzuzeigen.
# pidstat -p 23493 -r 1 Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 06:58:48 PID minflt/s majflt/s VSZ RSS %MEM Command 06:58:49 23493 0.00 0.00 398876 33468 3.28 mysqld 06:58:50 23493 0.00 0.00 398876 33468 3.28 mysqld 06:58:51 23493 0.00 0.00 398876 33468 3.28 mysqld 06:58:52 23493 0.00 0.00 398876 33468 3.28 mysqld 06:58:53 23493 0.00 0.00 398876 33468 3.28 mysqld 06:58:54 23493 0.00 0.00 398876 33468 3.28 mysqld 06:58:55 23493 0.00 0.00 398876 33468 3.28 mysqld
6. Zeigen Sie den Befehlsnamen und seine Argumente mit der Option -l
anStandardmäßig zeigt pidstat nur den Befehlsnamen an. d.h. Ohne den vollständigen Pfad des Befehls und seines Arguments. Beispielsweise sehen Sie in der Befehlsspalte nur „java“ (was nur der Name des Programms ist).
$ pidstat -C java Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 11:00:25 PID %usr %system %guest %CPU CPU Command 11:00:25 3288 0.04 0.03 0.00 0.07 0 java 11:00:25 17861 0.03 0.02 0.00 0.05 6 java
Wenn Sie jedoch die Option -l verwenden, wird der vollständige Pfad des Befehls und alle seine Argumente wie unten gezeigt angezeigt.
$ pidstat -C java -l Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 11:00:31 PID %usr %system %guest %CPU CPU Command 11:00:31 3288 0.04 0.03 0.00 0.07 0 /usr/bin/java -Djava.util.logging.config.file=/home/tomcat/apache-tomcat-7.0.56/conf/logging.properties 11:00:31 17861 0.03 0.02 0.00 0.05 6 java -jar /home/rabbit/myapp.jar /home/app/conf/myapp.conf
Um die Statistiken in regelmäßigen Abständen für Aufgaben zu erhalten, übergeben Sie einfach die Anzahl der Sekunden, in denen Sie die Statistiken sehen möchten,
# pidstat -p 23493 1 Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 06:25:50 PID %usr %system %guest %CPU CPU Command 06:25:51 23493 0.00 0.00 0.00 0.00 0 mysqld 06:25:52 23493 0.00 0.00 0.00 0.00 0 mysqld
Wie oben gesehen, beobachten Sie die Statistiken des mysqld-Prozesses alle 1 Sekunde.
Sie können auch einige Prozess-IDs aus der Ausgabe des oberen Befehls abrufen und hier ansehen, um die Nutzung der Systemressourcen in regelmäßigen Abständen zu verstehen.
7. Anzeige der Ausgabe in regelmäßigen Abständen für X Mal
Es ist auch möglich, Berichte für eine bestimmte Anzahl von Malen in bestimmten Intervallen für die Liste der Prozesse zu erhalten, wie unten gezeigt.
Fügen Sie die Anzahl als letzten Parameter hinzu (nach den Intervallen in Sekunden).
Im Folgenden wird beispielsweise die Ausgabe 5 Mal angezeigt (in einem regelmäßigen Intervall von 2 Sekunden). Am Ende des Berichts werden auch die „Durchschnittswerte“ angezeigt.
# pidstat 2 5 Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 07:14:11 PID %usr %system %guest %CPU CPU Command 07:14:13 1445 0.00 0.50 0.00 0.50 0 pidstat 07:14:13 28222 0.50 0.00 0.00 0.50 0 cma 07:14:13 PID %usr %system %guest %CPU CPU Command 07:14:15 1445 0.00 0.50 0.00 0.50 0 pidstat 07:14:15 28222 0.00 0.50 0.00 0.50 0 cma 07:14:15 PID %usr %system %guest %CPU CPU Command 07:14:17 1445 0.50 0.00 0.00 0.50 0 pidstat 07:14:17 19614 0.00 0.50 0.00 0.50 0 nailswebd 07:14:17 PID %usr %system %guest %CPU CPU Command 07:14:19 1445 0.50 0.50 0.00 1.00 0 pidstat 07:14:19 PID %usr %system %guest %CPU CPU Command 07:14:21 1445 0.00 0.51 0.00 0.51 0 pidstat 07:14:21 28222 0.00 0.51 0.00 0.51 0 cma Average: PID %usr %system %guest %CPU CPU Command Average: 1445 0.20 0.40 0.00 0.60 - pidstat Average: 19614 0.00 0.10 0.00 0.10 - nailswebd Average: 28222 0.10 0.20 0.00 0.30 - cma
8. Zeigen Sie Statistiken des ausgewählten Prozesses und seines untergeordneten Prozesses mit -T
anVerwenden Sie die Option -T, um entweder CHILD oder TASKS anzugeben. In diesem Fall werden die Statistiken für TASKS oder Tasks und alle ihre Kinder ausgegeben. Sie können auch ALLE angeben.
Mögliche Werte für -T:CHILD oder TASKS oder ALL.
# pidstat -T CHILD | head Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 10:13:34 IST PID usr-ms system-ms guest-ms Command 10:13:34 IST 1 7950 3340 0 init 10:13:34 IST 3 0 420 0 ksoftirqd/0 10:13:34 IST 8 0 10 0 migration/0 10:13:34 IST 10 0 1190 0 rcu_sched 10:13:34 IST 11 10 0 0 watchdog/0 10:13:34 IST 12 10 0 0 watchdog/1 10:13:34 IST 13 0 450 0 ksoftirqd/1
9. Zeigen Sie Statistiken abhängiger Prozesse im Baumformat mit -t
anMit der Option -t können Sie die Ausgabe wie unten gezeigt in einem Baumformat anzeigen.
# pidstat -t -C "mysql" Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ 18:47:54 PID TID %usr %system %guest %CPU CPU Command 18:47:54 1646 - 0.00 0.00 0.00 0.00 0 mysql 18:47:54 - 1646 0.00 0.00 0.00 0.00 0 |__mysql 18:47:54 23132 - 0.00 0.00 0.00 0.00 0 mysqld_safe 18:47:54 - 23132 0.00 0.00 0.00 0.00 0 |__mysqld_safe 18:47:54 23493 - 0.06 0.02 0.00 0.08 0 mysqld 18:47:54 - 23493 0.00 0.00 0.00 0.00 0 |__mysqld 18:47:54 - 23504 0.00 0.00 0.00 0.00 0 |__mysqld 18:47:54 - 23509 0.00 0.00 0.00 0.00 0 |__mysqld 18:47:54 - 23510 0.00 0.00 0.00 0.00 0 |__mysqld 18:47:54 - 23512 0.00 0.00 0.00 0.00 0 |__mysqld 18:47:54 - 23515 0.00 0.00 0.00 0.00 0 |__mysqld 18:47:54 - 23516 0.01 0.00 0.00 0.02 0 |__mysqld 18:47:54 - 23517 0.00 0.00 0.00 0.00 0 |__mysqld 18:47:54 - 23518 0.01 0.01 0.00 0.02 0 |__mysqld 18:47:54 - 23519 0.00 0.00 0.00 0.00 0 |__mysqld ..
10. Zeigen Sie alle Statistiken horizontal in einer einzelnen Zeile mit -h
anWenn Sie pidstat auffordern, mehr als eine Statistik zu melden, zeigt es eine Statistik nach der anderen Statistik an. Im folgenden Beispiel werden zuerst die Leistungsstatistiken für Option „r“, dann Option „u“ und schließlich Option „d“ angezeigt.
# pidstat -rud
Wenn Sie jedoch möchten, dass alle diese Statistiken für den einzelnen Prozess in einer einzigen Zeile angezeigt werden, verwenden Sie die Option -h wie unten gezeigt.
# pidstat -rud -h | head Linux 3.0.101-0.7.17-default (thegeekstuff) 07/30/14 _x86_64_ # Time PID %usr %system %guest %CPU CPU minflt/s majflt/s VSZ RSS %MEM kB_rd/s kB_wr/s kB_ccwr/s Command 1406823329 1 0.04 0.19 0.00 0.24 2 21.50 0.03 26944 2768 0.07 -1.00 -1.00 -1.00 init 1406823329 3 0.00 0.03 0.00 0.03 0 0.00 0.00 0 0 0.00 -1.00 -1.00 -1.00 ksoftirqd/0 1406823329 8 0.00 0.00 0.00 0.00 0 0.00 0.00 0 0 0.00 -1.00 -1.00 -1.00 migration/0 1406823329 10 0.00 0.08 0.00 0.08 2 0.00 0.00 0 0 0.00 -1.00 -1.00 -1.00 rcu_sched 1406823329 13 0.00 0.03 0.00 0.03 1 0.00 0.00 0 0 0.00 -1.00 -1.00 -1.00 ksoftirqd/1 1406823329 14 0.00 0.00 0.00 0.00 1 0.00 0.00 0 0 0.00 -1.00 -1.00 -1.00 migration/1 1406823329 18 0.00 0.01 0.00 0.01 2 0.00 0.00 0 0 0.00 -1.00 -1.00 -1.00 ksoftirqd/2