Heim > Web-Frontend > PS-Tutorial > Hauptteil

Jeden Tag ein Linux-Befehl: ps-Befehl

高洛峰
Freigeben: 2016-12-29 14:30:34
Original
1408 Leute haben es durchsucht

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 Listet den Status des angegebenen Befehls auf

- -lines Anzahl der auf jeder Seite angezeigten Zeilen

--width

--help Anzeige Hilfeinformationen

--version Versionsanzeige anzeigen

4. Anwendungsbeispiel:

Beispiel 1: Alle Prozessinformationen anzeigen

Befehl:

ps -A

Ausgabe:

[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
  ……省略部分结果
Nach dem Login kopieren

Beschreibung:

Beispiel 2: Angegebene Benutzerinformationen anzeigen

Befehl:

ps -u root

Ausgabe:

[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
    ……省略部分结果
Nach dem Login kopieren

Beschreibung:

Beispiel 3: Alle Prozessinformationen zusammen mit der Befehlszeile anzeigen

Befehl:

ps -ef

Ausgabe:

[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]
……省略部分结果
Nach dem Login kopieren

Anweisungen:

Beispiel 4: Häufig verwendete Kombinationen von ps und grep, um bestimmte Prozesse zu finden

Befehl:

ps -ef|grep ssh

Ausgabe:

[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
Nach dem Login kopieren

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:

[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
Nach dem Login kopieren

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

输出:

[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]
……省略部分结果
Nach dem Login kopieren

说明:

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

输出:

[root@localhost test6]# ps -axjf
Warning: bad syntax, perhaps a bogus &#39;-&#39;? 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]
Nach dem Login kopieren

说明:

实例8:找出与 cron 与 syslog 这两个服务有关的 PID 号码

命令:

输出:

[root@localhost test6]# ps aux | egrep &#39;(cron|syslog)&#39;
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]#
Nach dem Login kopieren

说明:

其他实例:

1. 可以用 | 管道和 more 连接起来分页查看

命令:

ps -aux |more


2. 把所有进程显示出来,并输出到ps001.txt文件

命令:

ps -aux > ps001.txt


3. 输出指定的字段

命令:

ps -o pid,ppid,pgrp,session,tpgid,comm

输出:

[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]#
Nach dem Login kopieren


更多每天一个linux命:ps命令相关文章请关注PHP中文网!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!