Le terme processus est souvent inconnue de toute personne sans formation en informatique. Cependant, c'est celui qui est souvent utilisé lors de discussions sur la programmation Linux, et les processus sont essentiels au travail d'administration système.
Linux utilise également le terme job se référer à un concept très similaire. La différence est subtile mais importante, et le contrôle des tâches est un outil utile lors de l'exécution d'un environnement multitâche. Vous pouvez utiliser un certain nombre d'outils et de commandes intégrées pour jongler avec les tâches.
Au niveau le plus simple, vous pouvez considérer un processus comme l'équivalent d'un programme que vous exécutez. Il peut s'agir d'une application graphique complète telle que votre navigateur Web. Il peut s'agir d'une seule commande unique que vous exécutez sur la ligne de commande, telle que ls . D'une manière générale, tout ce qui se passe sur votre ordinateur dépend d'un processus, en son cœur.
En réalité, une seule application peut utiliser plusieurs processus pour effectuer simultanément des tâches distinctes. Un appel de ligne de commande à l'aide de canaux, tels que :
$ grep "error" log.txt | wc -l
Exécutera deux processus distincts, un pour chaque segment de tuyau.
Les processus sont soit créés explicitement par vous, l'utilisateur, soit automatiquement par votre ordinateur lui-même. En fait, vous pouvez avoir des centaines de processus déjà en cours d'exécution dès que vous avez démarré.
Les processus peuvent générer d'autres processus et init, le premier processus qui démarre sur de nombreux systèmes Linux traditionnels, est responsable en dernier ressort du démarrage de chaque processus en cours d'exécution.
De nombreux processus sont des commandes de courte durée qui exécutent une tâche puis s'arrêtent. Taper ls dans un terminal démarrera, exécutera et arrêtera un processus en quelques fractions de seconde.
Certains processus, tels que les démons , fonctionne en continu. Le cron processus, par exemple, exécute périodiquement d'autres commandes pendant que son ordinateur hôte est en cours d'exécution.
Le système d'exploitation (OS) attribue un identifiant unique à chaque processus. C'est ce qu'on appelle le PID ou l'ID de processus. Cette valeur est généralement un nombre de 1 à 5 chiffres et les processus futurs peuvent réutiliser le PID d'un processus précédent qui a été entièrement nettoyé.
Les PID sont utilisés par le système d'exploitation lui-même de différentes manières. Un bon exemple est le /proc répertoire qui stocke des informations sur les processus en cours d'exécution.
Dans la terminologie Linux, un travail est un programme géré par le shell. Il se compose généralement d'un processus, mais peut en utiliser plusieurs. Lorsque vous entrez une commande dans votre terminal, un processus est généré pour exécuter la commande et une tâche est créée pour aider à contrôler la commande pendant son exécution.
Si vous exécutez une tâche au premier plan, vous pouvez l'interrompre en appuyant sur Ctrl+C (^C). En règle générale, cela entraînera l'arrêt du processus et renverra le terminal à une invite.
$ sommeil 100
^ C
$
Vous pouvez également appuyer sur Ctrl+Z (^Z) arrêtera l'exécution de la tâche, mais ne la mettra pas fin. Vous pouvez y penser plus comme une pause.
$ sommeil 100
^Z
[1]+ Sommeil arrêté 100
$
Notez que le shell vous indique le numéro du travail entre crochets lorsque vous l'arrêtez. Cela peut être utilisé avec d'autres commandes pour contrôler le travail. Par exemple, vous pouvez redémarrer une tâche en la mettant au premier plan à l'aide de fg :
$ fg %1
dormir 100
Vous pouvez utiliser une commande similaire pour redémarrer la tâche en arrière-plan :
$ bg %1
[1]+ sommeil 100 &
$
Cela rendra le contrôle à une invite, afin que vous puissiez continuer avec d'autres travaux pendant que le travail s'exécute. Si vous souhaitez qu'une tâche s'exécute en arrière-plan dès que vous la démarrez, ajoutez un & à la fin de la commande :
$ sommeil 100 &
[1] 61087
$
Dans ce cas, le shell imprime le numéro de la tâche entre parenthèses et le PID après.
L'une des commandes les plus utiles pour obtenir des informations sur les processus est top . Le programme affiche une vue interactive en temps réel des processus en cours d'exécution. C'est l'équivalent en ligne de commande de programmes graphiques tels que le moniteur système de GNOME ou le gestionnaire de tâches de Windows.
Vous pouvez démarrer le programme top avec la commande simple, top :
Une zone d'en-tête affiche la charge CPU et l'utilisation de la mémoire. En dessous, top affiche un tableau contenant un processus par ligne. Les détails incluent le PID, la quantité de puissance CPU disponible utilisée par le processus et le temps CPU total qu'il a consommé. Les informations sont actualisées automatiquement, toutes les trois secondes par défaut.
Il existe de nombreuses options et commandes interactives qui peuvent être utilisées pour modifier le comportement de top. Utilisez le haut homme commande pour en savoir plus :
Abréviation de état du processus , le ps La commande répertorie les processus. Différentes options permettent divers filtrages et ajustements des détails affichés. Par défaut, ps affiche les processus qui sont attachés à un terminal et qui ont été démarrés par l'utilisateur actuel. En d'autres termes, il s'agit principalement des commandes que vous avez tapées sur la ligne de commande.
Avec la tâche précédente toujours en arrière-plan, la sortie peut ressembler un peu à ceci :
$ ps
PID TTY TIME CMD
35564 ttys000 0:00.00 sommeil 100
73998 ttys000 0:00.43 -bash
Comme avec top, ps a de nombreuses options pour contrôler son comportement, et celles-ci peuvent être découvertes via man ps :
Deux des plus utiles, qui sont souvent combinés, sont -e et -f . Ils affichent respectivement les processus appartenant à tous les utilisateurs et des colonnes supplémentaires. Par exemple :
$ ps -ef
UID PID PPID C STIME TTY HEURE CMD
racine 1 0 0 2020 ? 00:11:22 /sbin/init
racine 2 0 0 2020 ? 00:00:00 [kthreadadd]
...
Les emplois La commande répertorie les tâches d'arrière-plan dans le shell actuel. Pour démontrer son utilisation, démarrez une tâche de longue durée en arrière-plan :
$ du -skh ~>/tmp/du.txt 2>/dev/null &
[1] 61167
Cette commande calcule l'espace disque total utilisé par votre répertoire personnel, en redirigeant sa sortie vers un fichier temporaire.
$ travaux
[1]+ Exécution du -skh ~> /tmp/du.txt 2> /dev/null &
Finalement, lorsque le travail est terminé, une ligne apparaîtra dans votre terminal semblable à :
[1]+ Sortie 1 du -skh ~> /tmp/du.txt 2> /dev/null
Si vous avez identifié un processus qui se comporte mal, vous devrez peut-être le tuer. Bien que cela semble drastique, le tuer La commande fait partie intégrante de la boîte à outils d'un administrateur système. Il peut envoyer n'importe lequel de plusieurs signaux, qui sont des notifications standard pour contrôler le comportement du processus. Certains signaux courants à envoyer sont SIGINT, SIGTSTP, SIGTERM et SIGKILL.
SIGINT équivaut à appuyer sur ^C. SIGTSTP équivaut à appuyer sur ^Z. SIGTERM et SIGKILL sont tous deux des moyens d'arrêter un processus. Le premier envoie une requête au processus, lui donnant une chance de s'arrêter proprement. Cette dernière méthode est une méthode plus extrême pour forcer un processus à s'arrêter et doit être utilisée en dernier recours.
La commande kill peut également fonctionner avec des tâches. Par exemple :
$ travaux
[1]+ Sommeil courant 100 &
$ tuer %1
[1]+ Terminé :15 sommeil 100
En savoir plus : Méthodes pour éliminer les programmes qui ne répondent pas sous Linux
Les processus et les emplois sont des concepts difficiles à saisir, en particulier la différence entre eux. Cependant, ils constituent l'un des premiers pas vers la compréhension de l'administration système sous Linux. Les travaux sont un moyen pratique d'exécuter simultanément différentes commandes à partir du shell.
Les processus sont un concept de niveau inférieur qui peut également être manipulé et sont au cœur de chaque programme qui s'exécute sur un ordinateur.