Vous êtes sur la page 1sur 27

9

Les processus
Objectifs

Comprendre la notion de processus et de signaux Apprendre grer le multitche Administrer les processus de sa session Comprendre quelques notions avances du systme

lments techniques abords


Les commandes
ps, kill, nice, renice, fuser, nohup fg, bg, jobs crontab, at stty

Les rpertoires
/var/spool/at, /var/spool/cron /var/spool/cron/atjobs, /var/spool/cron/crontabs

Les chiers
/etc/cron.allow, /etc/cron.deny /var/adm/cron/cron.allow, /var/adm/cron/cron.deny /etc/at.allow, /etc/at.deny /var/adm/cron/at.allow, /var/adm/cron/at.deny /etc/inittab, /etc/inetd.conf

Le systme UNIX est multitche, cest--dire que chaque utilisateur peut excuter simultanment plusieurs logiciels. Ces tches, galement appeles processus, correspondent lensemble des logiciels actifs dans le systme. Apprendre les administrer, cest apprendre grer lactivit du serveur.

2004 - Pearson Education France

276 Utilisation

9. 1 Principe
Chaque nouvelle commande saisie par un utilisateur sexcute dans son environnement propre, hrit de celui du shell partir duquel elle a t lance. Cela sapplique toutes les commandes externes, mais pas aux builtins qui sexcutent dans lenvironnement du shell mme. Cette notion de logiciel autonome en cours dexcution est dsigne par le terme tche ou processus. Quand le logiciel est termin, le processus nexiste plus. Le systme UNIX identie chaque processus grce un numro unique, son PID (Process IDentication). Chaque processus possde un propritaire rfrenc par un UID : il sagit de lutilisateur qui a excut la commande, sauf dans le cas des commandes possdant un SUID-bit pour lequel le propritaire du processus est celui de la commande. Chaque processus a galement un processus pre, rfrenc par un numro PPID (Parent Process IDentication), qui est celui partir duquel il a t lanc, et dont il est le ls. son tour, chaque processus ls peut engendrer un autre processus dont il sera le pre. Lensemble des processus forment une hirarchie de processus pres et de processus ls.

9. 2 La hirarchie des processus


Au dmarrage du systme, le processus init est excut, il porte le PID numro 1. Son rle est de lancer lexcution des sous-systmes, comme les systmes de chiers, le rseau, etc. Chaque sous-systme va son tour activer des logiciels qui vont prendre en charge des fonctionnalits prcises du systme UNIX, jusqu arriver au shell de lutilisateur. La gure 9.1 prsente cette arborescence de processus. Les processus tels que imapd ou telnetd sont des services qui sexcutent en permanence et qui rpondent la demande dun client. Par exemple, chaque fois quun utilisateur se connecte par telnet, le processus telnetd rpond au client qui est excut sur le poste distant (telnet ou putty), et active un shell pour crer une nouvelle connexion. Cette notion de processus actif en permanence se nomme un dmon (daemon en anglais). Le nom du dmon correspond gnralement celui du service quil rend, et se termine souvent par d : on a par exemple telnetd pour le service telnet, ftpd pour le service ftp, httpd pour le service http. Ces services sont gnralement grs par un super-dmon , inetd. Son rle est de crer un nouveau dmon chaque fois que le prcdent est attribu un client. Ainsi, chaque nouvel accs par telnet gnre un nouveau telnetd. Lensemble des processus appartiennent root, sauf ceux qui dcoulent des shells crs lors dune connexion. Chaque utilisateur est propritaire de son shell initial et des autres processus dont il est le pre.

2004 - Pearson Education France

Les processus 277

init

2501

syslogd

2910

nfsd

1352

inetd

Systme

14214

popper

21238

telnetd

22107

telnetd

10323

imapd

Utilisateur

92123

bash

92504

ksh

Figure 9.1 Arborescence de processus pres et ls.

9. 3 La communication interprocessus : les signaux


Les processus peuvent communiquer entre eux. Ils peuvent galement tre contrls durant leur excution. La communication entre les processus passe par des signaux quils schangent. La rception dun signal est un vnement non prvisible, un peu comme lorsquune personne en train de travailler est subitement interrompue par un collgue. Toutefois, des actions sont prdnies pour chaque signal possible : sans que cela soit programm, on pourra, par exemple, arrter un programme avec la combinaison de touches CTRL+C. Le tableau 9.1 prsente les principaux signaux avec leur numro. Certains correspondent des combinaisons de touches tapes au clavier.

Attention
Un signal peut avoir un numro diffrent selon le systme dexploitation. Ainsi, SIGTSTP porte le numro 20 sous Linux et le numro 18 sous AIX. Pour les signaux dont le numro est dpendant du systme, il faut privilgier lutilisation du nom du signal plutt que celle du numro dans les commandes qui le permettent.

2004 - Pearson Education France

278 Utilisation

Tableau 9.1 Liste des signaux Nom du signal SIGHUP SIGINT SIGQUIT SIGILL SIGTRAP SIGABRT SIGEMT SIGFPE SIGKILL SIGBUS SIGSEGV SIGSYS SIGPIPE SIGALRM SIGTERM SIGURG SIGSTOP SIGTSTP SIGCONT SIGCHLD SIGTTIN SIGTTOU SIGUSR1 SIGUSR2 Numro(s) 1 2 3 4 5 6 7 8 9 10, 7 11 12 13 14 15 16, 23, 21 17, 19, 23 18, 20, 24 19, 18, 25 20, 17, 18 21, 26 22, 27 30, 10, 16 31, 12, 17 Interprtation Dconnexion du terminal. Interruption depuis le clavier (CTRL+C). Demande "Quitter" depuis le clavier (CTRL+\). Instruction illgale. Point darrt rencontr. Signal darrt depuis abort(). Instruction EMT. Erreur mathmatique en virgule ottante. Signal "KILL". Erreur de bus. Erreur mmoire (violation de segment mmoire). Appel systme avec de mauvais arguments. criture dans un tube, sans lecteur. Temporisation de lalarme coule. Signal de n. Condition urgente sur communication des sockets. Arrt du processus. Ne peut tre inhib ni ignor. Stop depuis le clavier (CTRL+Z). Continuer le processus si arrt. Ne peut tre inhib ni ignor. Processus ls termin ou arrt. Lecture du terminal en arrire-plan. criture du terminal en arrire-plan. Signal utilisateur numro 1. Signal utilisateur numro 2.

2004 - Pearson Education France

Les processus 279

Les signaux permettent de contrler le droulement dun processus. On peut par exemple empcher de linterrompre en inhibant le signal dinterruption (SIGINT), ou en excutant une action particulire lors de la rception dun signal donn. Cest la commande trap, dj vue au chapitre 8, qui active ou dsactive le programme associ au signal. Si une action vide est associe, le signal na plus aucun effet, ce qui linhibe. Certains signaux comme SIGKILL ne peuvent tre inhibs, ce qui assure que lon pourra toujours tuer un processus. Voici quelques exemples de lutilisation de la commande trap sous Linux. La premire syntaxe afche la liste des signaux avec leur nom.
$ trap -l 1) SIGHUP 5) SIGTRAP ... 2) SIGINT 6) SIGABRT 3) SIGQUIT 7) SIGBUS 4) SIGILL 8) SIGFPE

La commande suivante associe la commande echo au signal SIGINT (numro 2), qui correspond la combinaison CTRL+C. Comme lassociation est permanente durant la session de travail, chaque utilisation de cette combinaison de touches afche le message argument de la commande echo. $ trap 'echo Interruption par CTRL+C' 2 $ ^C Interruption par CTRL+C La commande suivante associe la commande vide au signal SIGINT (numro 2), ce qui inhibe la combinaison de touches CTRL+C : $ trap '' 2 Le programme suivant montre leffet de la suppression du signal numro 2 (commande ci-dessus). Il utilise une boucle while innie qui afche des valeurs entires successives. Normalement, la combinaison CTRL+C devrait pouvoir arrter cette boucle mais cela ne fonctionne plus car le signal numro 2 est inhib. Le processus en cours nest plus interruptible par CTRL+C. Mais il peut toujours tre suspendu par le signal SIGTSTP mis par la combinaison CTRL+Z. $ i=0 $ while true > do > i=`expr $i + 1` > echo "--- $i ---" > sleep 4 > done --- 1 -- ^C--- 2 --# CTRL+C na plus deffet. --- 3 -- ^Z # frappe de CTRL+Z [1]+ Stopped sleep 2

2004 - Pearson Education France

280 Utilisation
La commande kill tue dnitivement le processus arrt. La syntaxe %1 correspond la numrotation du processus dans la liste des processus darrire-plan (voir paragraphe suivant), ce nest pas le PID du processus. $ kill %1 [1]+ Terminated
sleep 2

Enn, la dernire syntaxe ractive le signal 2 avec un comportement normal. Lassociation des touches CTRL+C est de nouveau possible. La commande compose est crite sur une seule ligne, les ; sparent les instructions lmentaires : $ trap 2 $ while true; do i=`expr $i + 1`; echo "--- $i ---"; sleep 4; done --- 4 -- --- 5 -- ^C # Arrt de la boucle. $

9. 4 Gestion des processus interactifs, avant-plan et arrire-plan


Quand un utilisateur excute une commande interactive, il doit attendre quelle soit termine pour pouvoir en excuter une autre au niveau dune mme fentre de terminal. Cest le fonctionnement normal du shell, qui excute par dfaut les tches en avant-plan (foreground). Il est possible dviter le blocage de la ligne de commandes en lanant directement la tche en arrire-plan (background). Dans ce cas, le processus sexcute sans bloquer linvite de commande, et lutilisateur peut saisir une nouvelle commande sans attendre la n de la premire. Le nombre de processus en arrire-plan nest pas limit, alors quil ne peut y avoir quun seul processus en avantplan. Le lancement dune ligne de commandes en arrire-plan utilise le signe & la n de la ligne. Voici un exemple de deux syntaxes qui accomplissent la mme action. La premire est excute en avant-plan, la seconde utilise le signe &, elle est lance en arrire-plan : $ find /tmp print > trace.tmp $ find /tmp print > trace.tmp & Au lancement de la premire syntaxe, lutilisateur doit attendre la n du traitement, qui peut tre long. La seconde syntaxe excute la commande en parallle et afche immdiatement linvite de saisie. Quelle que soit la syntaxe utilise, les tches sont interactives ; il est donc prfrable de ne pas lancer en arrire-plan des commandes qui afchent une information lcran, sinon la saisie de nouvelles commandes sera perturbe par le rsultat de celles qui se droulent en parallle. Dans lexemple prsent, lafchage est redirig vers un chier trace.tmp pour viter linterfrence avec lafchage des nouvelles commandes.

2004 - Pearson Education France

Les processus 281

Attention
Dans le chapitre prcdent, nous avons voqu la variable denvironnement TMOUT. Il est important de rappeler quune commande en background nest pas considre comme une activit pour le terminal. Si la commande est plus longue que ce quautorise le time-out, la commande sera arrte avant son terme, au moment o le terminal sera stopp (arrt du processus associ).

Il est toujours possible de faire basculer une tche davant en arrire, et vice-versa, avec les commandes fg (pour foreground) et bg (pour background). Pour passer en arrire-plan une tche lance en avant-plan, il faut tout dabord la suspendre sans larrter, avec la combinaison CTRL+Z. Dans lexemple suivant, on excute une commande de recherche des chiers et des rpertoires orphelins (sans propritaires) dans toute la hirarchie. La commande est tout dabord lance en avant-plan, puis elle est suspendue au bout de quelques secondes : $ find / -nouser -print > /tmp/liste.nouser ^Z [1]+ Stopped find / -nouser -print >/tmp/liste.nouser La commande bg, reprend lexcution en arrire-plan : $ bg [1]+ find / -nouser -print >/tmp/liste.nouser & La commande jobs conrme que la commande continue son excution : $ jobs [1]+ Running
find / -nouser -print >/tmp/liste.nouser &

La commande fg passe la commande en avant-plan, ce qui rend nouveau la saisie impossible. La commande est arrte avec CTRL+C. $ fg find / -nouser -print >/tmp/liste.nouser ^C $

noter
Les commandes fg et bg peuvent tre saisies avec, en argument, le numro du processus grer. Cela se justie dans le cas o plusieurs processus se trouvent en arrireplan. La syntaxe devient alors : $ fg %2 $ bg %2 si le numro 2 correspond la numrotation fournie par la commande jobs du processus administrer.

2004 - Pearson Education France

282 Utilisation
Les combinaisons de touches CTRL+C et CTRL+Z sont associes aux signaux SIGINT et SIGTSTP. La commande stty, avec loption -a, afche les signaux de contrle des processus, associs des combinaisons de touches, comme intr et susp : $ stty -a speed 9600 baud; 50 rows; 136 columns; eucw 1:1:0:0, scrw 1:1:0:0: intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = ^@ eol2 = ^@; start = ^Q; stop = ^S; susp = ^Z; dsusp = ^Y; reprint = ^R ... La commande de recherche aurait pu tre excute directement en arrire-plan avec la syntaxe : $ find / -nouser -print > /tmp/liste.nouser &

9. 5 Gestion des processus


Nous avons prsent jusquici la gestion des processus particuliers, savoir ceux qui sont rattachs la connexion de lutilisateur. Cette gestion sappuie sur des combinaisons de touches particulires telles que CTRL+C et CTRL+Z. Il sagit dune mthode de gestion qui ne peut sappliquer quaux processus interactifs, non lensemble des processus. La gestion de tous les processus actifs, interactifs ou non, sappuie sur la commande kill. Celle-ci envoie des signaux au processus dont le PID est fourni. Les informations ncessaires cette commande sont gnralement obtenues avec la commande ps. Chaque utilisateur peut administrer ses processus, et ladministrateur root gre tous les processus du systme, y compris ceux des utilisateurs. Il pourra, par exemple, dconnecter un utilisateur en tuant le processus associ son login shell, ce qui aura pour effet de terminer galement tous les processus ls qui y sont rattachs. Enn, les processus peuvent tre excuts en diffr, hors connexion. Cest la mthode applique couramment pour les traitements comme le nettoyage du rpertoires /tmp ou pour le traitement des statistiques de connexion, qui se droulent la nuit. Les principales commandes qui prparent le travail diffr sont crontab et at.

9.5.1 Les commandes


Les principales commandes de gestion des processus sont les suivantes : ps Afche les informations sur les processus. kill Envoie un signal un ou plusieurs processus. fuser Gre les processus attachs un rpertoire. nice et renice Ces deux commandes changent les priorits des processus. nohup Lance un processus qui ne sera pas tu la dconnexion. crontab Dnit la liste des tches diffres excuter rgulirement. at Permet dexcuter une commande en diffr.

2004 - Pearson Education France

Les processus 283

9.5.2 Afchage des processus : la commande ps


La commande ps afche les informations sur les processus actifs. Par dfaut, elle prsente la liste des processus attachs la connexion. Voici le rsultat de cette commande quand elle est saisie sans argument sur un systme Linux : [martin@abricot martin]$ ps PID TTY TIME CMD 8465 pts/1 00:00:00 bash 8512 pts/1 00:00:00 ps Linterprtation des colonnes afches est la suivante : PID : numro du processus. TTY : numro de ligne de communication associe au processus. TIME : temps total dexcution du processus. CMD : commande associe au processus. la commande ps sont associes des options qui permettent dafcher davantage dinformations. Les principales sont les suivantes : -l Afche des informations plus compltes sur les processus. Elle prsente des colonnes supplmentaires :
UID : numro UID de lutilisateur. PPID : numro du processus pre. PRI : niveau de priorit du processus. Plus le nombre est grand, plus la priorit est faible. NI : valeur de gentillesse traite par la commande nice, qui sert calculer la

priorit. Une valeur positive indique un accs moindre aux ressources du processeur.
S : tat du processus. La lettre S indique que le processus dort (Sleeping), R ou A prcise quil est en excution (Running sous Linux ou Active sous AIX), W indique quil est en mmoire de swap (Swapped). Les autres symboles diffrent selon les systmes.

-f Afche des informations un peu moins compltes que loption -l, mais plus lisibles. LUID fait apparatre le nom de login la place du numro, la colonne CMD indique la syntaxe complte de la commande avec le prxe - pour les login shell, et elle afche une colonne supplmentaire :
STIME : heure de dbut du processus. -a -e

Afche les processus des autres utilisateurs. Afche la liste de tous les processus, sauf ceux du noyau.

-u Afche les informations sur lutilisateur dont le nom est spci. Une liste de noms peut tre fournie. $ ps -u martin,dupont

2004 - Pearson Education France

284 Utilisation
-t Afche les informations sur les processus associs un terminal. Une liste de noms peut tre fournie. $ ps -t console,pts/1 -o Permet de slectionner le format dafchage dans lordre voulu selon une liste de mots cls prdnis, qui peuvent varier dun systme lautre, mais dont les principaux sont :
user : nom de lutilisateur. group : nom du groupe de processus (gnralement le groupe de lutilisateur). uid : numro de lutilisateur. gid : numro du groupe de processus. Pid : numro du processus. ppid : numro du processus pre. command : nom de la commande. tty : nom de la ligne du terminal. nice : valeur gre par la commande nice. Time : temps cumul du processus.

Les lignes de commandes suivantes montrent le rsultat de ces options. La premire commande afche la liste de processus de lutilisateur connect, martin, dont lUID est 524, avec des informations abondantes pour chaque processus : [martin@abricot F S UID PID 4 S 524 8465 0 R 524 8513
martin]$ ps -l PPID C PRI NI ADDR SZ WCHAN 8464 0 73 0 663 wait4 8465 0 77 0 915 TTY pts/1 pts/1 TIME CMD 00:00:00 bash 00:00:00 ps

Lutilisation de loption -f donne des informations plus lisibles. Le nom de lutilisateur apparat et la syntaxe -bash prcise quil sagit dun shell de connexion : [martin@abricot UID PID martin 8465 martin 8514
martin]$ ps -f PPID C STIME TTY 8464 0 13:35 pts/1 8465 0 13:37 pts/1 TIME CMD 00:00:00 -bash 00:00:00 ps -f

Loption -e afche tous les processus. Si lafchage est ltr par la commande grep avec largument martin, seuls les processus de martin apparaissent. Lafchage montre que cet utilisateur est connect deux fois : la premire connexion est une session bash, la seconde est une connexion ftp travers le dmon proftpd. [martin@abricot martin]$ ps -ef|grep martin root 8464 8463 0 13:35 ? 00:00:00 login -- martin martin 8465 8464 0 13:35 pts/1 00:00:00 -bash martin 8511 2002 0 13:36 ? 00:00:00 proftpd: martin - cisco ppp15.crip.univ6.fr: IDLE

2004 - Pearson Education France

Les processus 285

martin martin

8515 8516

8465 8465

0 13:37 pts/1 0 13:37 pts/1

00:00:00 ps -ef 00:00:00 grep martin

Loption -u afche tous les processus de martin et conrme la double connexion : [martin@abricot martin]$ ps -u martin PID TTY TIME CMD 8465 pts/1 00:00:00 bash 8511 ? 00:00:00 proftpd 8517 pts/1 00:00:00 ps Avec les informations fournies par loption -f de la commande ps, il est possible de remonter la hirarchie des processus du login shell de martin jusquau processus initial, init. Pour cela, il faut commencer par le processus pre du login shell : [martin@abricot UID PID martin 8465 martin 8563
martin]$ ps -f PPID C STIME TTY 8464 0 13:35 pts/1 8465 0 13:40 pts/1 TIME CMD 00:00:00 -bash 00:00:00 ps f

Le pre du processus bash (8465) de martin est le numro 8464. Il faut ensuite trouver ce numro parmi tous les processus du systme : [martin@abricot root 8464 martin 8465 martin 8565
martin]$ ps -ef|grep 8464 8463 0 13:35 ? 00:00:00 login -- martin 8464 0 13:35 pts/1 00:00:00 -bash 8465 0 13:40 pts/1 00:00:00 grep 8464

Cest le processus login, dont le PID est 8464 et qui possde comme pre le processus 8463. La recherche du nom du processus pre suit le mme raisonnement. [martin@abricot martin]$ ps -ef|grep 8463 root 8463 1533 0 13:35 ? 00:00:00 telnetd -a none root 8464 8463 0 13:35 ? 00:00:00 login -- martin martin 8567 8465 0 13:41 pts/1 00:00:00 grep 8463 Cest le processus telnetd, dont le PID est 8463 et qui possde comme pre le processus 1533. La dernire recherche montre que ce numro correspond xinetd, dont le pre est init (processus numro 1). [martin@abricot martin]$ ps -ef |grep 1533 root 1533 1 0 Mar01 ? 00:00:00 xinetd -stayalive -reuse -pidfile /var/run/xinetd.pid ... En rsum, lenchanement des processus pres et ls qui a abouti la connexion de martin est le suivant : init (1) xinetd (1533) telnetd (8463) login (8464) bash (8465).

2004 - Pearson Education France

286 Utilisation
Enn, lutilisateur peut dnir lui-mme le format dafchage de la commande ps avec loption -o. En voici un exemple : $ ps -o user,group,uid,gid,pid,ppid,command USER GROUP UID GID PID PPID COMMAND martin 600 524 600 8465 8464 -bash martin 600 524 600 8952 8465 ps -o user,group,uid,gid,pid,ppid,command

9.5.3 Envoi de signaux : la commande kill


La commande kill envoie un signal aux processus actifs. Le numro du signal et le PID du processus sont indiqus sur la ligne de commandes. Si aucun numro de signal nest prcis, cest SIGTERM (15) qui est envoy. Ce signal tue les processus, sauf ceux qui linterceptent. Pour ces processus, il faut envoyer explicitement le signal SIGKILL (9), qui ne peut tre intercept. Ladministrateur root peut arrter tous les processus avec la commande kill. Les autres utilisateurs ne peuvent grer que les processus dont ils sont propritaires. Les diffrentes syntaxes de cette commande sont : $ kill num_signal pid1 pid2 ... $ kill s num_signal pid1 pid2 ... $ kill l o num_signal est le numro ou le nom du signal envoyer, et pid1, pid2, sont les numros des processus vers lesquels envoyer le signal. Les PID des processus sont obtenus avec la commande ps. La commande kill avec loption -l afche la liste et le nom des signaux qui peuvent tre administrs. Elle quivaut la commande trap -l. La commande suivante envoie le signal numro 9 (SIGKILL) au processus bash de martin, dont le numro est 8465 dans lexemple prcdent : $ kill 9 8465 Cette commande provoque la dconnexion de martin, ainsi que larrt de tous les processus initis par son login shell. Seuls martin et root ont les droits sufsants pour effectuer cette action. Cest le signal 9 qui est le plus employ avec kill car, dans le cadre de la gestion des processus, cette commande sert souvent les arrter. La gestion interactive (suspendre, reprendre, passer en avant-plan) est plutt ralise laide des touches de contrles, mthode prsente prcdemment. Les diffrentes valeurs de largument PID sont les suivantes : n Si n est un nombre positif, il indique le PID du processus. La commande suivante tue les processus 2285 et 2076 : $ kill -9 2285 2076

2004 - Pearson Education France

Les processus 287

0 Le signal est envoy tous les processus qui appartiennent au mme groupe de processus que celui de lmetteur. La commande ci-aprs tue tous les processus de la session actuelle et dconnecte lutilisateur qui la saisit : $ kill -kill 0 -1 Le signal est envoy tous les processus dont le propritaire est le mme que le processus metteur (ne pas confondre avec le processus 1, init). La commande qui suit tue tous les processus appartenant lutilisateur qui saisit cette commande. Toutes ses sessions sont termines. $ kill -kill 1 %n Le signal est envoy au nime processus de la liste afche par la commande jobs : $ jobs [1]- Stopped [2]+ Stopped $ kill %2 [2]+ Terminated
sleep 5 sleep 10 sleep 10

Les diffrentes valeurs de largument signal sont : n Indique un numro de signal prdni. $ kill -9 2285 nom Indique le libell du signal. Ce nom peut avoir la forme SIGKILL, SIGTERM, etc., ou encore kill, term, etc. Attention, certains systmes nacceptent pas les deux formes. $ kill kill 8465 $ kill SIGKILL 8465
# pour Linux

0 Le signal nest pas envoy. La commande vrie seulement lexistence du processus. $ kill -0 2222 -bash: kill: (2222) - No such process Voici un exemple dutilisation de la commande kill. Deux tches darrire-plan sont lances : une boucle while et une commande find. Dans les deux cas, lafchage est redirig vers /dev/null (la poubelle !), de faon ne conserver lcran que le rsultat des saisies. La premire commande compose (while) est excute en arrire-plan : [martin@abricot martin]$ while true > do > echo "essai">/dev/null > done & [1] 18044

2004 - Pearson Education France

288 Utilisation
La seconde commande (find) est ensuite lance : [martin@abricot martin]$ find / -print 2>/dev/null 1>/dev/null & [2] 18045 La commande ps afche la liste de tous les processus. Le second -bash correspond la boucle while ; il possde le mme pre (18004) que la commande find. Ce pre est le shell de login. [martin@abricot martin]$ ps -f UID PID PPID C STIME TTY martin 18004 18003 0 07:07 pts/1 martin 18044 18004 99 07:08 pts/1 martin 18045 18004 8 07:08 pts/1 martin 18046 18004 0 07:08 pts/1
TIME 00:00:00 00:00:18 00:00:00 00:00:00 CMD -bash -bash find / -print ps -f

Les deux processus lancs en tche de fond sont arrts avec la commande kill : [martin@abricot martin]$ kill -kill 18045 18044 [1]- Killed while true; do echo "essai" >/dev/null; done [2]+ Killed find / -print 2>/dev/null >/dev/null

noter
Il existe une commande, xkill, taper au niveau du prompt, qui permet darrter lexcution dun programme graphique juste en cliquant sur la fentre de ce logiciel, sans avoir besoin de rcuprer le numro de processus. Cette commande propose, la place du curseur de la souris, une petite cible placer sur la fentre graphique du logiciel que lon veut stopper. Il suft ensuite de cliquer avec le bouton gauche de la souris.

9.5.4 Gestion des processus attachs aux rpertoires : la commande fuser


La commande fuser permet dadministrer les processus qui sont attachs un rpertoire particulier. Les administrateurs y ont recours quand ils souhaitent, par exemple, dmonter un systme de chiers (umount), et que laction est refuse car un processus accde ce systme. Pour effectuer le dmontage, il faut dabord tuer les processus bloquants, mais rien nindique quels sont les processus fautifs, sauf la commande fuser, qui trouve tous les processus attachs au systme de chiers. Par dfaut, cette commande afche les numros de processus (PID) qui utilisent les chiers ou les systmes de chiers indiqus en argument. Les options sont trs diffrentes selon les systmes UNIX. La plus courante est -k, qui tue les processus. Seul root peut tuer les processus des autres utilisateurs, mais cette commande est surtout utilise par ladministrateur.

2004 - Pearson Education France

Les processus 289

Attention
La commande fuser nest pas range dans le mme rpertoire selon le systme UNIX. Elle se trouve dans /sbin sous Linux, et dans /etc sous AIX. Laccs la commande peut chouer si la variable PATH ne contient pas ces deux rpertoires. Pour rsoudre le problme ventuel, il suft de taper : PATH=$PATH:/sbin:/etc

Un sufxe apparat la suite du numro du processus. Il indique le type daccs du processus et peut prendre les valeurs suivantes : c Accs au rpertoire courant. e Accs un programme en cours d'excution. r Accs au rpertoire racine. m ou s Accs un chier en mmoire ou une bibliothque partage. Voici un exemple qui illustre lemploi de cette commande sur un systme AIX. Ladministrateur root veut librer le rpertoire /home/durand de tous les processus qui y sont attachs. La premire commande afche les processus : admin(root) $ fuser /home/durand /home/durand: 602332c 1110140c 1736922c Dans cet exemple, tous les processus sont ceux de durand, qui est connect : admin(root) $ ps -aef|grep durand durand 602332 1581078 0 17:57:56 pts/0 0:01 -ksh durand 1110140 1822840 0 18:02:03 pts/1 0:01 -ksh durand 1736922 135278 0 17:54:48 - 0:00 ftpd -l root 1847490 1138898 0 18:07:23 pts/2 0:00 grep durand La commande fuser avec loption -k arrte tous les processus : admin(root) $ fuser -k /home/durand /home/durand: 602332c 1110140c 1736922c

9.5.5 Changement des priorits : les commandes nice et renice


La commande nice lance lexcution dune commande avec une priorit plus faible ou plus forte. Elle dnit une valeur de gentillesse initialement positionne 0 ou 20 selon les systmes. Plus cette valeur est leve, plus le processus sera gentil vis-vis des autres. Chaque utilisateur peut diminuer la priorit de ses processus (augmenter sa gentillesse), mais seul root peut laugmenter (diminuer la gentillesse). Les diffrentes syntaxes de cette commande sont : $ nice commande $ nice -incrment commande $ nice -n incrment commande

2004 - Pearson Education France

290 Utilisation
o : commande est la ligne de commandes excuter. Cest la syntaxe complte avec tous ses arguments. incrment est lajustement de la valeur de gentillesse. Si incrment nest pas prcis, il est de 10 ; la valeur de gentillesse est augmente dautant et la priorit du processus est plus faible. Si lajustement est ngatif (rserv root), la gentillesse dcrot et la priorit augmente. Voici un exemple dexcution de la commande nice sous Linux. Elle excute un script shell de recherche des chiers orphelins . Celui-ci sappuie sur la commande find, qui parcourt le rpertoire dont le nom est fourni au script par la ligne de commandes. [martin@abricot martin]$ cat recherche_nouser find $1 -nouser -print 2>/dev/null 1>/tmp/trace.nouser La commande nice excute le script avec largument /tmp, et un incrment de 15. La commande est excute en arrire-plan. [martin@abricot martin]$ nice -n 15 ./recherche_nouser /tmp & [1] 18305 La commande ps -l fait apparatre la valeur de gentillesse 15 pour la commande find et le script shell (sh). La priorit de ces deux commandes est plus faible que les autres qui ont une valeur de gentilles (colonne NI) de 0 (valeur par dfaut sous Linux). [martin@abricot F S UID PID 4 S 524 18103 0 S 524 18305 0 R 524 18306 0 R 524 18307
martin]$ ps -l PPID C PRI NI 18102 0 75 0 18103 0 77 15 18305 78 78 15 18103 0 74 0 ADDR SZ 666 611 493 915 WCHAN wait4 wait4 TTY pts/1 pts/1 pts/1 pts/1 TIME 00:00:00 00:00:00 00:00:02 00:00:00 CMD bash sh find ps

La commande renice complte la commande prcdente. Elle change la valeur de gentillesse dun processus actif. Voici les syntaxes de cette commande : $ renice -n incrment -p ID $ renice -n incrment -g ID $ renice -n incrment -u ID La syntaxe Linux nutilise pas doption -n. Lincrment est directement crit. Largument incrment correspond lajustement de la valeur de gentillesse ; -p, -g, -u sont les options : -p Prcise que le numro ID suivant est celui du ou des processus. Les exemples suivants diminuent la priorit des processus 18306 et 15336 : $ renice -n 6 -p 18306 15336 $ renice 6 -p 18306 15336
# pour AIX # pour Linux

2004 - Pearson Education France

Les processus 291

-g Indique que le numro ID suivant est celui du ou des groupes de processus. Les exemples suivants augmentent la priorit des processus dont les groupes sont 508 et 645 pour AIX, et personnel pour Linux. Laugmentation de la priorit est rserve root. $ renice -n -14 -g 508 645 $ renice -14 -g personnel
# pour AIX # pour Linux

-u Indique que le numro ID suivant est celui du ou des utilisateurs. Les exemples suivants diminuent la priorit des processus appartenant dupont et martin (excuts par root). $ renice -n 4 -u dupont martin # pour AIX $ renice 4 -u dupont martin # pour Linux

9. 6 Les traitements diffrs


Toutes les mthodes de gestion prsentes jusquici sappliquent des processus interactifs qui se terminent avant la n de la session. Nous prsentons ci-aprs les processus dont lexcution se droule hors connexion.

9.6.1 La commande nohup


Quand un processus sexcute, la dconnexion de la session lui envoie un signal SIGHUP qui larrte. Cela interdit toute dconnexion tant quun processus important sexcute. Pour viter les dconnexions brutales , certains systmes comme AIX prviennent lutilisateur quand il a encore des processus en arrire-plan qui ne sont pas termins, et refusent la premire tentative de dconnexion. Ce nest pas le cas de Linux, qui tue le processus sans pravis. Pour rsoudre ce problme, le systme UNIX prvoit la possibilit dexcuter une commande puis de se dconnecter, sans pour autant arrter lexcution en cours. Lutilisateur doit demander explicitement, avec la commande nohup, de ne pas tuer le processus. Cette commande excute la ligne de commandes passes en argument et inhibe le signal SIGHUP. Si lexcution afche des informations lcran, celles-ci sont sauvegardes dans le chier nohup.out, comme dans lexemple qui suit. La commande find est lance avec nohup. Les messages derreurs (canal 2) sont redirigs vers /dev/null. [martin@abricot martin]$ nohup find / -print 2>/dev/null & [1] 19114 [martin@abricot martin]$ ps -f | grep find martin 19114 19031 7 02:58 pts/1 00:00:00 find / -print Le texte qui apparat normalement lcran est conserv dans le chier nohup.out. [martin@abricot martin]$ exit Connection closed by foreign host.

2004 - Pearson Education France

292 Utilisation
Aprs dconnexion, lutilisateur martin se connecte nouveau. Le processus lanc avec nohup est toujours actif, il nest rattach aucun terminal (colonne TTY ?), et le processus pre est init. [martin@abricot martin]$ ps -f -u martin | grep find martin 19114 1 7 02:58 ? 00:00:03 find / -print Pour conserver lafchage dans un chier dont le nom est liste_fichiers, il faut rcrire la commande prcdente avec la syntaxe suivante : $ nohup find / -print >liste_fichiers &

9.6.2 La commande at
Contrairement nohup, qui commence lexcution pendant la session ouverte, la commande at planie lexcution dune commande, en diffr. Le traitement dbutera lheure et la date indiques par lutilisateur.

Fichiers de conguration Laccs cette commande est contrl par deux chiers :
/var/adm/cron/at.allow (AIX) ou /etc/at.allow (Linux) : ce chier contient la liste des noms des utilisateurs autoriss se servir de la commande at. Si ce chier (de mme que at.deny) nexiste pas, seul lutilisateur root peut lutiliser. /var/adm/cron/at.deny (AIX) ou /etc/at.deny (Linux) : ce chier contient la liste des noms des utilisateurs qui ne sont pas autoriss se servir de la commande at. Voici un exemple de ces deux chiers sur un systme AIX. Le premier contient une liste, le second est vide : admin(root) $ cat /var/adm/cron/at.allow root dupont admin(root) $ cat /var/adm/cron/at.deny admin(root) $ Les tches qui sont lances en diffr sont ranges dans un rpertoire dattente, /var/spool/cron/atjobs (AIX) ou /var/spool/at (Linux).

Mise en uvre La syntaxe de cette commande est variable selon les systmes, et nous ne pouvons prsenter ici toutes les syntaxes. De grandes constantes sont cependant respectes, comme la possibilit de prciser la date et lheure dun jour particulier, ou bien de dnir un dlai partir du moment o la commande at est saisie. Le format de la date peut tre de la forme AAMMJJhhmm, ou encore hh :mm JJ/MM/AA, o AA indique lanne, MM le mois, JJ le jour, hh lheure et mm les minutes, selon les systmes. Voici

2004 - Pearson Education France

Les processus 293

deux exemples indiquant la date du 10 mars 2004 22h. La premire syntaxe est propre AIX (avec loption -t), la seconde Linux : $ at -t 0403102200 $ at 22:00 10/03/04 La commande at lance une suite de commandes qui sont saisies de manire interactive. La n de la saisie doit tre indique par CTRL+D. Les commandes dafchage des travaux en cours sont atq pour Linux et at -l pour AIX. Les commandes de suppression des travaux sont atrm pour Linux et at -r pour AIX. Voici des exemples de mises en uvre de cette commande sous Linux et AIX. La premire syntaxe prpare une excution pour le 10 mars 2004 22h. La syntaxe est celle du systme AIX. On termine la saisie avec la combinaison de touches CTRL+D. /home/durand $ at -t 0403102200 find /tmp nouser print 2>/dev/null ^D Job durand.1078952400.a will be run at Wed Mar 10 22:00:00 NFT 2004 La commande at -l conrme la prise en compte du traitement diffr : /home/durand $ at -l durand.1078952400.a
Wed Mar 10 22:00:00 NFT 2004

Lutilisateur root peut consulter directement le rpertoire atjobs : (root) $ ls -l /var/spool/cron/atjobs total 8 -r-Sr-Sr-- 1 durant crip 2163 Mar 09 13:05 durand.1078952400.a La commande at traitement :
-r, saisie par lutilisateur durand, permet de supprimer ce

/home/durand $ at -r durand.1078952400.a The durand.1078952400.a at file is deleted. Voici la mme manipulation sous Linux. Le format de date change, et les commandes dafchage et de suppression aussi : [martin@abricot martin]$ at 22:00 10/03/04 warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh at> find /tmp -nouser -print 2>/dev/null at> ^D <EOT> job 4 at 2004-10-03 22:00 martin afche la liste des traitements diffrs : [martin@abricot martin]$ atq 4 2004-10-03 22:00 a martin

2004 - Pearson Education France

294 Utilisation
Lutilisateur root peut consulter directement le rpertoire /var/spool/at : [root@abricot root]# ls -l /var/spool/at total 8 -rwx-----1 martin personnel 2040 mar 9 04:28 a00005011265d0* martin supprime son traitement diffr : [martin@abricot martin]$ atrm 4 On peut galement indiquer la date en utilisant des noms pour les mois. La commande suivante prpare un traitement pour le 11 avril de lanne en cours, 20h : $ at 20:00 Apr 11 Elle peut aussi ne contenir que lheure de la journe en cours : $ at 22:00 Enn, voici un exemple de prparation dun traitement o un dlai remplace la date. Le traitement sexcutera dans deux jours partir de maintenant . Ici, la suite de commandes est remplace par un script shell. $ at now + 2 days /home/durand/bin/compil_prog ^D Job durand.1079003750.a will be run at Thu Mar 11 12:15:50 NFT 2004. /home/durand $ at -l durand.1079003750.a Thu Mar 11 12:15:50 NFT 2004

noter
Vous pouvez aussi lancer un programme en lindiquant en argument de la commande at aprs la date : at 22:00 /home/durand/bin/compil_prog

9.6.3 La commande crontab


La commande crontab planie les tches rptitives de lutilisateur qui la saisit. Elle sert beaucoup en administration de systmes, pour lancer automatiquement des traitements tels que le nettoyage de chiers de /tmp toutes les nuits, la recherche des chiers ou des rpertoires orphelins dans tout le systme une fois par semaine ou par mois, le redmarrage du serveur tous les soirs, etc. Ces traitements particuliers sont lancs par root, qui est le principal utilisateur de la commande crontab.

Fichiers de conguration Cette commande fonctionne sur le mme modle que at, avec deux chiers, cron.allow et cron.deny : le premier contient la liste des utilisateurs autoriss, lautre

2004 - Pearson Education France

Les processus 295

la liste de ceux pour qui la commande est interdite. Le chemin daccs ces chiers change selon le systme UNIX : /var/adm/cron/cron.allow et /var/adm/cron/cron.deny pour AIX. /etc/cron.allow et /etc/cron.deny pour Linux. Le rpertoire contenant les chiers de planication est /var/spool/cron/crontabs (AIX) ou /var/spool/cron (Linux).

Mise en uvre Cette commande possde deux options principales :


-l Afche le chier de planication de lutilisateur. -e Sous Linux, dite le chier de planication en mode pleine page. Le chier modi par la commande est un chier texte dans lequel chaque ligne possde le mme format. Les lignes de commentaires commencent par #. La gure 9.2 dtaille ce format. Chaque champ est une valeur numrique, une liste de valeurs ou un intervalle. Le caractre * remplace toutes les valeurs. La liste est une suite de valeurs spares par des virgules. Lintervalle est reprsent par la premire et la dernire valeur, spares par un - . Voici linterprtation de la ligne prsente la gure 9.2. La commande /home/cripsyst/bin/check_activity sera excute :
0,30 : toutes les heures pleines et les demi-heures. 8-20 : de 8 heures 20 heures. * : tous les jours du mois. * : tous les mois. 0 : mais seulement le dimanche.

0,30

8-20

/home/cripsyst/bin/check_activity

Minutes de 0 59

Heures Jour du mois de 0 23 de 1 31 Mois De 1 12 1 = janvier 2 = fvrier 12 = dcembre

Jour de la semaine De 0 6 0 = dimanche 1 = lundi 2 = mardi 3 = mercredi 6 = samedi

Commande

Figure 9.2 Format du chier crontab.

2004 - Pearson Education France

296 Utilisation
Voici un exemple dafchage du chier crontab de root sur un systme AIX : admin(root) $ crontab -l # -- Nettoyage de /tmp tous les jours a 3h du matin DUPONT 10/3/00 - 0 3 * * * /usr/sbin/skulker # -- Surveillance des FileSystems toutes les heures a 45 minutes- 45 * * * * /home/cripsyst/bin/check_filesystems # -- Verification des quotas a 10h30 et 17h30 JM MARTIN 2/2/04- 30 10,17 * * * /usr/ucb/quotacheck -a # -- Trace l activite du serveur toutes les 10 minutes de 8h a 20h - 0,30 8-20 * * 0 /home/cripsyst/bin/check_activity Il est possible de mettre en place un crontab en indiquant en argument de la commande un nom de chier. Ce chier texte doit contenir des lignes au format indiqu ci-dessus. La syntaxe suivante montre la cration dun crontab travers un chier texte dont le nom est planication , et qui contient des lignes au format prsent. Il faut saisir la commande : $ crontab planification Sous Linux, il est possible dditer directement le chier actif. Pour cela il suft de saisir : $ crontab -e

noter
Le chier de planication de root est trs important car cest lui qui rgule lactivit nocturne , les statistiques dutilisation, et souvent les auto-tests de scurit du serveur. Il faut donc prendre lhabitude dajouter des commentaires clairs et dindiquer la date de modication, mais aussi lauteur si le compte dadministration est gr par plusieurs personnes. Avant toute modication, il faut conserver un tat de ce chier la date du jour en saisissant, par exemple : $ crontab -l > crontab.root.20040309

Par prcaution, il est prfrable de modier la planication des tches en procdant par tape : 1. 2. 3. Conservation de la planication dans un chier sur disque. Modication de cette copie. Mise jour des changements.

Voici cette manipulation sous Linux. La premire commande afche ltat de la planication pour lutilisateur martin : [martin@abricot martin]$ crontab -l 40 * * * * /home/martin/compil_projet

2004 - Pearson Education France

Les processus 297

Lutilisateur martin sauvegarde puis dite le chier : [martin@abricot martin]$ crontab -l > crontab.martin [martin@abricot martin]$ vi crontab.martin Le chier modi est install : [martin@abricot martin]$ crontab crontab.martin martin vrie que la modication (la valeur est passe de 40 30) est active : [martin@abricot martin]$ crontab -l 30 * * * * /home/martin/compil_projet

Astuce
Il est possible, grce la commande at, dobtenir un comportement identique au cron (rptitif ). Pour cela, il suft de rappeler la mme commande at la n de son excution. Quand at est termin, il peut par exemple recrer un at identique pour le lendemain. Ce systme vous donne la possibilit dautomatiser des tches rptitives mme si vous navez pas accs la commande crontab.

9. 7 Les dmons
Les dmons, ou daemons, sont des processus particuliers qui sont toujours actifs. Leur nom comprend souvent (mais pas toujours) le sufxe d , pour daemon . Ainsi, le dmon cron qui dclenche les actions indiques par la commande crontab se nomme crond sous Linux et cron sous AIX. Le rle des dmons est de grer les services proposs par le serveur, quil sagisse de dmons systme, comme la planication des tches (cron), ou rseau, comme telnetd. Ils doivent toujours tre actifs, car leur arrt implique larrt du service. Les dmons rseau sont surveiller car ils constituent des portes daccs au serveur, et sils ont des failles de scurit, la machine peut tre lobjet de piratages. Ladministrateur doit donc veiller activer uniquement les services quil veut offrir aux utilisateurs. Lactivation des dmons peut se faire de deux manires : au dmarrage de lordinateur ou la demande. Lorsque le dmon est activ au dmarrage du serveur, son lancement est effectu par un chier systme interprt pendant cette phase. Cest le cas du dmon cron, qui est activ par le chier /etc/inittab sous AIX. Les autres chiers de dmarrage du systme AIX sont /etc/rc, /etc/rc.tcpip et /etc/rc.nfs : ils activent par exemple le dmon nfsd pour la gestion des systmes de chiers rseau. (root) $ cat /etc/inittab init:2:initdefault: brc::sysinit:/sbin/rc.boot 3 >/dev/console 2>&1 # Phase 3 of system boot rc:23456789:wait:/etc/rc 2>&1 | alog -tboot > /dev/console # Multi-User

2004 - Pearson Education France

298 Utilisation
srcmstr:23456789:respawn:/usr/sbin/srcmstr # System Resource Controller rctcpip:23456789:wait:/etc/rc.tcpip > /dev/console 2>&1 # TCP/IP daemons rcnfs:23456789:wait:/etc/rc.nfs > /dev/console 2>&1 # NFS Daemons cron:23456789:respawn:/usr/sbin/cron ... Linux possde une hirarchie de chiers de dmarrage qui se trouvent dans le rpertoire /etc/rc.d. Le chier principal dinitialisation du systme est /etc/rc.d/rc.sysinit. [martin@abricot total 80 drwxr-xr-x 2 -rwxr-xr-x 1 drwxr-xr-x 2 drwxr-xr-x 2 drwxr-xr-x 2 drwxr-xr-x 2 drwxr-xr-x 2 drwxr-xr-x 2 drwxr-xr-x 2 -rwxr-xr-x 1 -rwxr-xr-x 1 -rwxr-xr-x 1
martin]$ ls -l /etc/rc.d root root root root root root root root root root root root root root root root root root root root root root root root 4096 3526 4096 4096 4096 4096 4096 4096 4096 1636 601 32837 jan sep jan jan jan jan jan jan jan sep sep sep 16 24 27 27 27 27 27 27 27 24 24 24 08:44 16:30 04:19 04:19 04:19 04:19 04:19 04:19 04:19 16:30 16:30 16:30 init.d/ rc* rc0.d/ rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/ rc6.d/ rc.local* rc.modules* rc.sysinit*

Lorsque le dmon est activ la demande, il est pris en charge par le superdmon , inetd. Celui-ci gre les dmons rseau qui doivent rpondre chaque sollicitation dun client. Par exemple, chaque accs au serveur par un client telnet implique lexcution dun nouveau dmon telnetd par inetd . Le super-dmon est congur par le chier /etc/inetd.conf, dont voici un exemple sous AIX : (root) $ cat /etc/inetd.conf # service socket protocol wait/ user server server program # name type nowait program arguments # -- Demons pour les clients telnet et ftp -- ftp stream tcp6 nowait root /usr/sbin/ftpd ftpd telnet stream tcp6 nowait root /usr/sbin/telnetd telnetd -a # -- Demons pour l acces au courrier -- imap2 stream tcp nowait root /usr/sbin/imapd imapd pop3 stream tcp nowait root /usr/sbin/pop3d pop3d Les dmons sont des processus que lon peut administrer comme les autres avec la commande kill. Pour arrter le dmon cron sous AIX, il faut saisir (en tant que root) : (root) $ ps -ef|grep cron root 295022 1 0 Feb 29 (root) $ kill 9 295022 Pour relancer le dmon, il suft de taper : (root) $ /usr/sbin/cron
# AIX # AIX 0:08 /usr/sbin/cron # AIX

2004 - Pearson Education France

Les processus 299

Cependant, la plupart des systmes proposent des mthodes moins violentes que la commande kill. AIX dispose de deux commandes, stopsrc et startsrc : (root) $ stopsrc s nfsd (root) $ startsrc s nfsd
# AIX : Arret de nfs # AIX :Demarrage de nfs

Linux propose des scripts de dmarrage et darrt. Cest le cas par exemple du montage dynamique des disques rseau gr par le dmon /usr/sbin/automount. Pour dmarrer le dmon, il suft dappeler le script, avec start en argument. Pour le stopper, il faut utiliser largument stop. admin(root) $ /etc/rc.d/init.d/autofs stop # Linux : Arret automount admin(root) $ /etc/rc.d/init.d/autofs start # Linux : Demarrage # automount

Rsum
Les processus correspondent aux logiciels actifs. Chaque processus est autonome, il possde un processus pre et peut lui-mme engendrer un processus ls. Lactivit du serveur est reprsente par une hirarchie de processus pres et de processus ls dont le premier est init. Chaque processus possde un numro unique, son PID (Process IDentication). Cest travers ce numro quil est administr. Il connat le numro de son pre, quil rfrencie par son PPID (Parent Process IDentication). Les processus communiquent entre eux grce aux signaux quils mettent et reoivent. Chaque signal correspond un vnement non prvu dans le traitement normal du logiciel. Des actions sont prdnies selon le numro du signal, le plus connu tant le numro 9, qui arrte ( tue ) le processus. On peut gnrer les signaux en appuyant sur des touches de contrle. Dans ce cas, le logiciel en cours dexcution reoit le signal attribu la combinaison de touches en question. Par exemple, les combinaisons CTRL+C et CTRL+Z mettent les signaux SIGINT (numro 2) et SIGTSTP (numro 18 ou 20 selon les systmes), ce qui arrte ou suspend lexcution. Cette mthode de gestion interactive ne peut sappliquer quaux processus davant-plan, non ceux darrire-plan. La mthode la plus courante, et qui sapplique tous les types de processus (avantplan et arrire-plan), utilise des commandes explicites, comme ps ou kill, qui afchent la liste des processus et envoient des signaux aux processus dont le PID est spci. Dautres commandes complmentaires, comme fuser, nice ou renice, permettent dafner la gestion en tuant des groupes de processus ou en changeant leur priorit. Il existe une autre catgorie de processus qui ne sont pas rattachs une connexion. Ces traitements diffrs sexcutent quand lutilisateur nest plus connect. Les commandes nohup, at et crontab permettent de prparer ces traitements : nohup lance

2004 - Pearson Education France

300 Utilisation
une tche en vitant quelle ne soit tue la dconnexion, at prpare une excution diffre et crontab planie des tches diffres rptitives. Enn, il existe certains processus trs particuliers : les dmons. Ils sont actifs en permanence et rendent des services internes (planication des tches, par exemple) ou externes (comme les services rseau). Ils sont lancs soit au dmarrage du systme par des chiers spciques (/etc/inittab, /etc/rc, etc.), soit la demande, quand ils sont pris en charge par le super-dmon , inetd.

Questions et exercices
Questions de rvision
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Quest-ce que le PID et le PPID dun processus ? Quel est le rle des signaux ? Quel est le nom du signal qui arrte un processus interactif ? Quelle combinaison de touches lui est attribue ? Comment faire pour excuter une commande en arrire-plan ? Quelle est la diffrence entre la commande ps -f et la commande ps -ef ? Quelle commande permet de tuer un processus particulier, et quelle commande permet de tuer les processus attachs un rpertoire? Une valeur positive pour la commande nice augmente-t-elle la priorit du processus ? Quelle est la diffrence entre la commande nohup et la commande at ? Quelle est la commande qui permet de planier des traitements diffrs ? Quel est le nom du dmon qui gre le dclenchement de ces traitements ? Comment se nomment les deux chiers qui donnent accs la commande at ?

2004 - Pearson Education France

Les processus 301

Exercices
1. 2. 3. 4. 5. 6. 7. Afchez la liste des signaux connus. Dsactivez la possibilit dinterrompre une excution avec CTRL+C. Ractivez la frappe de CTRL+C. En langage de commandes, crez une boucle qui afche le texte en boucle toutes les deux secondes. Suspendez lactivit de ce processus par une combinaison de touches puis passez-le en arrire-plan. Tuez ce processus darrire-plan. Saisissez la commande qui parcourt toute votre hirarchie et conserve le nom de tous les objets trouvs dans un chier trace. Cette commande sera excute en arrire-plan. Tapez la commande qui conrme que le processus dont le PID est 2345 nexiste pas. Afchez la liste de tous les processus de lutilisateur martin. Afchez la liste de vos processus avec leur niveau de priorit. Afchez les informations sur le pre de votre login shell. Afchez la liste de vos processus avec les informations suivantes : lUID, le PID, le PPID et la commande, dans cet ordre. En une seule commande, tuez tous les processus de votre session. En une seule commande, tuez tous les processus de toutes vos sessions. Vous tes ladministrateur root ; tuez tous les processus attachs au rpertoire
/home/martin.

8. 9. 10. 11. 12. 13. 14. 15. 16. 17.

Modiez la syntaxe de la rponse la question 7 pour que la commande se poursuive quand vous vous dconnectez. Excutez votre script shell de compilation my_compil en arrire-plan, avec un niveau de priorit plus faible de 10 (incrments) que celui de la priorit normale. Vous tes en bash. Donnez la syntaxe de la ligne du chier mis en place par la commande crontab, qui excute la commande /usr/local/bin/check_fs tous les samedis 2h45 du matin. Afchez la liste de vos tches planies (crontab). Vriez si le dmon nfsd est actif.

18.

19. 20.

2004 - Pearson Education France

Vous aimerez peut-être aussi