[LINUX] Commandes qui exécutent le processus ~ Vérifiez l'état du processus, la priorité, l'exécution en arrière-plan, etc.

Je présenterai brièvement les commandes qui manipulent le processus.

Veuillez l'utiliser pour l'apprentissage, les mesures LPIC, LinuC, etc.

De plus, si vous pensez qu'il s'agit de fromage fondu, nous vous recommandons vivement de revenir au navigateur.

Liste des commandes

Un programme fonctionnant sous Linux est appelé un processus.

Les commandes suivantes qui gèrent un tel processus sont présentées avec des exemples d'utilisation. (Celui entre parenthèses est un bonus)

commander La description
pgrep Recherchez l'ID de processus en cours d'exécution en fonction du nom d'utilisateur, de l'UID, du GID, etc.
top Visualisez les processus en cours en temps réel
ps Obtenir des informations sur le processus
pstree Afficher les processus en cours d'exécution dans un format d'arborescence
nice Changer la priorité du processus
renice Changer la priorité des processus en cours d'exécution
jobs Afficher les processus en cours
bg Faites-en un travail d'arrière-plan
fg Faites-en un travail de premier plan
kill Envoyer un signal au processus
killall Envoyer un signal au processus
(free) Afficher la quantité de mémoire libre et utilisée dans le système

pgrep

Une commande pour rechercher un ID de processus en cours d'exécution basé sur le nom d'utilisateur, l'UID, le GID, etc.

$ pgrep -u root
1
2
3
4
6
...(réduction)
$ pgrep -U 0
1
2
3
4
6
...(réduction)

Vous pouvez spécifier le nom d'utilisateur avec -u et l'UID avec -U.

L'UID racine est 0 dans LINUX

top

Une commande pour afficher le processus en cours en temps réel

top - 22:06:29 up 1 day, 16:36,  1 user,  load average: 0.00, 0.02, 0.00
Tasks:  96 total,   1 running,  55 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1002108 total,   150664 free,   517700 used,   333744 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   330584 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                           
17870 mysql     20   0 1309152 319372      0 S  0.7 31.9   6:43.18 mysqld                                            
32132 ubuntu    20   0   44524   3928   3320 R  0.3  0.4   0:00.01 top                                               
    1 root      20   0  159948   6360   3880 S  0.0  0.6   0:04.36 systemd                                           
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd                                          
    3 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 rcu_gp

L'exécution de ps sans option affiche uniquement les processus lancés à partir du shell actuel Vous pouvez également voir le processus de mysqld qui a été configuré pour le plaisir dans mon environnement et la commande top en cours d'exécution. L'écran est automatiquement mis à jour et affiché dans l'ordre décroissant de l'utilisation du processeur. La surveillance prend fin lorsque vous appuyez sur «q»

"PID" signifie l'ID du processus, "USER" signifie l'utilisateur qui a exécuté le processus, "% CPU" signifie le rapport de consommation CPU et "% MEM" signifie le taux de consommation de mémoire.

ps

La commande PS (ProceSs) est une commande pour obtenir des informations sur le processus

$ ps
  PID TTY          TIME CMD
31249 pts/0    00:00:00 bash
31348 pts/0    00:00:00 ps

Si vous exécutez sans options, une liste des processus démarrés sur ce terminal sera affichée. "PID" signifie l'ID de processus, "TTY" signifie le nom du terminal qui a exécuté le processus, "TIME" signifie l'heure d'exécution du processus et "CMD" signifie la commande d'exécution. D'après les résultats, on peut voir que le shell utilise bash.

option La description
a Afficher les processus des autres utilisateurs
u Afficher également le nom d'utilisateur
x Afficher également les processus qui ne sont pas exécutés depuis le terminal
e Afficher des informations sur tous les processus à l'exception du processus du noyau
f Générer une liste complète
o Personnalisez les colonnes à afficher

Afficher les processus actifs

ps aux

$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.6 159948  6268 ?        Ss   Aug27   0:04 /sbin/init
root         2  0.0  0.0      0     0 ?        S    Aug27   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        I<   Aug27   0:00 [rcu_gp]
...réduction...
ubuntu   31248  0.0  0.3 107980  3628 ?        S    14:17   0:00 sshd: ubuntu@pts/0
ubuntu   31249  0.0  0.5  23112  5064 pts/0    Ss   14:17   0:00 -bash
ubuntu   31351  0.0  0.3  40088  3504 pts/0    R+   14:22   0:00 ps aux

ps -efIl existe également une méthode

$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Aug27 ?        00:00:04 /sbin/init
root         2     0  0 Aug27 ?        00:00:00 [kthreadd]
root         3     2  0 Aug27 ?        00:00:00 [rcu_gp]
...réduction...
ubuntu   31248 31155  0 14:17 ?        00:00:00 sshd: ubuntu@pts/0
ubuntu   31249 31248  0 14:17 pts/0    00:00:00 -bash
ubuntu   31355 31249  0 14:27 pts/0    00:00:00 ps -ef

Il est agréable de personnaliser l'affichage comme vous le souhaitez

$ ps -o pid,nice,user,cmd
  PID  NI USER     CMD
 3614   0 ubuntu   -bash
 4341   0 ubuntu   ps -o pid,nice,user,cmd

pstree

Une commande pour afficher le processus en cours d'exécution dans un format d'arbre

Vous trouverez ci-dessous un exemple d'exécution sur AWS EC2

$ pstree
systemd─┬─accounts-daemon───2*[{accounts-daemon}]
        ├─acpid
        ├─2*[agetty]
        ├─amazon-ssm-agen───8*[{amazon-ssm-agen}]
        ├─atd
        ├─containerd───8*[{containerd}]
        ├─cron
        ├─dbus-daemon
        ├─dockerd───9*[{dockerd}]
        ├─lvmetad
        ├─lxcfs───10*[{lxcfs}]
        ├─mysqld───38*[{mysqld}]
        ├─networkd-dispat───{networkd-dispat}
        ├─polkitd───2*[{polkitd}]
        ├─rsyslogd───3*[{rsyslogd}]
        ├─snapd───8*[{snapd}]
        ├─sshd───sshd───sshd───bash───pstree
        ├─systemd───(sd-pam)
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-network
        ├─systemd-resolve
        ├─systemd-timesyn───{systemd-timesyn}
        ├─systemd-udevd
        └─unattended-upgr───{unattended-upgr}

Vous pouvez voir que bash est démarré à partir de sshd requis pour accéder à EC2 et que pstree s'exécute à partir de ce bash

nice

Changer la priorité du processus

Les priorités de processus sont définies comme -20 de -20 à 19, les priorités inférieures étant plus élevées.

Lorsqu'elle est exécutée sans argument, la priorité est ajoutée par 10.

$ sleep 15 &
[2] 2644
[1]   Done                    nice sleep 15
$ ps -o pid,nice,user,cmd
  PID  NI USER     CMD
 2521   0 ubuntu   -bash
 2644   0 ubuntu   sleep 15
 2645   0 ubuntu   ps -o pid,nice,user,cmd
$ nice sleep 15 &
[1] 2634
$ ps -o pid,nice,user,cmd
  PID  NI USER     CMD
 2521   0 ubuntu   -bash
 2634  10 ubuntu   sleep 15
 2635   0 ubuntu   ps -o pid,nice,user,cmd

renice

Changer la priorité des processus en cours d'exécution

$ sleep 15 &
[1] 2651
$ ps -o pid,nice,user,cmd
  PID  NI USER     CMD
 2521   0 ubuntu   -bash
 2651   0 ubuntu   sleep 15
 2652   0 ubuntu   ps -o pid,nice,user,cmd
$ renice 10 2651
2651 (process ID) old priority 0, new priority 10
$ ps -o pid,nice,user,cmd
  PID  NI USER     CMD
 2521   0 ubuntu   -bash
 2651  10 ubuntu   sleep 15
 2655   0 ubuntu   ps -o pid,nice,user,cmd

jobs

(Arrière-plan) Affiche les travaux en cours. Un travail est une unité de traitement vue par l'utilisateur, et il existe des travaux de premier plan visibles par l'utilisateur et des travaux d'arrière-plan invisibles pour l'utilisateur. Vous pouvez en faire un travail en arrière-plan en ajoutant la commande bg ou en ajoutant le "&" à la commande d'exécution.

$ sleep 60 &
[1] 3810
$ jobs
[1]+  Running                 sleep 60 &
$ kill -s SIGKILL %1
$ jobs
[1]+  Killed                  sleep 60

[1]Ou%1Est appelé l'ID de la tâche et est attribué à chaque utilisateur.

bg

Faites-en un travail d'arrière-plan

Tapez `` Ctrl + z '' dans le programme en cours d'exécution ou &Même s'il est exécuté avec, il devient un travail d'arrière-plan.

fg

Faites-en un travail de premier plan

Un seul programme peut s'exécuter dans une tâche de premier plan dans bash

kill

Vous pouvez utiliser la commande kill pour envoyer un signal au processus

ID du signal Nom du signal mouvement
1 SIGUP Résiliation en déconnectant le terminal
2 SIGINT Fin par interruption
9 SIGKILL résiliation forcée
15 SIGTERM Quitter (par défaut)
18 SIGCONT Reprendre

S'il s'agit de SIGTERM, le processus d'arrêt du programme est exécuté, mais SIGKILL est interrompu de force tel quel.

À propos, SIGINT est envoyé à la fin de "Control + c"

Terminer le processus

Si vous souhaitez terminer le processus avec l'ID de processus 32147, procédez comme suit

$ kill -15 32147

Vous pouvez également terminer en spécifiant l'ID du signal

$ kill -s SIGTERM 32147

Tuez le processus

Spécifiez l'ID du signal

$ kill -9 32147

Spécifiez le nom du signal

$ kill -s SIGKILL 32147

killall

Envoyer un signal au processus en spécifiant le nom du processus

Même si le même programme est exécuté plusieurs fois, différents PID sont attribués à chaque processus, mais si vous utilisez killall, vous pouvez mettre fin aux processus avec le même nom à la fois.

$ vi a.txt &
[1] 3728
$ ps
  PID TTY          TIME CMD
 3614 pts/0    00:00:00 bash
 3728 pts/0    00:00:00 vi
 3732 pts/0    00:00:00 ps
$ killall -15 vi
$ ps
  PID TTY          TIME CMD
 3614 pts/0    00:00:00 bash
 3728 pts/0    00:00:00 vi
 3734 pts/0    00:00:00 ps
$ killall -SIGKILL vi
[1]+  Killed                  vi a.txt
$ ps
  PID TTY          TIME CMD
 3614 pts/0    00:00:00 bash
 3736 pts/0    00:00:00 ps

free

Afficher la quantité de mémoire libre et utilisée dans le système

Lorsqu'il est combiné avec l'option -t, il affiche également une ligne indiquant le total de la mémoire physique et de la mémoire d'échange.

$ free -t
              total        used        free      shared  buff/cache   available
Mem:        1002108      516296      104900         812      380912      331188
Swap:             0           0           0
Total:      1002108      516296      104900

Résumé

Vous pouvez connaître le programme du noyau simplement en élaborant sur le processus (au moins en termes de termes). Vivons une vie Linux amusante tout en sachant quels types de programmes sont exécutés sur votre ordinateur.

C'était un sujet sur le processus pour la première fois en un an. Ravi de vous rencontrer également.

Comment terminer le processus ~ top & kill

Recommended Posts

Commandes qui exécutent le processus ~ Vérifiez l'état du processus, la priorité, l'exécution en arrière-plan, etc.