Maison  >  Article  >  Opération et maintenance  >  Gestion des processus sous Linux - introduction à ps, pstree et autres commandes

Gestion des processus sous Linux - introduction à ps, pstree et autres commandes

齐天大圣
齐天大圣original
2020-10-10 12:33:342664parcourir

Le processus, comme son nom l'indique, est un programme en cours d'exécution. Le processus est l'unité d'exploitation de base du système d'exploitation. Chaque processus a un ID de processus unique, et nous gérons les processus via cet ID.

ps

Pour vérifier l'état d'exécution de chaque programme, utilisez la commande ps. Nous parlons ici des concepts de processus parent et de processus enfant. Les processus enfants sont dérivés des processus parents. Les processus sans processus parents sont appelés processus orphelins.

Affichez l'état du processus de l'environnement bash actuel :

# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0 43530 43528  0  80   0 - 28886 do_wai pts/0    00:00:00 bash
0 R     0 43552 43530  0  80   0 - 38336 -      pts/0    00:00:00 ps

Ici, l'UID représente l'ID utilisateur, le PID représente l'ID du processus et le PPID représente l'ID du processus parent

<.>Afficher tous les statuts de processus ;

# ps aux 
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
……
root         2  0.0  0.0      0     0 ?        S    Sep29   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Sep29   0:02 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   Sep29   0:00 [kworker/0:0H]
……

Vous pouvez afficher tous les statuts de processus via ps aux, mais il ne répertorie pas l'ID du processus parent. Nous pouvons utiliser ps -lA ou ps -ef pour afficher tous les processus et afficher l'ID du processus parent.

[root@localhost ~]# ps -lA
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0     1     0  0  80   0 - 47844 ep_pol ?        00:00:04 systemd
1 S     0     2     0  0  80   0 -     0 kthrea ?        00:00:00 kthreadd
1 S     0     3     2  0  80   0 -     0 smpboo ?        00:00:02 ksoftirqd/0

pstree

Bien que ce qui précède tout afficher Le processus répertorie l'ID du processus parent, mais la relation entre les processus parent et enfant n'est pas claire en un coup d'œil. Nous pouvons utiliser pstree pour répertorier tous les processus sous forme d’arborescence de processus.

# pstree -up
systemd(1)─┬─BT-Panel(5462)───{BT-Panel}(5469)
           ├─BT-Task(5361)─┬─{BT-Task}(5375)
           │               ├─{BT-Task}(5376)
           │               ├─{BT-Task}(5377)
           │               ├─{BT-Task}(5381)
           │               ├─{BT-Task}(5382)
           │               └─{BT-Task}(5390)
……

Vous pouvez également afficher le nombre de processus pour un processus spécifique.

# pstree -p 5389 -up
mysqld(5389,mysql)─┬─{mysqld}(5414)
                   ├─{mysqld}(5415)
                   ├─{mysqld}(5416)
……

pidof

Affichez le numéro d'identification du processus par le nom du processus. Par exemple, si je veux connaître l'ID du processus mysqld, je peux le vérifier via la commande pidof.

# pidof mysqld
5389

Notez qu'il peut y avoir plusieurs noms de processus identiques sur le serveur, donc plus d'un ID de processus sera trouvé via pidof.

# pidof php-fpm
42609 41610 41588 ……

kill, killall

Pour la gestion des processus, nous la gérons via le numéro de processus PID et un signal de signal.

代号 名称 内容
1 SIGHUP 启动被终止的程序,可让该PID 重新读取自己的配置文件,类似重新启动    
2 SIGINT 相当于用键盘输入[ctrl]-c 来中断一个程序的进行    
9 SIGKILL 代表强制中断一个程序的进行    
15  SIGTERM 以正常的结束程序来终止该程序。由于是正常的终止, 所以后续的动作会将他完成。该信号也是默认值,不加任何信号时,即表示使用该值。
19  SIGSTOP 相当于用键盘输入[ctrl]-z 来暂停一个程序的进行
La différence entre kill et killall est que kill gère les processus via des ID de processus, tandis que killall gère les processus via des noms de processus.


# kill -15 4260
# killall -9 php-fpm  # 注意,这样会杀死所有php-fpm进程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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