Chrooter apache
Matériel
Ajout disque dur
Ajout carte
Audit des disques durs
Gestion des peripheriques
Disquette d'installation
Ajout d'un scanner
Astuces
Ajout d'une imprimante
Réseau
Configuration reseau
Dns
Serveur cvs
Proxy squid 
Installation serveur ftp
Installation qmail 
Installation serveur courrier sous debian
Outil TCP/IP 
Le serveur samba
Connexion a distance securisee
Client/serveur vnc
Configurer apache
Dyndns
Installer un LAMP sous mandriva
Sécurité
Chiffrer un fichier/dossier
Securiser son poste
Mur pare feu pas a pas
Authentification ht-access
Surveillance de serveur CACTI
Snort
Snort-inline
Securiser Apache avec mod_security
Filtrage squid/squidguard/dansguardian
Auditer son site web
Sécuriser son linux
Installer un Lamp avec ssl
Contrer les scans de ports
Traitement anti-spam
Installer/Utiliser tripwire
Faire des sauvegardes incrémentales
Rsync
Nessus
Divers
Elisa, le multimédia facile
Utilisation de lilo
Les commandes Linux
Le multi-tache
Le crontab
Exploration de la configuration
Quotas
Messagerie
Installer une application
Debugger ses applications
Le format RPM
Mise a jour du noyau
Qemu
Tour d'horizon des principaux p2p
Récupération du système
Bips d'un pc
Astuces windows
Table Ascii
Lamerland
Conversion de fichiers musicaux
Compiler ses rpms
Graver en ligne de commande
Graver un fichier avi pour un dvd de salon
Récupérer des fichiers effacés
Liens
hakin9
Secureroot.com
Hackerthreads.org
Defcon
Hackerlounge
Les derniers exploits
Tous les codes sources
Securite sous Linux
Les logiciels libres quotidiens
Ezine divers
Madchat
Textes divers
Archives
 
Traductions LG
Toutes les traductions
Traductions Phrack
Toutes les traductions

Il y a actuellement 8 visiteurs connectés sur le site !

Google

Le multi-tâches sous Linux
Le multi-tâches sous Linux

 

Introduction
Passer un programme en tâche de fond
Gérer les processus
Faire le gendarme

 

Introduction:

Le multi-tâches sous Linux, c'est un pléonasme. Le multi-tâches sous Linux est loin d'étre une nouveauté, les systèmes inspirés d' Unix ont fait force d'implanter un multi-tâche performant ainsi que des outils de gestion puissants.
Ainsi si vous lancez un programme en tâche de fond vous pouvez le paramétrer, et ce à chaque instant, et lui accorder plus ou moins de ressources système selon ce que vous voulez faire pendant ce temps là.
Je pense que prendre l'exemple de l'utilisation de Seti@home en tâche de fond sera un bon exemple. Nous verrons comment placer une application en tâche de fond, gerer ses ressources, tuer le processus...
Bref, vous allez constater que lorsque l'on vous dit que Windows est multi-tâche c'est de la franche rigolade !!

Passer un programme en tâche de fond:

Les programmes lancés en même temps sont désignés sous Linux par le nom de processus.
Plusieurs processus sont déja lancés au démarrage de la machine et restent actifs ou sont mis en sommeil pendant que vous utilisez la machine, tout cela à l'insu de votre plein gré.
Pour faire passer un programme en tâche de fond dès son lancement il faut ajouter le caractère & à la suite du programme, par exemple :setiathome > /dev/null &Le système vous renvoie une ligne qui peut ressembler à ceci :[4] 14550Le chiffre entre crochet indique le nombre de tâches de fond en cours en ce moment.

Le programme Seti@home est donc placé dans le "4ème arrière plan". La seconde série de chiffres est le numéro d'identification de processus, pour arréter autoritairement ce programme par kill.
Vous devez faire attention aux instructions que j'ai placées à la suite de setiathome.
Ce programme écrit régulièrement son état sur l'écran et ce même en tâche de fond car passer un programme en tâche de fond revient à récupérer la ligne de commande pour faire autrechose.
Donc le programme continue de se servir de l'écran comme si de rien était, c'est pour cela que j'ai renvoyé la sortie sur l'écran vers le périphérique vide (/dev/null) à l'aide du caractère >. Pour contrôler l'état des programmes présents en arrière plan on utilise la commande ps à laquelle on peut ajouter le paramètre -u pour plus de details.
Voici le résultat :


la description des colonnes : USER
Ici c'est le propriétaire du processus, en fait la personne qui l'a lancé.
PID
Le numéro d'identification du processus qui est automatiquement attribué par Linux. Utile pur certaines actions sur le processus
%CPU
Le part de temps de calcul CPU utilisé par ce processus, plus le chiffre est important et plus le processus mobilise la puissance de l'ordinateur.
%MEM
Part de la mémoire totale occupée utilisée par le processus, en général pour un multitâches efficace il faut une quantité de mémoire quand même importante surtout si votre machine est utilisée comme serveur.
TT
Numéro du terminal ou de la console de laquelle a été lancé le processus. Utile pour un administrateur réseau pour dénicher le petit malin qui fait faire des calculs intensifs au système alors que les autres utilisateurs en ont besoin. Si vous utilisez les consoles virtuelles, cela vous permet de savoir sur laquelle vous avez lancé le processus.
STAT
C'est l'état du processus, des explications plus bas...
START
Heure à laquelle a été lancé le processus.
TIME
Temps réel de calcul accordé à la tâche.
COMMAND
La commande lancée pour le processus.

La colonne STAT peut prendre diverses valeurs, en voici la description :

D
Le processus est en état de sommeil qui ne peut étre interrompu
R
L'exécution est en cours
S
Comme Sleep, le processus est endormi.
T
Le processu est interrompu
Z
C'est un processus fantôme.

Notez que vous pouvez lancer ps avec u comme option et non -u car la communauté Linux fait évoluer le système et la syntaxe en même temps. C'est pour cela que Linux affiche un message qui indique que -u est en passe de devenir obsolète.

Gerer les processus:

Maintenant que vous savez placer vos processus en arrière plan il va falloir les gérer, les arréter ou modifier leurs priorités.
La première fonction à connaitre est sans nul doute celle d'arrêt d'un processus.
Cette commande s'appelle kill, la syntaxe en est la suivante :kill [numéro de signal] [pid du processus]Le numéro de signal peut prendre deux valeurs, celle par défaut est -15, vous n'avez pas besoin de l'entrer car elle est toujours attibuée quand on appelle kill sans paramètre.
Ce paramètre -15 demande au programme en arrière plan d'exécuter sa fermeture naturelle, c'est à dire terminer l'opération en cours, fermer ses fichiers correctement...
A l'inverse le paramètre -9 force le signal à se terminer immédiatement, c'est le recours ultime si le programme en tâche de fond est en boucle, les fichiers peuvent ne pas avoir étés fermés correctement...bref, c'est une solution brutale.
Le PID du processus est le numéro identifiant le processus dans la deuxième colonne du tableau résultant de la commande ps u.
Deux instructions permettent, elles, de gérer la position des processus qui sont soit au premier ou à l'arrière plan.
Ces instructions sont fg (foreground) et bg (background) :Ainsi si vous avez tapé mkfs -c /dev/fp0 & qui vérifie la présence de mauvais blocs en tâche de fond.
Quand vous lancez un processus, il vous est donné un un numéro d'ordre (1,2,3,4,...) ainsi que le PID, cette fois ci c'est le numéro d'ordre dont vous aurez besoin vous pouvez ramener ce processus à l'avant plan par :fg [numéro d'ordre]Ceci activera mkfs à l'avant plan et vous devrez attendre la fin de son exécution pour récupérer la main.
Cet outil est pratique lorsque par mégarde vous avez mis en tâche de fond un programme dans lequel vous deviez faire des choix ou répondre à des questions, ainsi vous pouvez le ramener au premier plan.
Il y a peu j'avais mis ici une section provisoire car je cherchais des informations à propos de ces deux commandes, j'ai eu des compléments d'information par un visiteur : fg/bg sont les commandes qui permettent de faire passer un programme au premier-plan, ou en arriere-plan.
Ainsi, si tu as lance un programme en arriere-plan (avec le &), tu peux le refaire passer au premier plan avec fg.fg est assez peu utilise en fait. Il est assez rare d'avoir a refaire passer au premier plan un programme (sauf si c'est un programme qui necessite une interaction avec l'utilisateur, mais dans ce cas, on le lance rarement en tache de fond).
Par contre, bg est plus utilise. Si par exemple tu as lance une grosse compression qui dure longtemps mais que tu as oublie le & pour qu'elle soit en tache de fond, tu peux la stopper avec Control-Z.
Ceci gelera le programme (il n'est pas arrete dans le sens "termine", il est seulement dans un etat gele).
Tu retrouveras alors ta ligne de commande. A ce moment là si tu tapes bg, le programme gelé passera en tache de fond. Donc il continuera a tourner, mais tu gardera ta ligne de commande.
Tu peux t'en assurer avec la commande "jobs", qui t'affiche l'etat des processus en arriere-plan.A l'heure des interfaces graphiques avec plein de fenetres, fg/bg/jobs sont de moins en moins utiles, mais sur une console, c'est très pratique.
Pour illustrer les possibilites de ces commandes, voici un exemple : mettons que tu veuilles éditer un fichier.
Tu tapes :$ vi toto.txt Tu te retrouves sous vi, et la tu as besoin de lire ton mail. Tu peux alors taper Control-Z dans ta fenetre vi. Ceci va immediatement stopper ton vi et tu vas revenir sur la ligne de commande.Tu peux ensuite lancer ton lecteur de mail :$ mailxTu es en train de lire tes mails et tu veux retourner a ton fichier toto.txt.
Tu tapes Control-Z dans ton lecteur de mail, et hop ! tu reviens en ligne de commande.La, si tu tapes "jobs", tu verras :$ jobs

[1]- Stopped vi toto.txt
[2]+ Stopped mailxTu peux relancer l'un ou l'autre de ces deux programmes avec fg suivi du numero de job de la commande (sachant que "fg" tout court lance le 1).Ainsi :$ fg 1Te remets sous vi, et dans l'etat dans lequel tu l'avais laisse. Tu peux refaire des Control-Z a tout moment, et revenir sous mailx ou relancer d'autres programmes.Comme tu le vois, sur une console, c'est tres puissant. Mais il est vrai que sur un PC moderne, tu peux ouvrir 2 xterm et lancer ton vi et ton mailx dans chacun d'eux.

Enlever lilo:

Pour supprimer l'armorcage par LILO, pour une raison X ou Y il faut utiliser un utilitaire du genre FDISK sous Dos qui va écrire sur ce secteur d'amorcage.
Une autre méthode plus "violente" que j'ai trouvée dans Le Système Linux chez O'Reilly consiste à utiliser les copies de sauvegardes du secteur d'amorcage que fait LILO lorsqu'il s'installe.
Une copie du secteur de boot du premier disque IDE est présente dans le fichier /boot/boot.0300, tandis que pour le premier disque SCSI c'est dans le fichier /boot/boot.0800 que cela se passe.
La commande dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1 copie les 446 premiers octets du fichier /boot/boot.0300 sur le secteur d'amorcage de /dev/hda.
Seuls les 446 premiers octets doivent étre copiés.MAIS ATTENTION, cela n'est utilisable qu'en dernier recours, il faut étre sur que ces fichiers contiennent bien les secteurs de boot désirés.
Voila pour la présentation générale de LILO, maintenant vous en avez les bases, vous savez à quoi il sert, comment il fonctionne et vous avez une idée des principes de configuration.
Maintenant je vous renvoie vers les HOW-TO pour aller plus loin car LILO a une quantitée d'options effarante...Bon courage :)

Faire le gendarme:

Sous Linux vous pouvez accorder plus ou moins de temps de calcul de l'ordinateur à une application, utile si par exemple vous avez un traitement d'image exigeant en calcul à réaliser rapidement sans pour autant vous empécher de découvrir E.T.
Pour cela il faut accorder des temps de calcul plus réduits au lancement de Seti@home, ceci peut étre fait par l'instruction nice : nice -n [niveau] [commande] Le niveau est un chiffre compris entre -20 et +19 (les niveau infèrieurs à 0 sont réservés à root), plus le chiffre est bas plus le programme concerné aura de temps de calcul, cela au détriment des autres programmes.
A l'inverse si vous jugez qu'un programme à besoin de moins de puissance par rapport aux autres, rien ne vous empêche de lui accorder un chiffre plus élevé.
Si vous lancez nice sans niveau particulier c'est la valeur +10 qui est utilisée par défaut.nice -n -20 setiathome > /dev/null &Permet d'accorder à Seti@home le maximum de ressources tout en le plaçant à l'arrière plan.
En principe vous devriez percevoir un ralentissement de votre système, les ressources étant allouée à un seul programme.
Si, par hasard, je désire appliquer un filtre compliqué dans GIMP, je peux modifier ces priorités par :renice +10 -p 664Ici le processus 664 (admettons que c'est le PID de Seti@home) voit sa priorité fixée à 10 et ce sans interrompre son fonctionnement, bien sur vous pouvez descendre les priorités en négatif.
Vous voila maitre dans l'art du multi-tâches, sèrieusement...vous pouvez constater que sous Linux le contrôle est beaucoup plus fin et puissant que sous Windows. Quand Microsoft nous fera la même chose il pourra nous vendre son produit sans tâches :-)

Sources de l'article


 

Blog
Le blog
La radio
La Radio
Boutique
La boutique du Geek
Php/Mysql
Formulaire en php
Administrer un serveur Mysql
Session en php
Gerer ses bases mysql
Les bases php
Securiser ses scripts PHP
Controler ses programmes avec RATS
Convertir une base sql en utf8
Astuces php
Le fichier php.ini
Programmation
Python rapide
Tutorial Python
Tutorial Perl
Tutorial Perl complet
Tutoriel ruby
Tutoriel C
Introduction à gawk
Filtres et utilitaires
Find
Programmation Shell
Ecriture de scripts bash
Expressions regulieres
Vi
Introduction a Javascript
Compiler avec gcc
Astuces en Bash
Cracking
Tutoriel Assembleur
Guide du cracking pour débutant
Assembleur
Manual Unpacking
Techniques de Protection
Différentes failles Web
Arp spoofing dans un réseau switché
Les intrusions
Les attaques externes
Defacage
Defacage complet
Buffer overflow
Netcat
Injection sql
Injection sql(suite)
John the Ripper
Spoofer un email
Utiliser google
La faille system
Usurper une identité
Le rooting
Shellcode sous Unix
La faille race condition
La faille xss
La faille xss (2)
Attaques sur un routeur
P2P
Azureus pas-a-pas
News
Lire les news de Linux-pour-lesnuls.com au format RSS
Distros
Gestion des paquets debian
101 commandes debian
Jeu
Webtarot
Graphisme
Effet neon dans GIMP
Effet vapeur dans GIMP
Cours fonctionnalités de GIMP
Redimentionner une image avec GIMP
Redimentionner une photo pour en faire un cadre avec gimp
Morphing avec gimp
Détourer avec gimp
Réduire le poids d'une image avec gimp
Caricature avec gimp
Humour
Ensemble
Divers