Der ps-Befehl unter Linux ist die Abkürzung für Process Status. Mit dem Befehl ps werden die aktuell auf dem System laufenden Prozesse aufgelistet. Der ps-Befehl listet die Snapshots der aktuellen Prozesse auf, also die Prozesse zum Zeitpunkt der Ausführung des ps-Befehls. Wenn Sie Prozessinformationen dynamisch anzeigen möchten, können Sie den top-Befehl verwenden.
Um den Prozess zu überwachen und zu steuern, müssen Sie zunächst die Situation des aktuellen Prozesses verstehen, das heißt, Sie müssen den aktuellen Prozess anzeigen, und der Befehl ps ist der grundlegendste und auch sehr leistungsfähigste Befehl zur Prozessanzeige . Verwenden Sie diesen Befehl, um zu ermitteln, welche Prozesse ausgeführt werden und welchen Status sie haben, ob der Prozess beendet wurde, ob der Prozess gestorben ist, welche Prozesse zu viele Ressourcen belegen usw. Kurz gesagt, die meisten Informationen können durch Ausführen dieses Befehls abgerufen werden.
ps bietet uns eine einmalige Ansicht des Prozesses, aber die angezeigten Ergebnisse sind nicht dynamisch und kontinuierlich; wenn Sie die Prozesszeit überwachen möchten, sollten Sie das Top-Tool verwenden.
Kill-Befehl wird verwendet, um den Prozess abzubrechen.
Der Prozess unter Linux hat 5 Zustände:
1. Wird ausgeführt (läuft oder wartet in der Ausführungswarteschlange)
2 (Schlafend, blockiert, Warten auf die Bildung einer bestimmten Bedingung oder Empfangen eines Signals)
3. Ununterbrechbar (nicht aufwachen und laufen, wenn ein Signal empfangen wird, muss der Prozess warten, bis eine Unterbrechung auftritt)
4. Zombie (der Prozess wurde beendet, aber der Prozessdeskriptor existiert, bis der übergeordnete Prozess den Systemaufruf wait4() aufruft und freigegeben wird)
5. Stopp (der Prozess empfängt SIGSTOP, SIGSTP, SIGTIN , SIGTOU-Signale Stoppen Sie das Laufen nach dem Laufen)
Die 5 Statuscodes des PS-Tool-Identifizierungsprozesses:
D ununterbrochener Ruhezustand (normalerweise IO)
R ausführbar ausführen (in der Ausführungswarteschlange)
S Schlafen unterbrechen
T Verfolgt oder gestoppt stoppen
Z Zombie ein nicht mehr existierender („Zombie“) Prozess
1. Befehlsformat:
ps[parameter]
2. Befehlsfunktion:
wird verwendet, um den Status des aktuellen Prozesses anzuzeigen
3. Befehlsparameter:
a Alle Prozesse anzeigen
-a Alle Programme unter demselben Terminal anzeigen
-A Alle Prozesse anzeigen
c Den wahren Status anzeigen des Prozessnamens
-N umgekehrte Auswahl
-e ist gleich „-A“
e zeigt Umgebungsvariablen an
f zeigt die Beziehung zwischen an Programme
-H Baumstruktur anzeigen
r Prozesse des aktuellen Terminals anzeigen
T Alle Programme des aktuellen Terminals anzeigen
u Alle Prozesse von der angegebene Benutzer
-au Zeigt detailliertere Informationen an
-aux Zeigt alle Zeitpläne an, die andere Benutzer enthalten
-C
- -lines
--width --help Anzeige Hilfeinformationen --version Versionsanzeige anzeigen 4. Anwendungsbeispiel: Beispiel 1: Alle Prozessinformationen anzeigen Befehl: ps -A Ausgabe: Beschreibung: Beispiel 2: Angegebene Benutzerinformationen anzeigen Befehl: ps -u root Ausgabe: Beschreibung: Beispiel 3: Alle Prozessinformationen zusammen mit der Befehlszeile anzeigen Befehl: ps -ef Ausgabe: Anweisungen: Beispiel 4: Häufig verwendete Kombinationen von ps und grep, um bestimmte Prozesse zu finden Befehl: ps -ef|grep ssh Ausgabe: Erklärung: Beispiel 5: Listen Sie die PID und die zugehörigen Informationen auf, die Ihnen derzeit für diese Anmeldung gehören Befehl: ps -l Ausgabe: Erklärung: Die Bedeutung jeder zugehörigen Information: F steht für die Flagge davon Programm (Flag), 4 bedeutet, dass der Benutzer Superuser ist S stellt den Status dieses Programms dar (STAT), die Bedeutung jedes STAT wird im Text vorgestellt UID Das Programm ist Eigentum der UID PID ist die ID dieses Programms! PPID ist die ID des übergeordneten übergeordneten Programms Prozentsatz der genutzten C-CPU-Ressourcen PRI ist die Abkürzung für Priority (Priority Execution Order), die im Detail vorgestellt wird später NI ist der Nice-Wert. Wir werden ihn im nächsten Abschnitt weiter vorstellen. ADDR ist die Kernelfunktion, die angibt, in welchem Teil des Speichers sich das Programm befindet. Wenn es sich um ein laufendes Programm handelt, ist es normalerweise „-“ SZ Die verwendete Speichergröße WCHAN Läuft das Programm gerade? Wenn es - ist, bedeutet dies, dass es ausgeführt wird TTY Der Terminalstandort des angemeldeten Benutzers TIME Die verwendete CPU-Zeit. Warum wird der Befehl von CMD ausgegeben? Standardmäßig listet ps nur die PID auf, die sich auf die aktuelle Bash-Shell bezieht. Wenn ich also ps verwende -l, es gibt nur drei PIDs. 实例6:列出目前所有的正在内存当中的程序 命令: ps aux 输出: 说明: USER:该 process 属于那个使用者账号的 PID :该 process 的号码 %CPU:该 process 使用掉的 CPU 资源百分比 %MEM:该 process 所占用的物理内存百分比 VSZ :该 process 使用掉的虚拟内存量 (Kbytes) RSS :该 process 占用的固定的内存量 (Kbytes) TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。 STAT:该程序目前的状态,主要的状态有 R :该程序目前正在运作,或者是可被运作 S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。 T :该程序目前正在侦测或者是停止了 Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态 START:该 process 被触发启动的时间 TIME :该 process 实际使用 CPU 运作的时间 COMMAND:该程序的实际指令 实例7:列出类似程序树的程序显示 命令: ps -axjf 输出: 说明: 实例8:找出与 cron 与 syslog 这两个服务有关的 PID 号码 命令: 输出: 说明: 其他实例: 1. 可以用 | 管道和 more 连接起来分页查看 命令: ps -aux |more 2. 把所有进程显示出来,并输出到ps001.txt文件 命令: ps -aux > ps001.txt 3. 输出指定的字段 命令: ps -o pid,ppid,pgrp,session,tpgid,comm 输出: 更多每天一个linux命:ps命令相关文章请关注PHP中文网![root@localhost test6]# ps -A
PID TTY TIME CMD
1 ? 00:00:00 init
2 ? 00:00:01 migration/0
3 ? 00:00:00 ksoftirqd/0
4 ? 00:00:01 migration/1
5 ? 00:00:00 ksoftirqd/1
6 ? 00:29:57 events/0
7 ? 00:00:00 events/1
8 ? 00:00:00 khelper
49 ? 00:00:00 kthread
54 ? 00:00:00 kblockd/0
55 ? 00:00:00 kblockd/1
56 ? 00:00:00 kacpid
217 ? 00:00:00 cqueue/0
……省略部分结果
[root@localhost test6]# ps -u root
PID TTY TIME CMD
1 ? 00:00:00 init
2 ? 00:00:01 migration/0
3 ? 00:00:00 ksoftirqd/0
4 ? 00:00:01 migration/1
5 ? 00:00:00 ksoftirqd/1
6 ? 00:29:57 events/0
7 ? 00:00:00 events/1
8 ? 00:00:00 khelper
49 ? 00:00:00 kthread
54 ? 00:00:00 kblockd/0
55 ? 00:00:00 kblockd/1
56 ? 00:00:00 kacpid
……省略部分结果
[root@localhost test6]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Nov02 ? 00:00:00 init [3]
root 2 1 0 Nov02 ? 00:00:01 [migration/0]
root 3 1 0 Nov02 ? 00:00:00 [ksoftirqd/0]
root 4 1 0 Nov02 ? 00:00:01 [migration/1]
root 5 1 0 Nov02 ? 00:00:00 [ksoftirqd/1]
root 6 1 0 Nov02 ? 00:29:57 [events/0]
root 7 1 0 Nov02 ? 00:00:00 [events/1]
root 8 1 0 Nov02 ? 00:00:00 [khelper]
root 49 1 0 Nov02 ? 00:00:00 [kthread]
root 54 49 0 Nov02 ? 00:00:00 [kblockd/0]
root 55 49 0 Nov02 ? 00:00:00 [kblockd/1]
root 56 49 0 Nov02 ? 00:00:00 [kacpid]
……省略部分结果
[root@localhost test6]# ps -ef|grep ssh
root 2720 1 0 Nov02 ? 00:00:00 /usr/sbin/sshd
root 17394 2720 0 14:58 ? 00:00:00 sshd: root@pts/0
root 17465 17398 0 15:57 pts/0 00:00:00 grep ssh
[root@localhost test6]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 17398 17394 0 75 0 - 16543 wait pts/0 00:00:00 bash
4 R 0 17469 17398 0 77 0 - 15877 - pts/0 00:00:00 ps
[root@localhost test6]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 10368 676 ? Ss Nov02 0:00 init [3]
root 2 0.0 0.0 0 0 ? S< Nov02 0:01 [migration/0]
root 3 0.0 0.0 0 0 ? SN Nov02 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S< Nov02 0:01 [migration/1]
root 5 0.0 0.0 0 0 ? SN Nov02 0:00 [ksoftirqd/1]
root 6 0.0 0.0 0 0 ? S< Nov02 29:57 [events/0]
root 7 0.0 0.0 0 0 ? S< Nov02 0:00 [events/1]
root 8 0.0 0.0 0 0 ? S< Nov02 0:00 [khelper]
root 49 0.0 0.0 0 0 ? S< Nov02 0:00 [kthread]
root 54 0.0 0.0 0 0 ? S< Nov02 0:00 [kblockd/0]
root 55 0.0 0.0 0 0 ? S< Nov02 0:00 [kblockd/1]
root 56 0.0 0.0 0 0 ? S< Nov02 0:00 [kacpid]
……省略部分结果
[root@localhost test6]# ps -axjf
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
0 1 1 1 ? -1 Ss 0 0:00 init [3]
1 2 1 1 ? -1 S< 0 0:01 [migration/0]
1 3 1 1 ? -1 SN 0 0:00 [ksoftirqd/0]
1 4 1 1 ? -1 S< 0 0:01 [migration/1]
1 5 1 1 ? -1 SN 0 0:00 [ksoftirqd/1]
1 6 1 1 ? -1 S< 0 29:58 [events/0]
1 7 1 1 ? -1 S< 0 0:00 [events/1]
1 8 1 1 ? -1 S< 0 0:00 [khelper]
1 49 1 1 ? -1 S< 0 0:00 [kthread]
49 54 1 1 ? -1 S< 0 0:00 \_ [kblockd/0]
49 55 1 1 ? -1 S< 0 0:00 \_ [kblockd/1]
49 56 1 1 ? -1 S< 0 0:00 \_ [kacpid]
[root@localhost test6]# ps aux | egrep '(cron|syslog)'
root 2682 0.0 0.0 83384 2000 ? Sl Nov02 0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
root 2735 0.0 0.0 74812 1140 ? Ss Nov02 0:00 crond
root 17475 0.0 0.0 61180 832 pts/0 S+ 16:27 0:00 egrep (cron|syslog)
[root@localhost test6]#
[root@localhost test6]# ps -o pid,ppid,pgrp,session,tpgid,comm
PID PPID PGRP SESS TPGID COMMAND
17398 17394 17398 17398 17478 bash
17478 17398 17478 17398 17478 ps
[root@localhost test6]#