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.
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 |
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 -ef
Il 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%1
Est 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"
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
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
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.