Maison >interface Web >Tutoriel PS >Une commande Linux au quotidien : la commande ps

Une commande Linux au quotidien : la commande ps

高洛峰
高洛峰original
2016-12-29 14:30:341474parcourir

La commande ps sous Linux est l'abréviation de Process Status. La commande ps est utilisée pour répertorier les processus actuellement en cours d'exécution sur le système. La commande ps répertorie les instantanés des processus en cours, qui sont les processus au moment où la commande ps est exécutée. Si vous souhaitez afficher dynamiquement les informations sur le processus, vous pouvez utiliser la commande top.

Pour surveiller et contrôler le processus, vous devez d'abord comprendre la situation du processus en cours, c'est-à-dire que vous devez visualiser le processus en cours, et la commande ps est la commande de visualisation de processus la plus basique et également la plus puissante. . Utilisez cette commande pour déterminer quels processus sont en cours d'exécution et leur état d'exécution, si le processus est terminé, s'il est mort, quels processus occupent trop de ressources, etc. Bref, la plupart des informations peuvent être obtenues en exécutant cette commande.

ps nous fournit une vue unique du processus, mais les résultats de la vue qu'il fournit ne sont pas dynamiques et continus ; si vous souhaitez surveiller le temps du processus, vous devez utiliser l'outil supérieur.

La commande kill est utilisée pour tuer le processus.


Le processus sous Linux a 5 états :

1. En cours d'exécution (en cours d'exécution ou en attente dans la file d'attente d'exécution)

2. (en veille, bloqué, en attente de la formation d'une certaine condition ou de la réception d'un signal)

3. Sans interruption (ne se réveille pas et ne peut pas fonctionner lors de la réception d'un signal, le processus doit attendre qu'une interruption se produise)

4. Zombie (le processus est terminé, mais le descripteur de processus existe jusqu'à ce que le processus parent appelle l'appel système wait4() et soit libéré)

5. Stop (le processus reçoit SIGSTOP, SIGSTP. , SIGTIN, SIGTOU signaux Arrêter de fonctionner après l'exécution)


Les 5 codes d'état du processus d'identification de l'outil ps :

D veille ininterrompue (généralement IO)

R run runnable (dans la file d'attente d'exécution)

S interrompre le sommeil

T arrêter tracé ou arrêté

Z zombie un processus défunt ("zombie")


1. Format de commande :

ps[paramètre]

2. Fonction de commande :

est utilisée pour afficher l'état du processus en cours

3. Paramètres de la commande :

a Afficher tous les processus

-a Afficher tous les programmes sous le même terminal

-A Afficher tous les processus

c Afficher le véritable statut du processus Nom

-N sélection inversée

-e est égal à "-A"

e affiche les variables d'environnement

f affiche la relation entre programmes

-H Afficher l'arborescence

r Afficher les processus du terminal actuel

T Afficher tous les programmes du terminal actuel

u Tous les processus de l'utilisateur spécifié

-au Affiche des informations plus détaillées

-aux Affiche toutes les planifications qui incluent d'autres utilisateurs

-Cc21d5b2dbf788dd07eb92dd26e84b7aa >

- -lines50e5801db80c300962b8b99eeda30d9c Nombre de lignes affichées sur chaque page

--widthcbce289de30c745bfa56a9127ce3879a Nombre de caractères affichés sur chaque page

--aide Affichage informations d'aide

--version Afficher l'affichage de la version

4. Exemple d'utilisation :

Exemple 1 : Afficher toutes les informations sur le processus

Commande :

ps -A

Sortie :

[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
  ……省略部分结果
Description :

Exemple 2 : Afficher les informations utilisateur spécifiées

Commande :

ps -u root

Sortie :

[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
    ……省略部分结果
Description :

Exemple 3 : Afficher toutes les informations sur le processus, ainsi que la ligne de commande

Commande :

ps -ef

Sortie :

[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]
……省略部分结果
Instructions :

Exemple 4 : Combinaisons couramment utilisées de ps et grep pour rechercher des processus spécifiques

Commande :

ps -ef|grep ssh

Sortie :

[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
Explication :

Exemple 5 : Répertoriez le PID et les informations associées qui vous appartiennent actuellement pour cette connexion

Commande :

ps -l

Sortie :

[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
Explication :

La signification de chaque information associée :

F représente le drapeau de ce programme (drapeau), 4 signifie que l'utilisateur est super utilisateur

S représente l'état de ce programme (STAT), la signification de chaque STAT sera introduite dans le texte

UID Le programme est appartenant à l'UID

PID est l'ID de ce programme !

PPID est l'ID de son programme parent supérieur

Pourcentage de ressources CPU C utilisé

PRI est l'abréviation de Priority (Priority Execution Order), qui sera présenté en détail plus tard

NI est la valeur Nice. Nous continuerons à la présenter dans la section suivante

ADDR est la fonction du noyau, indiquant dans quelle partie de la mémoire se trouve le programme. S'il s'agit d'un programme en cours d'exécution, il s'agit généralement de "-"

SZ La taille de la mémoire utilisée

WCHAN Le programme est-il actuellement en cours d'exécution ? S'il s'agit de -, cela signifie qu'il est en cours d'exécution

TTY L'emplacement du terminal de l'utilisateur connecté

TIME Le temps CPU utilisé.

Pourquoi la commande est-elle émise par CMD


Par défaut, ps ne listera que le PID lié au shell bash actuel. Ainsi, lorsque j'utilise ps. -l, il n'y a que trois PID.


实例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]
……省略部分结果

说明:

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]

说明:

实例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]#

说明:

其他实例:

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]#


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


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn