Bash linux 10 : Apprendre la gestion des processus

in utopian-io •  7 years ago  (edited)

Apprendre la gestion des processus

Introduction

This article is about process management in linux and some tools that allow us to manage running programs efficiently.

Qu'est ce que c'est?

Un programme est une série d'instructions qui commande l'ordinateur. quand on exécute un programme, ces instructions sont copiés dans la mémoire, un espace est alloué pour les variables et pour autres choses qui sont chargées de gérer l'exécution du programme.

Qu'est ce qui est exécuté actuellement?

Tout comme la majorité des systèmes d'exploitation, Linux est un système d'exploitation multitâche. Cela veut dire que plusieurs processus sont exécutés à la fois en plus du processus qu'on est entrain d'exécuter.Il est aussi possible que beaucoup d'utilisateurs sur le système exécutent des programmes au même temps et le système d'exploitation lui même exécute des processus différents pour tout gérer en général. Si vous voulez avoir un instantané de ce qui se passe au niveau du système on peut utiliser un programme nommé top.

top

ci-dessous, une version simplifiée de ce que vous devez voir quand vous exécutez ce programme.

user@bash: top
Tasks: 115 total, 2 running, 112 sleeping, 0 stopped
KiB Mem: 4070604 total, 3824228 used, 246376 free
Kib Swap: 2205476 total, 17932 used, 2187544 free
 
 PID USER %CPU %MEM COMMAND
6978 nick 0.1  21.2 Google Chrome
  11 root 0.3   0.0 rcu_preempt
6601 ryan 2.0   2.4 kwin
..
  • La ligne2 Tasks est un autre nom pour processus. Il est normal d'avoir des processus entrain de s'exécuter sur votre système à n'importe quel moment. La majorité seraient des processus du système. La majorité de ces processus sont en sommeil. Cela veut dire qu'ils attendent d'être déclenchés par un événement.
  • La ligne 3 des détails sur la (RAM). Ne vous inquiétez pas si une grande partie de votre mémoire est utilisée. Linux garde les programmes récemment utilisés dans la mémoire pour accélérer la performance s'ils sont exécutés à nouveau. Si un autre processus a besoin de cette mémoire. Ces programmes peuvent facilement être écrasés pour satisfaire cela.
  • La ligne 4 ce sont les détails de la mémoire virtuelle sur votre système. Si une grande partie de celle-ci est en usage, Vous devrez peut être penser à agrandir sa taille.
  • La **ligne 6 - 10 ** C'est une liste des processus avec les ressources les plus intensives sur le système. Cette liste sera en mise à jour continue. Les deux colonnes intéressantes sont la mémoire et l'usage du CPU. La volonté de USER montre à qui appartient le processus et la colonne PID identifie le processus ID qui est unique pour ce processus.

Un autre programme intéressant est ps qui veut dire processus. Ça vous permet de voir les processus exécutés sur votre terminal actuel. Si on ajoute l'argument aux alors une vue sur le système entier va être affiché ce qui est plus utile.

ps [aux]

Grep est utilisé avec ce programme pour filtrer uniquement les informations dont on a besoin. On va voir quelques exemples qui illustrent cela.

Arrêter un processus planté

Cela n'arrive pas souvent, mais quand un programme plante, cela devient embêtant. Supposons que notre navigateur est en cours d'exécution et que soudainement le navigateur s'est arrêté et que vous ne pouvez plus le fermer, car il ne répond plus. Vous n'avez plus à vous inquiéter car on peut arrêter(kill) le processus du navigateur firefox et le réouvrir. Pour ce faire, on a besoin d'identifier le id du processus.

user@bash: ps aux | grep 'Google Chrome'
nick 6978 8.8 21.2 2344096 945452 ? Sl 09:03 39:53 /usr/lib64/firefox/firefox
user@bash:

kill envoie un signal par défaut (1) au processus qui demande au processus de se fermer. Parfois cette méthode ne marche pas. Dans l'exemple ci-dessous on a exécuter ps encore une fois et il s'est avéré que le processus est toujours en cours d'exécution. Pour résoudre ce problème on va exécuter ps une nouvelle fois mais cette fois-ci en ajoutant un signal -9 qui veut dire forcer l'arrêt et s'assurer de ça.

user@bash: kill -9 6978
user@bash: ps aux | grep 'Google Chrome'
user@bash:

Mon Desktop(bureau) a planté

dans des cas particuliers, quand un processus plante, ça engendre une plantage de tout le Desktop, si c'est le cas on procède de la manière suivante:

Linux exécute plusieurs consoles virtuelles. La plupart du temps on ne voit que la console 7 qui est le GUI, toutefois, on peut facilement accéder aux autres. Si le GUI plante, on peut avoir accès à une autre console et forcer l'arrêt du processus déclenchant le plantage. **CTRL + ALT + F **< Console > , une fois sur l'autre console vous pouvez identifier le id du processus puis le forcer à s'arrêter. Puis CTRL + ALT F7 va vous permettre de retourner au GUI pour voir si cela est réglé. Il n'est pas vraiment sûr que cela se produit comme il le faut, parfois vous aurez à redémarrer votre ordinateur.

Les processus en avant-plan et en arrière-plan

Quand on exécute un programme normalement, celui-ci est exécuté en avant-plan, la majorité de ces programmes s'exécutent jusqu'au bout dan une fraction de seconde. Peut être on veut exécuter un programme qui va prendre un peu plus du temps sans notre intervention (traitement d'un grand fichier texte ou la compilation d'un programme par exemple). Pour faire cela, on exécute le programme en arrière-plan puis on continue à travailler. on va illustrer cela avec un programme appelé sleep . Sleep attend un certain nombre de secondes puis s'arrête. On peut aussi utiliser un programme appelé jobs qui liste les processus en cours d'exécution en arrière-plan.

jobs
user@bash: sleep 5

Si vous exécutez le programme ci-dessous, vous allez remarquer que le terminal prend 5 secondes avant de vous présenter l'invite de commande. Maintenant si on exécute la même commande mais en ajoutant à la fin un & alors on est entrain de dire au terminal d'exécuter le processus en arrière-plan.

user@bash: sleep 5 &
[1] 6308
user@bash:
user@bash:
[1]+  Done   sleep 5

Cette fois-ci, vous allez remarquer qu'un numéro de job est attribué au processus. On peut continuer à faire d'autres tâches pendant que le processus est exécuté en arrière-plan. Si vous attendez 5 secondes puis vous appuyer sur ENTER, vous allez voir un message s'afficher vous disant que le travail a été fait avec succès.

On peut déplacer jobs entre l'avant-plan et l'arrière-plan. Si vous appuyer sur CTRL +z alors le processus qui est exécuté en avant-plan va être arrêté et va être déplacé vers l'arrière-plan. On peut utiliser un programme nommé fg qui se charge de déplacer les processus vers l'avant-plan.

fg <numero de job>
user@bash: sleep 13 &
[1] 6311
user@bash: sleep 12
(appuyer sur CTRL + z, l invite de commande vous présente à nouveau)
user@bash: jobs
[1]- Running sleep 13 &
[2]+ Stopped sleep 12
user@bash: fg 2
[1] Done sleep 13
user@bash:



Posted on Utopian.io - Rewarding Open Source Contributors

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Je viens de te découvrir et ça a l'air top ce que tu fais ! J'avais un examen Linux que j'ai raté l'année passée et que je vais devoir repasser cette année. J'espère que tes tutoriels vont m'aider à mieux comprendre la matière parce que le cours qu'on a est vraiment pas bon...

Merci mille fois pour ces tutos, je lirai ça quand j'ai le temps !

Merci beaucoup :) Et bonne chance pour tes exams :p si tu as des problèmes n'hésite pas à me contacter ;)

Super article ! Je trouve ça bien de parler de Linux, trop peu de gens le font su Steem.

Merci beaucoup :)

Congratulations @raptorjesus! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

You made your First Comment
Award for the number of upvotes

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

Thank you for the contribution. It has been approved.

You can contact us on Discord.
[utopian-moderator]

Hey @raptorjesus I am @utopian-io. I have just upvoted you!

Achievements

  • You have less than 500 followers. Just gave you a gift to help you succeed!
  • Seems like you contribute quite often. AMAZING!

Suggestions

  • Contribute more often to get higher and higher rewards. I wish to see you often!
  • Work on your followers to increase the votes/rewards. I follow what humans do and my vote is mainly based on that. Good luck!

Get Noticed!

  • Did you know project owners can manually vote with their own voting power or by voting power delegated to their projects? Ask the project owner to review your contributions!

Community-Driven Witness!

I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!

mooncryption-utopian-witness-gif

Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x