You are on page 1of 74

Formation Linux

Initiation au systme GNU/Linux

Damien BLANCHARD 2010 v 0.3.2

Rseau des lectroniciens DR15

Table des matires


Licence du document..................................................................................................4 Introduction..................................................................................................................4 1. Histoire de GNU/Linux............................................................................................5 1.1. Richard Matthew Stallman.................................................................................5 1.2. Linus Torvald......................................................................................................5 1.3. GNU/Linu l!"volution.........................................................................................# 1.$. Les di%%"rences entre GNU/Linu et windows....................................................& 2. rc!itecture du s"stme........................................................................................# 2.1. L!ar'orescence...................................................................................................( 2.2. Les )oints de monta*e.....................................................................................1+ 2.3. Le nomma*e des )"ri)h"ri,ues......................................................................1+ $. La li%ne de commande..........................................................................................11 3.1. Terminal et shell...............................................................................................11 3.2. Les commandes de 'ase.................................................................................11 3.3. -es d"tails im)ortants......................................................................................13 3.$. Les "diteurs de te te en terminal.....................................................................1$ 4. &ani'ulation des dis(ues....................................................................................1) $.1. Le )artitionnement...........................................................................................1# $.2. Le %ormata*e....................................................................................................1& $.3. Le monta*e......................................................................................................1( 5. Les *ic!iers.............................................................................................................21 5.1. -roits des %ichiers.............................................................................................21 5.2. Les liens s.m'oli,ues et )h.si,ues.................................................................23 5.3. Rechercher des %ichiers...................................................................................2$ 5.$. /denti%ier des %ichiers........................................................................................25 5.5. 0onna1tre l!es)ace dis,ue................................................................................2#
2

). Les utilisateurs......................................................................................................2+ #.1. 0r"ation de nouveau utilisateurs et *rou)es.................................................2& #.2. Les %ichiers associ"s........................................................................................3+ #.3. 0han*ement d!utilisateur2 de )rivil3*es...........................................................32 +. ,rocessus et si%naux...........................................................................................$4 &.1. 4rocessus.........................................................................................................3$ &.2. Les si*nau ......................................................................................................3# #. la con(u-te du s!ell..........................................................................................$. (.1. Les varia'les d!environnement........................................................................35 (.2. Les 6o7ers.........................................................................................................$+ (.3. Les redirections de %lu ....................................................................................$1 .. Les commandes 'rinci'ales................................................................................4$ 5.1. -"tails de ces )rinci)ales commandes...........................................................$3 5.2. 0hainer les commandes..................................................................................5+ 1/. L01criture de scri'ts............................................................................................51 1+.1. 0onditionnel et 'oucles..................................................................................51 11. 20autres commandes utiles................................................................................5# 12. dministration et con*i%uration.........................................................................)$

12.1. Les lo*s..........................................................................................................#3 12.2. L!amor8a*e du s.st3me.................................................................................#$ 12.3. Les modules du no.au...................................................................................#5 12.$. /nter%aces r"seau ..........................................................................................## 12.5. Le shell distant...............................................................................................#& 12.#. 0ron le )lani%icateur de t9ches......................................................................#& 12.&. 0om)ilation d!un )ro*ramme tiers.................................................................#5 12.(. Le )ort s"rie...................................................................................................&+ 3onclusion.................................................................................................................+$ 4iblio%ra'!ie..............................................................................................................+4

Licence du document
Ce document a t crit spcifiquement pour cette formation. Aucun paragraphe n'est un copi/coll d'un texte. Ce document est plac sous licence libre GNU F !. Ce qui signifie que tout lecteur de ce document a le droit de le copier" de le modifier et de le redistribuer a#ec ou sans modifications.

Introduction
!e but de cette formation est de #ous initier $ l'utilisation et au fonctionnement d'un s%st&me GNU/Linux. 'our prparer cette formation ('ai surtout utilis ce que ('ai pu apprendre par moi m)me en * ans d'utilisation. +'ai aussi utilis quelques li#res. ,alheureusement dans la plupart des cas ces li#res apprennent $ installer et utiliser une distribution en particulier et insiste sur les outils graphiques. Afin de (ustement #ous offrir la formation la plus gnrale et la plus utile nous allons uniquement #oir les lments qui sont communs $ tous les s%st&mes GNU/Linux" qu'ils soient pour l'ordinateur de bureaux comme pour l'embarqu. 'ourquoi GNU/Linux et non Linux qui est le nom le plus communment utilis 'our comprendre .a il faut #oir un peu l'histoire de cette gen&se.

1. Histoire de GNU/Linux
1.1. Ri !a"# $att!e% &ta''man

!e premier personnage important dans cette histoire n'est autre que /ichard ,atthe0 1tallman ou appel par ses initiales /,1. C'est en 23*4 que /,1 a dcid de crer un s%st&me d'exploitation 516 ou 718 enti&rement libre nomm s%st&me GNU. 'our comprendre cette dcision il faut re#enir un peu en arri&re. Unix tait tr&s rpandu dans les uni#ersits 5dont le ,9: o; tra#aillait /,1 5plus prcisment au ,9: A9 !ab88 et les entreprises. Cependant les licences des diffrentes #ersion d'Unix rendaient le s%st&me propritaire. 'ar exemple les uni#ersits a#aient gratuitement le s%st&me et les sources mais ils n'a#aient aucun droit de les redistribuer. C'est cette frustration qui a dcid /,1 $ crer son propre s%st&me. !e but du pro(et GNU tait de crer un 71 complet et enti&rement libre. C'est<$<dire gratuit" que l'on peut modifier et redistribuer. C'est dans cet tat d'esprit que /,1 cra la licence G'! 5General 'ublic !icence8. 9l commen.a par programmer la plupart des commandes Unix ncessaires $ l'utilisation du s%st&me. 'uis il chercha $ pour#oir GNU d'un compilateur C. ,alheureusement" les compilateurs les plus proches de ce qu'il cherchait n'taient pas libres et ceux qui taient libres ncessitaient trop de modifications pour que le pro(et soit #iable. 9l commen.a alors l'criture depuis = 5 from scratch8 qu'il nomma GCC acron%me de GNU C Compiler. GCC tait asse> flexible pour permettre de lui a(outer de nou#eaux langages comme le C??" ob(ecti#e C" +a#a etc" et l'acron%me de#int ensuite GNU Compiler Collection. Cependant il manquait au pro(et GNU la pi&ce ma@tresse d'un 71 A le no%au. /,1 ne #oulait pas d'un no%au monolithique et s'orienta alors #ers un micro no%au. !a conception d'un tel no%au est plus compliqu et surtout le dbogage est d'une incro%able complexit. !e d#eloppement pris du retard" beaucoup de retard. Finalement le retard est tellement important que m)me au(ourd'hui il n'% a pas de #ersion #raiment considre stable.

1.2.

Linus (o"va'#

!e second personnage cl est !inus :or#ald" crateur du no%au !inux. 6n 2332 !inus tait tudiant $ l'uni#ersit d'BelsinCi en Finlande. 9l utilisait Minix" un s%st&me non libre" bas sur le mod&le d'Unix" cr par le professeur Andre0 :anenbaum a des fins didactiques. 9l manquait dans Minix un mulateur de terminal ce qui aurait permis $ !inus de se connecter sur les machines de son uni#ersit depuis che> lui. !inus entrepris alors de le coder mais il le fit indpendant de Minix. 9l continua d'a(outer des fonctionnalits $ son mulateur de terminal tant et si bien qu'il en a#ait fait un embr%on de no%au. 9l porta dessus bash et GCC" tous deux issus du pro(et GNU. 9l posta le fruit de son tra#ail sur des listes de discussions sur internet et rapidement beaucoup de personnes commenc&rent $ le modifier et $ a(outer leurs propres fonctionnalits.

!e choix de !inus de rendre son no%au libre" et le ralliement par internet d'une arme de d#eloppeurs permit d&s 2334 d'a#oir la #ersion 2.= de Linux sur lequel fonctionnait la ma(orit des programmes GNU.

1.3.

GNU/Linux ')*vo'ution

9nstaller un s%st&me Linux re#enait $ installer le no%au Linux" les outils GNU ainsi que d'autres logiciels tiers. C'tait rellement une tDche complique rser#e aux initis. es personnes eurent l'ide gniale de faire ce tra#ail et de redistribuer ensuite ce s%st&me complet en tant que Distribution Linux. C'est dans les annes 233E/2334 que deux distributions" qui existent encore au(ourd'hui" sont nes A Slackware Linux et Debian GNU/Linux. 1i au(ourd'hui Slackware est peu utilise c'est parce qu'elle est reste tr&s proche de ce qu'elle a t au dbut A un ensemble cohrent comprenant le no%au" les outils GNU et des logiciels tiers. Alors que des distributions comme Debian 5puis Red at" Suse" Mandrake de#enue Mandri!a8 apportent une #raie #aleur a(oute par la possibilit d'utiliser des paquets A c'est<$<dire que tous les logiciels disponibles pour la distribution ne sont pas compris sur le support d'installation mais sont disponibles soit sur des supports annexes soit sur des ser#eurs internet. Ces paquets sont installables #ia des outils ddis et permettent la rsolution des dpendances. 'ar exemple si #ous #oule> installer le logiciel foo et qu'il ncessite la biblioth&que libbar" le gestionnaire de paquet #a #rifier que #ous a#e> libbar" dans le cas contraire il #a le tlcharger et l'installer puis faire de m)me pour l'application foo. e plus ils ont sou#ent des outils graphiques permettant une configuration simplifie de di#erses parties du s%st&me. 'ar exemple la distribution qui est actuellement la plus populaire c'est Ubuntu 5et ses dri#s "ubuntu / #ubuntu8" si #ous utilise> du matriel dont les dri#ers ne sont pas libres ou qu'ils ncessitent un firmware non libre" le petit outil graphique #a se charger de tout tlcharger et tout installer tout seul. Ce genre de choses doi#ent )tre faites manuellement lorsqu'on utilise une Slackware.

:out cela concerne les distributions de bureaux 5ou de ser#eurs A il existe des dclinaisons pour ser#eur d'Ubuntu" Mandri!a" Red at etc8. ,ais l'utilisation de GNU/Linux ne s'arr)te pas l$. 7utre les desktops et les ser#eurs" on le retrou#e de plus en plus dans des s%st&mes embarqus. 'ar exemple de plus en plus de tlphones portables utilisent le no%au !inux comme tous les tlphones utilisant $ndroid de Goo%le. A noter que Chrome &S est aussi bDti sur un no%au Linux. !es tablettes internet de Nokia 5FF=" N*==" N*2=8 utilisent aussi un no%au Linux. !a plupart des routeurs" GHox ainsi que les s%st&mes G'1 de 'om'om fonctionnent grDce $ Linux.

,aintenant" et tou(ours dans cette petite introduction" et a#ant d'attaquer les choses srieuses sur la #raie constitution d'un s%st&me GNU/Linux" essa%ons de #oir dans les grandes lignes ce que c'est" ce qu'il permet et ce qu'il n'est pas afin de dm%stifier un peu tout cela.

Comme on l'a #u dans sa gen&se" Linux 5le no%au8 est inspir de Minix 5il n'en contient aucune ligne8 qui lui m)me est un s%st&me purement destin $ l'ducation inspir d'Unix 5c'est donc un Unix(like8. epuis sa constitution Linux suit les normes et les standards comme )&S*# ou $NS* ainsi que +SD. C'est un norme a#antage puisque lorsqu'on crit un programme fonctionnant sur GNU/Linux" on peut normalement le porter facilement" #oire sans modifications" sur d'autres s%st&mes respectant aussi ces normes comme les +SD 5Net+SD" &pen+SD" ,ree+SD8" les solaris 5Solaris" &penSolaris8 et dans une moindre mesure Mac&S/Darwin. 6n re#anche il sera sou#ent beaucoup plus difficile de le porter sur un 71 ne respectant rien $ l'instar de windows de microsoft dont l'implmentation des normes et standards est tr&s limite" partielle et parfois ne respecte (ustement pas les standards. Un autre point important que nous a#ons #u" le no%au Linux ainsi que la grande ma(orit des logiciels fournis a#ec 5outils GNU inclus8 sont libres. Ious pou#e> accder aux sources" les modifier" #ous en inspirer" les redistribuer et tout .a gratuitement. C'est une sorte de gigantesque biblioth&que de codes sources enti&rement libre. onc GNU/Linux est un s%st&me entier" $ part" et c'est aussi un dtail important. 9l utilise le format -L, 5-xecutable and Linkable ,ormat8 pour ses excutable et rien que par ce dtail on se rend compte qu'il ne peut pas excuter les applications compiles pour windows 5utilisant le format )-8. Cependant il ne permet pas non plus d'excuter des programmes compils par d'autres s%st&mes utilisant -L, comme .+SD" car il n'% a pas de compatibilits entre les biblioth&ques C 5biblioth&que s%st&me qui fait le lien entre le no%au et les applications utilisateurs8. Cependant pour les applications windows il existe une implmentation 5encore non ache#e8 des biblioth&ques s%st&mes de windows. Cette implmentation appele /*N- 5/ine *s Not an -mulator8 permet d'excuter" plus ou moins bien" un grand nombre d'applications compiles pour les s%st&mes de microsoft. 'uisqu'on parle de windows" qu'est ce qui diffrencie un s%st&me GNU/Linux d'un windows -

1.+.

Les #i,,*"en es ent"e GNU/Linux et %in#o%s

,)me pour l'utilisateur final certaines diffrences sont notables. Contrairement $ windows qui est une sorte de bloc unique fourni par dfaut" un s%st&me GNU/Linux est un ensemble de JpetitsJ blocs ou#erts. Ainsi" alors que sous windows il n'% a qu'un seul en#ironnement de bureau sur lequel on peut appliquer des th&mes" sous GNU/Linux il % a un ser#eur graphique sur lequel s'a(oute un en#ironnement de bureau au choix de l'utilisateur. 9l en existe beaucoup et pour tout les goKts A de gros en#ironnements tout intgrs comme Gnome ou "D-" des plus lgers comme #,C- ou L#D-" des tr&s tr&s lgers comme blackbox ou openbox et des rudimentaires. Contrairement $ des ides re.ues au(ourd'hui les distributions sont tr&s simples $ utiliser" sou#ent bien plus que windows pourtant (ug intuitif.
7

!a #raie diffrence #ient de la configuration du s%st&me" et de ses modifications. 6n effet sous windows on ne peut rien faire sans la souris" tout se fait $ coup de clics. !a ma(orit des rouages internes sont cachs. 'ar exemple" si on peut accder $ la base de registre on ne sait pas #raiment o; elle est stocCe ni sous quel format. 1i a#ec )rocessus -xplorer on peut a#oir un arbre graphique des processus excuts" il est parfois impossible de les tuer. C'est ici que tout change A les s%st&mes GNU/Linux sont a#ant tout bass sur des outils non graphiques" sur des commandes dans un terminal. 6t m)me si les distributions rcentes int&grent beaucoup d'outils graphiques permettant de quasiment tout faire $ coup de clics" c'est cette flexibilit permettant d'utiliser aussi bien la souris que des lignes de commandes qui fait toute la robustesse et la puissance du s%st&me. 7n peut sa#oir ce que fait le s%st&me" et si quelque chose se bloque on peut sa#oir quoi et on peut % remdier. !es rouages ne sont pas cachs" on a un #rai rLle $ (ouer.

2.

rc!itecture du s"stme

Un s%st&me GNU/Linux pour un ordinateur de bureau poss&de ce t%pe d'architecture A


!e no%au Linux !es outils GNU 5biblioth&que C ? shell ? outils de gestion8 des ser#eurs 5sshd" dhcpcd" etc8 1er#eur graphique 5ser#eur # / #or%8 6n#ironnement de bureau applications graphiques 5na#igateur 0eb" suite bureautique etc8

Au cours de cette formation nous nous arr)terons (uste a#ant le ser#eur #.

2.1.

L)a"-o"es en e

!'arborescence est l'ensemble des rpertoires du s%st&me. 'ar exemple sous windows c'est tr&s simple" nous a#ons quelque chose qui ressemble $ cela A
(nom du lecteur systme par dfaut)

"ontient les composants principau# du systme d!e#ploitation contient $uasiment toutes les %i%liot&$ues du systme Fi%ure 15 rborescence %in#o%s 8

contient les pro rammes installs par l!utilisateur

1ous GNU/Linux c'est un peu plus compliqu car les fichiers du s%st&me ont chacun une place dfinie.
Path / /bin /de# /usr/bin /usr/sbin /sbin Description nom de la racine de l'arborescence s%st&me contenant les excutables ncessaire au fonctionnement du s%st&me contenant les fichiers spciaux correspondant aux 5pilotes de8 priphriques contenant les excutables des programmes installs contenant des commandes disponibles que pour le super utilisateur 5root8 contenant des commandes disponibles que pour le super utilisateur mais qui sont indispensable au fonctionnement" surtout lors du dmarrage" du s%st&me contenant le5s8 no%au5x8 ainsi que d'autres fichiers ncessaires $ l'amor.age du s%st&me contenant les fichiers de configuration de la plupart des programmes s%st&mes" ser#eurs et parfois les fichiers de configuration par dfaut des programmes des utilisateurs. contenant des fichiers utiliss par diffrents programmes s%st&mes" par exemple il contient des lo%s" des sockets etc. contenant les biblioth&ques d%namiques ou statiques disponibles sur le s%st&me. C'est le rpertoire de recherche par dfaut pour l'diteur de liens. contenant les fichiers spcifiques au ser#eur graphique 5#or%8 contenant les fichiers d'en<t)tes pour la programmation en C 5biblioth&que C standard" A'9 des biblioth&ques tierces" en<t)tes utilisable pour le no%au !inux comme 01L 5!ideo for linux88. pou#ant contenir une sorte de nou#elle arborescence a#ec un bin" etc" lib pour les applications a(outes apr&s l'installation du s%st&me. pou#ant contenir les points de montage de d'autres priphriques de stocCage 5clef usb" autre disque dur" N,S2 etc8 au(ourd'hui la tendance est plutLt $ utiliser /media contenant un rpertoire par utilisateur dans lequel est stocC tous les fichiers de l'utilisateur. Tableau 15 rborescence d0un s"stme GNU/Linux

/boot /etc

/#ar /usr/lib

/usr/lib/M22 /usr/include

/usr/local /mnt

/home

Fi%ure 25 rborescence sous GNU/Linux '

Ce sur#ol permet de mettre en #idence des choses tr&s diffrentes d'un s%st&me windows. 'ar exemple" ici il n'% a pas de lettre de lecteur et les chemins 5)$' 8 utilisent un slash 5/8 au lieu d'un backslack 5N8.

2.2.

Les .oints #e monta/e

!e point de montage du s%st&me s'appelle / 5racine O root8 et chaque rpertoire peut )tre une partition d'un autre disque" ou du m)me disque. 'ar exemple nous a#ons P disques dur a#ec chacun 2 partition nous pou#ons faire ceci A ,ettre /" /boot" /usr2 etc sur le premier disque et monter le deuxi&me disque sur /home ce qui permet de sparer les donnes propres au s%st&me des donnes des utilisateurs.

2.3.

Le nomma/e #es .*"i.!*"i0ues

Une autre diffrence tr&s importante est dans le rpertoire /de!. Ce rpertoire contient des fichiers J#irtuelsJ qui correspondent aux priphriques et permet de les utiliser #ia leurs pilotes respectifs de fa.on transparente. 'ar exemple sous windows les partitions des disques durs ont des lettres que l'ont peut rattribuer dans le panneau de gestion du poste de tra#ail #ia une reprsentation graphique des disques et de leur taille. 1ous !inux c'est totalement diffrents" chaque priphrique 5disque dur et partitions par exemple8 ont leurs propres fichiers dans /de#. !e disque dur 1A:A de la machine sera nomm /de!/sda et sa premi&re partition /de!/sda3" la deuxi&me /de!/sda4. 'endant longtemps" et parfois encore au(ourd'hui" les disques dur 9 6 taient nomms /de!/hd# 5o; # est le numro du disque8 par exemple le ma@tre 5 master8 du port 5slot8 2 tait nomm /de!/hda et sa premi&re partition /de!/hda3. Au(ourd'hui" sur les no%aux rcents" la plupart du temps les disques 9 6 se nomment comme les disques 1A:A /de!/sd#. Ioici d'autres exemples de noms de priphriques A
/dev/ttyS0 /dev/lp0 /dev/ttyUS 0 port srie 1 (COM1 sous windows) port parallle 1 (LPT1 sous windows) port srie virtuel 1 (via un !T"#" par e$e%ple)&

6n re#anche" les interfaces rseaux 5filaire ou non8 ne poss&dent aucune entre dans /de!5 9l est $ noter que les priphriques de stocCage de masse 5 mass stora%e de!ice8 comme les clefs U1H reprennent le m)me nommage que les disques 1A:A.

1(

$. La li%ne de commande
A#ant de se lancer dans le partitionnement et le formatage des partitions il est temps de se familiariser un peu a#ec le terminal / la console / ligne de commande.

3.1.

(e"mina' et s!e''

!a ligne de commande est disponible de plusieurs fa.ons. 9l % a le terminal disponible quand le ser#eur # est lanc. Iia un mulateur de terminal comme xterm" aterm" exo(term" %nome(terminal" konsole2 etc. !'interface ressemble #aguement $ celle disponible sous windows. Iaguement car elle est bien plus flexible" ergonomique" puissante et surtout utile. :out d'abord il faut sa#oir que l'mulateur de terminal n'est que la partie graphique qui permet de #oir et de saisir du texte. !e lancement des applications et l'interprtation des commandes sont pris en charge par le shell de l'utilisateur. !e plus connu est le plus utilis est GNU bash5 !a deuxi&me fa.on d'a#oir acc&s $ la ligne de commande et d'utiliser la combinaison de touches A C'RL 6 $'L 6 ,x 5a#ec 2 Q x Q R8 5C'RL 6 $L' 6 ,7 permet de re#enir au ser#eur #8. Ainsi on a acc&s directement $ l'in#ite du shell.

3.2.
shell5

Les omman#es #e -ase


Une commande est soit un programme $ part enti&re" soit intgre au

!es commandes utilisent tou(ours le m)me formatage $ sa#oir A


'o%%ande (OPT)O*S+ (P,-,M.T-.S+

!es options permettent de modifier le comportement de la commande" et les param&tres peu#ent )tre la cible 5tar%et8 comme par exemple un fichier ou un rpertoire. Ce qui est entre crochets 5S T8 peut )tre" ou ne pas )tre" spcifi. 1ui#ant le comportement que l'on #eut de la commande ils ne sont pas ncessaires. pwd affiche le rpertoire courant. ls permet de lister les fichiers dans le rpertoire courant. Uuelques options de ls A
<l affiche une liste dtaille 5a#ec heures de cration" les droits" taille" etc8 <a affiche :7U1 les fichiers <h con#ertie la taille 5en octet par dfaut8 en Vio" ,io" Gio pour que .a soit plus lisible.

7n peut spcifier les options de P fa.ons A


soit une par une exemple ls <l <a <h soit groupe ls <lah on peut aussi faire les deux ls <l <ah 11

cd permet de changer de rpertoire. 7n peut prciser soit un )$' 5chemin8 relatif 5O par rapport au chemin courant8 soit absolu 5O par rapport $ la racine /8. onc un chemin absolu commence tou(ours par '/'. exemples A
'd //o%e 'd lo0in

7n peut utiliser une criture raccourcie pour accder directement $ /home/lo%in on note alors 8/
'd //o%e/lo0in

est qui#alent $
'd 1/

1i on utilise cd sans argument" le rpertoire choisi sera le 5/home/lo%in8. cp permet de copier des fichiers 5ou des rpertoires8.
'p (OPT)O*S+ !)C2).-1 !)C2).-" 'p (OPT)O*S+ !)C2).-1 (!)C2).-"+&&& -.P.-TO)-./

&M- de l'utilisateur

,*C *-Rn peu#ent )tre des rpertoires mais il faut alors utiliser l'option (r.

rm permet de supprimer des fichiers 5ou des rpertoires8


r% (OPT)O*S+ !)C2).-1 (!)C2).-"+&&&

,*C *-Rn peu#ent )tre des rpertoires mais il faut alors utiliser l'option (r comme pour cp. 7n peut aussi utiliser l'option (f pour forcer la suppression et #iter les demandes de confirmations.

m! permet de renommer un fichier ou un rpertoire


%v !)C2).-1 !)C2).-"

touch permet de mettre $ la date courante un fichier existant ou $ crer un fichier #ide si celui ci n'existe pas.
tou'/ no%1

!e shell fournit une fonctionnalit tr&s utile A l'auto(completion. 6lle permet de complter automatiquement ou de fournir une liste des commandes ou des fichiers qui commencent par les lettres que l'on a saisi. 'ar exemple si on #eut faire ls sur un fichier 5existant8 nomm W ceci est un test.txt X" on peut uniquement crire W ls ceci X et appu%er sur la touche tabulation 5'$+8 ce qui compltera automatiquement le nom du fichier. mkdir permet de crer des rpertoire
%3dir -.P.-TO)-. 12

cat est un programme qui lit un ou plusieurs fichiers et les affichent dans le terminal. !a s%ntaxe est simple A
'at !)C2).-1 (!)C2).-"+&&&

'ar con#ention la plupart des commandes disposent de l'option ((help 5ou parfois (h8 qui permet d'afficher une aide succincte indiquant les param&tres et les options disponibles.

3.3.

Des #*tai's im.o"tants


a. Les arguments

9l % a une question importante qu'il faut se poser A comment fait un programme pour parcourir et traiter 5to parse8 les options et les param&tres qu'on lui soumet !a rponse est simple A le shell #a dcouper les informations en utilisant l'espace comme dlimiteur. !e programme #a a#oir en entre un tableau 5le fameux char Garg#ST en C8 dont chaque case correspond $ un W mot X. C'est un dtail tr&s important qui nous permet de comprendre" par exemple" qu'on ne peut pas faire ceci A
ls4l ls 4l4a

A l'utilisation on s'aper.oit qu'il reste P autres points g)nants.

b.

Les espaces dans les paramtres

1i un param&tres contient un espace" comment faire pour que le shell ne l'interpr&te pas comme P param&tres distincts 9l existe pour cela P mthodes A 1oit on indique au shell que c'est une seule cha@ne de caract&res en utilisant" comme en C" les guillemets 5cela fonctionne aussi a#ec apostrophe8 a#ant et apr&s le param&tre. 6xemple A
tou'/ 5le 6i'/ier5

1oit on prc&de l'espace d'un 'N' 5backslash8" ce qu'on appelle un caract&re d'chappement" pour indiquer explicitement que l'espace n'est qu'un caract&re normal et qu'il ne doit pas a#oir d'autres fonctions. Cette mthode fonctionne aussi pour tous 5sauf le (8 les autres caract&res spciaux comme ' 5apostrophe8 et J 5guillemet8 ainsi que d'autres que nous #errons lorsque nous aborderons l'criture de commandes plus complexes ainsi que les scripts.

13

c.

Paramtres avec un tiret

1i un param&tres commence par un tiret" comment faire pour que .a ne soit pas trait comme une option 9l est possible d'indiquer explicitement la sparation entre les options et les param&tres en indiquant P tirets 5<<8 entre les deux. 6xemple A
tou'/ 44 4le6i'/ier

d.

Le copier / coller

!a question que l'on fini tou(ours par se poser A comment peut<on faire un copier coller dans un terminal 1i certains terminaux graphiques affichent un menu lors d'un clic droit permettant de copier coller ce n'est pas gnral. 7n ne peut pas non plus utiliser de raccourcis cla#ier comme C'RL6C C'RL60 car ils ont un autre rLle 5en#o%er des signaux8. 6n re#anche il existe une autre mthode" tr&s pratique" utilisable dans toutes les applications sous GNU/Linux. 9l suffit a#ec la souris de slectionner le texte" ce qui slectionne et copie en m)me temps" ensuite a#ec le clic central 5celui de la molette8 on colle le texte. 1i la souris ne poss&de que P boutons" le clic central est mul par l'appui simultan du bouton gauche et du bouton droit.

3.+.

Les *#iteu"s #e texte en te"mina'

'etite parenth&se pour introduire certains programmes qui seront ncessaires tout au long de la formations A les diteurs. 6n effet" $ de nombreuses reprises nous aurons $ manipuler des fichiers textes" soit pour lire leur contenu soit pour le modifier ce contenu. Nous allons donc #oir quelques diteurs sou#ent prsent par dfaut sur les distributions. Nous a#ons #u qu'a#ec cat nous pou#ions lire le contenu d'un fichier" mais lorsqu'il est long cela n'est pas tr&s pratique" nous #errons plus tard que l'on peut complter le comportement de cat a#ec d'autres outils. 6n attendant regardons quelques diteurs.

a.

pico et nano

9l existe plthore d'diteurs utilisables dans un terminal" allant de tr&s simples diteurs $ des outils tr&s complets et asse> difficiles $ utiliser. ans les diteurs tr&s simples nous a#ons A nano et pico. pico est un clone de nano" leurs interfaces et leurs commandes sont identiques.

14

Fi%ure 45 3a'ture d01cran de .i o

Fi%ure $5 3a'ture d01cran de nano

!es raccourcis sont inscrits en bas" le signe 'Y' correspond $ la touche C'RL. onc" par exemple" pour quitter il faut faire C'RL 6 x. 7n dite simplement un fichier par A
nano no%7du76i'/ier

ou
pi'o no%7du76i'/ier

!eur utilisation est semblable $ n'importe quel diteur auquel on est habitu A on peut modifier directement le texte" utiliser les touches backspace et suppr. ,alheureusement" parfois ces P diteurs ne sont pas disponibles par dfaut" il faut donc se tourner soit #ers 0* soit #ers emacs d'utilisation bien moins #idente.

b.

VI, le minimum VItal

Chaque changement de mode commence par un appui sur la touche -chap 5-sc8" pour pou#oir diter le contenu il faut passer en mode *nsertion #ia -sc puis i. Attention" car m)me en mode insertion on ne peut pas utiliser les touches suppr ou backspace. 'our re#enir en mode commande il suffit d'appu%er de nou#eau sur -sc" ensuite chaque touche appu%e est considre comme une commande. Ioici un tableau de quelques commandes A
Commande Effet dd ' x / u ZZ A0[ Aq[ Coupe la ligne courante Colle au dbut de la ligne 1upprime le caract&re sous le curseur 1upprime la fin de la ligne /emplace caract&re par caract&re faire les modifications 5undo8 1au#egarde les modifications et quitte I9 1au#egarde les modifications Uuitte I9 Tableau 25 3ommandes de 1I 15

c.

Emacs

-macs est un diteur dans le m)me st%le que 0*" $ base de raccourcis cla#ier. Cependant cette fois on peut effectuer directement les modifications sans de#oir passer par un mode insertion et les touches suppr et backspace sont utilisables.

Commande C:/! ? espace au dbut de la partie $ slectionner" positionner le curseur $ la fin de la >one $ slectionner 61C ? 0 C:/! ? 0 C:/! ? % C:/! ? x u C:/! ? x C:/! ? s C:/! ? x C:/! ? c

Effet 1lectionne

Copie la slection Coupe la slection Colle la slection 5copie ou coupe8 faire les modifications 5undo8 1au#egarde les modifications Uuitte emacs Tableau $5 3ommandes d02ma s

4. &ani'ulation des dis(ues


,aintenant que l'on sait comment se nomme un disque et que le terminal n'est plus totalement inconnu" on pourrait #oir comment le partitionner.

+.1.

Le .a"titionnement

C'est extr)mement simple" l'outil en console le plus simple pour partitionner se nomme cfdisk et s'utilise ainsi A cfdisC '6/9'B6/9UU6 par exemple A
'6dis3 /dev/sda

Fi%ure 55 3a'ture d01cran de ,#is3 16

1i on #a dans le menu t9pe on peut #oir une tr&s longue liste de t%pe de s%st&mes de fichiers 5,S O ,ileS9stem8. C'est l'un des premiers choix $ faire lorsqu'on dsire utiliser un s%st&me GNU/Linux. !e s%st&me de fichier est l'organisation $ l'intrieur du disque des fichiers ou des morceaux de fichiers. !e choix est important car il influe sur les performances et la fiabilit. Contrairement $ windows qui ne g&re que la ,$' et le N',S" on peut utiliser un tr&s grand nombre de ,S diffrents sous GNU/Linux. 'ar exemple le ext4fs sera utilis uniquement sur la partition /boot car il est tou(ours compil en dur dans le no%au alors que les autres sont sou#ent compils en tant que modules 5on re#iendra plus tard sur ces notions8. Cependant l:ext4fs est aussi fiable que la ,$' A c'est $ dire pas du tout. 9l faut pri#ilgier un ,S (ournalis" c'est<$<dire qui dispose d'un (ournal des diffrentes critures ce qui permet de corriger les probl&mes lors d'un blocage ou d'un arr)t brutal du s%st&me. L:ext;fs est la #ersion ext4fs (ournalise qui a fait ses preu#es" plus rcemment l:ext1fs est disponible. ,ais d'autres sont tout aussi excellents comme le Reiser,S" #,S ou le <,S. 9l % a un autre t%pe de partition" plus particulier A la S/$). !a S/$) est une partition spciale qui permet au s%st&me" lorsqu'il manque d'espace libre dans la mmoire #i#e" de dplacer les donnes peu utilises par des programmes en cours d'excution afin de librer de la mmoire. 9l est important de bien penser que le t%pe indiqu lors du partitionnement a#ec cfdisk n'est qu'indicatif. C'est lors du formatage de la partition qu'elle prendra #raiment son t%pe. cfdisk ne fait que crer la table de partition" il ne touche pas aux partitions elles<m)mes.

+.2.

Le ,o"mata/e

7n peut maintenant passer au formatage des partitions. Chaque outils de formatage poss&de ses propres options et param&tres. Nous n'en #errons donc que quelques uns. ans la plupart des cas il n'est pas ncessaire d'utiliser des options particuli&res" les #aleurs assignes par dfaut sont normalement bien choisies. Formatage en Reiser,S A
%36s&reiser6s P.-)P2.-)8U.

Formatage en -xt;,S A
%36s&e$t# P.-)P2.-)8U.

Formatage en ,$';4 A
%3dos6s (OPT)O*S+ 4! #" P.-)P2.-)8U.

!'option <c permet de #rifier l'intgrit ph%sique du disque a#ant de formater.


17

Cration d'une S/$) A


%3swap (OPT)O*S+ P.-)P2.-)8U.

!'option <c permet de #rifier l'intgrit ph%sique du disque a#ant de formater. Acti#ation de la S/$) A
swapon P.-)P2.-)8U.

)-R*) -R*=U- est un fichier dans /de!2 par exemple /de!/sda4 pour la deuxi&me partition du premier disque de la machine. 9l existe aussi diffrents ,S spciaux qui peu#ent se r#ler extr)mement pratiques. 'ar exemple tmpfs est un s%st&me de fichiers dans lequel les fichiers crs restent en mmoire #i#e et ne sont pas crits sur le disque dur 5mais peu#ent passer en S/$) si besoin est8. $u,S et Union,S permettent de fusionner plusieurs points de montage" par exemple dans le cas d'un Li!eCD2 on a un s%st&me de fichiers qui est en lecture seule et qui pro#ient du C " cependant il est quand m)me pratique de pou#oir modifier ou a(outer des fichiers pendant son utilisation. Ainsi $u,S permet de fusionner ce s%st&me en lecture seule a#ec un 'mp,S. /sultat on peut modifier les fichiers" normalement en lecture seule" et en a(outer sans criture sur le support.

+.3.

Le monta/e
a. La commande mount

6xaminons comment monter un priphrique manuellement. C'est la commande mount qui permet de faire cela et peut s'utiliser asse> simplement.
%ount (OPT)O*S+ (4t T9P.+ P.-)P2.-)8U. -.P.-TO)-.

mount peut dterminer automatiquement le ,S d'une partition" la plupart du temps il est donc inutile d'utiliser l'option <t pour indiquer le t%pe. '6/9'B6/9UU6 est le nom de fichier du priphrique $ monter. Comme on l'a #u chaque priphrique poss&de un fichier dans /de!. 'ar exemple /de!/sda3 pour la premi&re partition du premier disque de la machine. !e s%st&me de fichier sera mont dans le rpertoire indiqu par le dernier param&tre" c'est qu'on appelle le point de montage 5mountpoint8. Ainsi la plupart du temps on aura la commande sui#ant A
%ount P.-)P2.-)8U. -.P.-TO)-.

mount poss&de une option tr&s intressante permettant de monter des images" comme les 917 pour les C / I " au lieu d'un priphrique ph%sique. !'option est <o loop

18

6xemple A
%ount 4o loop 4t iso:;;0 %oni%a0e&iso /%nt/t%p

!a commande mount telle qu'on #ient de la #oir ncessite d')tre super utilisateur 5root8. 7n sait que c'est mount qui permet de monter des ,S" on peut se demander comment fait le s%st&me au dmarrage pour sa#oir quelles partitions il doit monter et o; il doit le faire -

b.

Le fichier fstab

9l existe un fichier tr&s important qui indique tout .a au s%st&me c'est fstab que l'on peut trou#er dans /etc. 6xaminons comment est rempli fstab A
(t/aeron<syndro%e 1+= 'at /et'/6sta> /dev/sda? swap swap /dev/sda1 / reiser6s /dev/sda# //o%e reiser6s /dev/sd>" /%nt/#?0@o reiser6s /dev/'dro% /%nt/'dro% auto /dev/sd'1 /%nt/'le6 auto /dev/6d0 /%nt/6loppy auto devpts /dev/pts devpts pro' /pro' pro' t%p6s /dev/s/% t%p6s de6aults de6aults de6aults de6aults noautoAuserAro noautoAuser noautoAowner 0idB?A%odeB;"0 de6aults de6aults 0 1 1 1 0 0 0 0 0 0 0 1 " " 0 0 0 0 0 0

7n reconna@t des lments qu'on a d($ #u. ans la premi&re colonne il % a le nom du priphrique $ monter identifi par son fichier dans /de!" ou le nom du ,S spcial comme tmpfs. ans la deuxi&me colonne il % a le point de montage. ans la troisi&me colonne c'est le t%pe du ,S. 7n #oit qu'on peut utiliser auto pour une dtection automatique tr&s utile dans le cas o; plusieurs ,S diffrents pourraient )tre utiliss sur le m)me priphrique. 'ar exemple on pourrait disposer de P clefs U1H l'une en ,$'3> et l'autre en ,$';4 ainsi qu'un disque dur U1H en N',S. !a quatri&me colonne indique les options de montage. defaults utilise les param&tres par dfaut spcifique du F1. 'ar exemple pour le -xt;,S rw" suid" de!" exec" auto" nouser" as9nc.

1'

!es options communes $ tous les t%pes de s%st&mes de fichiers sont A


Options ro / r0 suid / nosuid de# / node# exec / noexec auto / noauto user / nouser s%nc / as%nc defaults Description ,ontage en lecture seulement/lecture<criture Autorise ou interdit les oprations sur les bits suid et sgid 9nterpr&te/n'interpr&te pas les priphriques caract&res ou les priphrique blocs spciaux sur le s%st&me de fichiers Autorise ou interdit l\excution de fichiers binaires sur ce s%st&me de fichiers !e s%st&me de fichiers est 5c\est l\option par dfaut8 / n'est pas mont automatiquement 'ermet $ tout utilisateur / seulement $ root 5C\est le paramtrage par dfaut8 de monter le s%st&me de fichiers correspondant 1elon cette #aleur" toutes les entres/sorties se feront en mode s%nchrone ou as%nchrone Utilise le paramtrage par dfaut 5c\est qui#alent $ r0" suid" de#" exec" auto" nouser" as%nc8 Tableau 45 6'tions de mount dans ,sta-

!es colonnes ] et R correspondent $ l'archi#age et $ la #rification des ,S. 7n ne dtaillera pas car elles ne sont pas tr&s utiles. GrDce $ ce fichier fstab on peut spcifier l'option user qui #a permettre $ un utilisateur non(root de pou#oir monter le priphrique. 'our que la commande mount consulte le fichier fstab afin d'oprer 5ou de refuser8 le montage il faut l'utiliser de cette fa.on A
%ount P.-)P2.-)8U.

ou
%ount MOU*TPO)*T

6n omettant un des P param&tres mount #a aller chercher les correspondances dans le fichier fstab.

c.

Le fichier mtab

Chaque fois qu'une partition est monte par mount une ligne est a(oute dans mtab 5localis dans /etc8. C'est ce fichier qui recense tous les priphriques monts et est consult par mount pour #iter de multiples montages.
root<0eii4d/'pC1D 'at /et'/%ta> /dev/sda1 / reiser6s rw 0 0 pro' /pro' pro' rw 0 0 sys6s /sys sys6s rw 0 0 us>6s /pro'/>us/us> us>6s rw 0 0 /dev/sd>1 //o%e reiser6s rw 0 0 t%p6s /dev/s/% t%p6s rw 0 0 /dev/sd'1 /%nt/>a'3up7drive reiser6s rw 0 0

2(

d.

La commande umount

!a commande complmentaire de mount est umount qui permet de dmonter les priphriques. 9l est tr&s important de penser $ dmonter 5ce qui est fait automatiquement lors de l'arr)t propre du s%st&me8 car toutes les modifications apportes sur le ,S sont tamponnes 5bufferis?es8. Ainsi lors d'une criture certaines donnes" #oire toutes selon la taille de l'criture" restent dans un tampon du no%au et ne seront crites que lors d'une s%nchronisation ou d'une demande de dmontage du ,S. umount s'utilise tr&s simplement A
u%ount P.-)P2.-)8U.

ou
u%ount MOU*TPO)*T

5. Les *ic!iers
4.1. D"oits #es ,i !ie"s

A chaque fichier correspond un crateur 5owner8 du fichier" un groupe 5pas forcment celui du crateur8" et des droits pour le crateur" le groupe et les autres. /egardons un exemple A
t/aeron<SEuirrelMon3eyC1= ls 4la/ rev%d?&' 4rw4r44r44 1 t/aeron users F&"G "00:4104#0 0:C"" rev%d?&'

!a premi&re colonne correspond aux droits du fichier. Un tiret indique W rien X" le premier caract&re indique des attributs spciaux comme A rpertoire" lien s%mbolique 5ou ph%sique8" socket" suid. 6nsuite .a se lit par E caract&res A
r0< r<< r<< droits du o0ner du fichier 5ici W thaeron X8 droits pour le groupe 5ici W users X8 droits pour tous les autres.

Autre exemple A
t/aeron<SEuirrelMon3eyC1= ls 4la/ ns7>uild7%odule&s/ 4rw$444444 1 t/aeron users ?&#G "00:41140# ""C?1 ns7>uild7%odule&s/H

9ci on a tous les droits pour le owner 5W thaeron X8 et rien pour tous les autres m)me ceux qui appartiennent au m)me groupe.
r signifie /ead A lecture permise 0 signifie ^rite A criture permise x signifie eMecution A excution permise

21

Ceci est une mani&re de reprsenter les droits" il en existe une autre base sur les nombres. 'ar exemple r0<r_<r<< correspond $ R44 et r0x<<<<<< $ F== 7n se rend compte que c'est tr&s simple A x vaut 1 (0b001) w vaut 2 (0b010) r vaut 4 (0b100) 9l suffit d'additionner la #aleur des droits que l'on #eut mettre. !e premier chiffre du nombre correspondant au owner" le deuxi&me au groupe et le dernier aux autres comme prcdemment. 7n peut maintenant se poser la question A comment modifier le owner" le groupe et les droits 9l a une commande pour chaque A
chmod permet de changer les droits" cho0n permet de changer le o0ner" chgrp permet de changer le groupe. '/%od (OPT)O*S+ MOI. !)C2).-1 (!)C2).-"+&&&

7n peut utiliser pour ,7 6 la #aleur numrique que l'on #ient de #oir. ,ais il existe une autre mthode" moins flexible mais bien plus simple A on peut indiquer" pour a(outer des droits" '?' sui#i des lettres r"0"x ou '`' pour supprimer des droits. Cependant lorsqu'on utilise cette mthode les droits seront a(outs pour le owner" le groupe et les autres. 6xemple A
'/%od Jr$ %on6i'/ier '/%od 4w %on6i'/ier

!'option (R permet de rendre le comportement de chmod rcursif A il #a aussi modifier les sous<rpertoires et leurs contenus. chown ne peut )tre utilis qu'en root ou par sudo 5si l'utilisateur fait parti des sudoers8 et s'utilise tr&s simplement A
'/own (OPT)O*S+ LO@)* !)C2).-1 (!)C2).-"+&&&

,*C *-Rn pou#ant )tre un fichier ou un rpertoire. !'option (R permet de rendre le comportement de chown rcursif comme pour chmod.

22

4.2.

Les 'iens sym-o'i0ues et .!ysi0ues

9l existe sur les Unix(like 5dont GNU/Linux8 un t%pe particulier de fichier qui est extr)mement utile et utilis A le lien. 9l peut )tre W s%mbolique X 5s9mlink8 ou W ph%sique X 5hardlink8. !e lien permet de crer une sorte de raccourci qui sera #u comme tant le rpertoire ou le fichier cible de fa.on transparente. C'est<$<dire que tout programme agissant sur un fichier ou un rpertoire peut utiliser un lien $ la place. Alors" $ quoi cela pourrait<il ser#ir 9maginons que l'on ait un programme ou une biblioth&que et que l'on en ait besoin dans plusieurs rpertoires diffrents. 7n pourrait tr&s bien le copier. Cependant en cas de mise<$<(our il faudrait copier de nou#eau. C'est l$ que le lien inter#ient. Un autre exemple plus concret" nous a#ons #u les fichiers de /de! et le contenu de /etc/fstab et nous a#ions cette ligne la ligne sui#ante A
/dev/'dro% /%nt/'dro% auto noautoAuserAro 0 0

1i nous regardons les proprits de /de!/cdrom A


(t/aeron<syndro%e 1+= ls 4l /dev/'dro% lrw$rw$rw$ 1 root root # "00:40#410 0:C#F /dev/'dro% 4K sr0

Nous a#ions #u que la premi&re lettre des attributs du fichier concerne leur t%pe 5rpertoire / lien / socCet / rien O fichier rgulier8. 9ci nous a#ons un 'l' ce qui indique que c'est un lien qui pointe sur sr@ mais le path est relatif $ celui du lien donc /de!/cdrom pointe sur /de!/sr@. C'est un lien s%mbolique mis en place par le s%st&me au dmarrage afin de conser#er le m)me fichier de priphrique pour le C </7, quelque soit le #rai priphrique 5il pourrait )tre U1H" 9 6 ou 1A:A8" ou on pourrait en a#oir plusieurs. !es liens s%mboliques ne sont que des sortes de raccourcis ou de pointeurs pointant sur un fichier 5ou rpertoire8 cible. 9ls ont les m)mes proprits et droits que leur cible. 1i on supprime le fichier cible le lien existe tou(ours mais il est alors cass 5broken link8. !e lien s%mbolique n'est en rien une copie du fichier rel. 'our crer un lien s%mbolique on utilise la commande ln a#ec l'option (s
ln 4s C) L. L).*

!es liens ph%siques 5hardlink8" ou appels parfois liens matriels" sont des copies W intelligentes X. 9ls hritent des m)mes droits et proprits que leur cible et recopie leur contenu m)me en cas de modifications. :outes modifications 5contenu ou droits8 appliques sur la cible sont rpercutes sur le lien et toutes modifications 5contenu ou droits8 appliques sur le lien sont rpercutes sur la cible. C'est un #ritable miroir de la cible. !a suppression du lien n'affecte pas la cible et la suppression de la cible n'affecte pas le lien. Cependant on ne peut pas crer un lien ph%sique d'un rpertoire. 'our crer un lien ph%sique on utilise la commande ln sans option A
ln 'i>le lien 23

4.3.

Re !e" !e" #es ,i !ie"s

'our rechercher des fichiers sous GNU/Linux nous a#ons le choix entre P programmes A locate et find.

a.

locate

locate permet de faire une recherche tr&s rapide car il ne recherche pas directement les fichiers mais consulte une base indexant tous les fichiers. 9l faut donc pralablement crer l'index en utilisant la commande updatedb A
updated>

updatedb s'utilise sans option et sans param&tre a#ec les droits root. 6nsuite on utilise locate de la fa.on sui#ante A
lo'ate (OPT)O*S+ MOTIF

!a seule option utile de locate est (i qui permet de rendre la recherche insensible $ la casse. M&'*, est une partie du nom des fichiers que l'on recherche. 6xemple A
(t/aeron<syndro%e 1+= lo'ate %allo' /usr/in'lude/wine/%sv'rt/%allo'&/ /usr/in'lude/%allo'&/ /usr/in'lude/Lasper/Las7%allo'&/ /usr/in'lude/li>0uile/%allo's&/ /usr/in'lude/li>0uile/de>u04%allo'&/ /usr/in'lude/val0rind/pu>7tool7repla'e%allo'&/ /usr/in'lude/val0rind/pu>7tool7%allo'6ree&/

b.

find

A l'in#erse de locate" find parcourt le s%st&me de fichiers pour trou#er les fichiers correspondant au motif recherch. 1on utilisation est un peu plus complexe et est dtaille dans la section 3.2.g. Nous ne #errons ici qu'une utilisation basique.
6ind PATH 4(i+na%e JM&'*,J

)$' est le chemin de dbut de la recherche. 7n utilisera '.' pour rechercher $ partir du chemin courant. !'option (name est sensible $ la casse alors que (iname ne l'est pas. M&'*, est le motif $ rechercher" contrairement $ locate on ne peut pas (uste indiquer un morceau du nom" il faut utiliser les (oCers 5dtaills dans la section *.P8. 6xemple A
Sthaeronas%ndrome filmsTb find /usr/include <name JGmalloc.hJ /usr/include/0ine/ms#crt/malloc.h /usr/include/malloc.h /usr/include/(asper/(ascmalloc.h /usr/include/libguile/debug<malloc.h /usr/include/#algrind/pubctoolcreplacemalloc.h

24

4.+.

I#enti,ie" #es ,i !ie"s

Nous a#ons #u que" presque" toutes les commandes que nous utilisons depuis le dbut sont des programmes indpendants. 7r nous ne tapons (amais d'extensions comme 5exe sous windows. Ce n'est pas parce que le s%st&me les a(oute automatiquement" c'est tout simplement parce qu'il n'% en a pas. 1ous GNU/Linux et les autres Unix(like les extensions ne sont pas ncessaires et sont (uste des rep&res pour l'utilisateur. !a question est donc de sa#oir de quel t%pe est ce fichier sans extension. A l'instar de l:iphone o; il % a une application pour tout" nous a#ons une commande pour tout. ans le cas qui nous intresse c'est la commande file. file anal%se le fichier" et surtout des squences particuli&res qui contiennent pour 33d des formats quelques octets spcifiques renseignant sur le t%pe. file prend en param&tres le ou les noms des fichiers dont on #eut sa#oir le t%pe A
6ile !)C2).-1 (!)C2).-"+&&&

'renons le cas d'un fichier +M) 5windows bitmap8" son t%pe est indiqu dans les P premiers octets du fichier A =x4P =x4d ce qui donne en A1C99 W H, X. Irifions les premiers octets" ceci grDce au programme hexdump qui affiche le contenu du fichier en hexadcimal et en A1C99 si on le lui demande. Comme tous les programmes que nous a#ons #u depuis le dbut" hexdump s'utilise comme ceci A
/e$du%p (OPT)O*S+ !)C2).-

!es options intressantes d'hexdump A


<C A affiche en hexadcimal dans la premi&re colonne et en A1C99 dans la deuxi&me <n taillecoctets A ne traite que les premiers octets spcifi dans taillecoctets.

onc nous faisons A


Sthaeronas%ndrome eTb hexdump <C <n 2R imageplateaucP.bmp ======== 4P 4d ER 2= =e == == == == == ER == == == P* == fH,R.......R...5.f ======2=

Nous #o%ons bien dans les premiers octets W H, X. Irifions maintenant si file confirme ceci A
(t/aeron<syndro%e 1+= 6ile i%a0eplateau7"&>%p i%a0eplateau7"&>%pC PC >it%apA Mindows #&$ 6or%atA ;N0 $ NO0 $ "N

6n plus du t%pe lui<m)me" file peut" sui#ant les formats et la #ersion du programme" fournir d'autres informations comme ici les dimensions de l'image.

25

4.4.

Conna5t"e ')es.a e #is0ue

Nous a#ons #u comment supprimer" a(outer et copier des fichiers. 6t nous sa#ons comment #oir la taille d'un fichier. Cependant nous ne sa#ons pas encore comment conna@tre la taille d'un rpertoire. 6n effet ls ne peut pas indiquer la place que prend un rpertoire a#ec tout son contenu. 'our cela il existe un autre programme nomm du acron%me de Disk Usa%e. du s'utilise comme les autres commandes A
du (OPT)O*S+ (-.P.-TO)-.+

1auf que cette fois on peut omettre R-)-R'&*R-" dans ce cas c'est le )$' courant qui sera cibl. du poss&de beaucoup d'options mais #o%ons les plus utiles A
Option <h <s <a Description W human readable X" comme pour ls les tailles sont affiches en Vo" ,o ou Go afin que .a soit lisible pour nous humains. N'affiche que la somme finale. !e comportement par dfaut est d'afficher l'espace utilis pour chaque sous<rpertoire 5de mani&re rcursi#e8. Affiche l'espace utilis pour chaque fichier dans les rpertoires et pas seulement des sous<rpertoires. g#idemment cette option est incompatible a#ec <s. Tableau 55 6'tions de #u

7n sait" maintenant" comment conna@tre l'espace utilis localement. 9l serait ncessaire de conna@tre l'espace restant sur le s%st&me. Hien sKr il % a un programme pour .a A df. 1on utilisation est la sui#ante" et est encore une fois con#entionnelle A
d6 (OPT)O*S+

Io%ons ses options les plus utiles A


Option <h <a <<total Description W human readable X" comme pour du les tailles sont affiches en Vo" ,o ou Go afin que .a soit lisible pour nous humains. Affiche tous les F1 mont" m)me ceux non destin au stocCage. Affiche aussi l'espace utilis total et l'espace libre total. Tableau )5 6'tions de #,

6xemples A
(t/aeron<syndro%e 1+= d6 Sys& de 6i'/& 1G4>lo's O''up Iisponi>le Capa'it Mont sur /dev/root #:0;0O1; F:#:0F" #11"1FNN "1P / /dev/sda# "F"?1O##" O;FN"?O0 1O?FF?F?" #"P //o%e /dev/sd>" #N1O:":"0 ";0F1N#?; O11FO?;N FFP /%nt/#?0@o t%p6s 10"?0ON 0 10"?0ON 0P /dev/s/% /dev/sd'1 #:0??1; 10#ONON "O;F0#" "FP /%nt/'le6 26

(t/aeron<syndro%e 1+= d6 4/ 44total Sys& de 6i'/& Tail& O''& Iisp& PO''& Mont sur /dev/root #O@ FA;@ #0@ "1P / /dev/sda# ";0@ O#@ 1FO@ #"P //o%e /dev/sd>" #"F@ "N:@ FO@ FFP /%nt/#?0@o t%p6s 100"M 0 100"M 0P /dev/s/% /dev/sd'1 #AO@ 101?M "AO@ "FP /%nt/'le6 total ;"O@ #N0@ "OO@ ??P (t/aeron<syndro%e 1+= d6 4a/ 44total Sys& de 6i'/& Tail& O''& Iisp& PO''& Mont sur /dev/root #O@ FA;@ #0@ "1P / pro' 0 0 0 4 /pro' sys6s 0 0 0 4 /sys us>6s 0 0 0 4 /pro'/>us/us> /dev/sda# ";0@ O#@ 1FO@ #"P //o%e /dev/sd>" #"F@ "N:@ FO@ FFP /%nt/#?0@o t%p6s 100"M 0 100"M 0P /dev/s/% none 0A0G 0A0G 0A0G 4 /pro'/6s/v%>lo'3/%ountPoint /dev/sd'1 #AO@ 101?M "AO@ "FP /%nt/'le6 total ;"O@ #N0@ "OO@ ??P

). Les utilisateurs
6.1. C"*ation #e nouveaux uti'isateu"s et /"ou.es

7n a #u que GNU/Linux tait un #rai s%st&me multi<utilisateurs $ l'instar d'Unix. 9l est temps de #oir comment on cre des utilisateurs" des groupes et les fichiers qui % sont associs. 'our crer un utilisateur il existe P commandes. !a premi&re adduser est tr&s simple $ utiliser puisque l'outil est interactif A il suffit de rpondre aux questions poses. !a seconde useradd est plus complique car il faut tout spcifier en param&tres sur la ligne de commande" cependant elle a l'a#antage de permettre une utilisation automatise #ia des scripts dont nous #errons la cration dans la suite de la formation. g#idemment ces deux programmes ncessitent une excution en tant que root. /egardons tout d'abord adduser.
root<0eii4d/'pC1D adduser Lo0in na%e 6or new user (+C jack User )I (QU)IQ) ( de6aults to ne$t availa>le +C )nitial 0roup ( users +C ,dditional U*)R 0roupsC Users 'an >elon0 to additional U*)R 0roups on t/e syste%& !or lo'al users usin0 0rap/i'al des3top lo0in %ana0ers su'/ as RIM/GIMA users %ay need to >e %e%>ers o6 additional 0roups 27

to a''ess t/e 6ull 6un'tionality o6 re%ova>le %edia devi'es& H Se'urity i%pli'ations H Please >e aware t/at >y addin0 users to additional 0roups %ay potentially 0ive a''ess to t/e re%ova>le %edia o6 ot/er users& )6 you are 'reatin0 a new user 6or re%ote s/ell a''ess onlyA users do not need to >elon0 to any additional 0roups as standardA so you %ay press .*T.- at t/e ne$t pro%pt& Press .*T.- to 'ontinue wit/out addin0 any additional 0roups Or press t/e UP arrow to add/sele't/edit additional 0roups C 2o%e dire'tory ( //o%e/La'3 + S/ell ( />in/>as/ + .$piry date (99994MM4II) (+C *ew a''ount will >e 'reated as 6ollowsC 444444444444444444444444444444444444444 Lo0in na%e&&&&&&&C La'3 U)I&&&&&&&&&&&&&&C ( *e$t availa>le + )nitial 0roup&&&&C users ,dditional 0roupsC ( *one + 2o%e dire'tory&&&C //o%e/La'3 S/ell&&&&&&&&&&&&C />in/>as/ .$piry date&&&&&&C ( *ever + T/is is it&&& i6 you want to >ail outA /it Control4C& .*T.- to 0o a/ead and %a3e t/e a''ount& Creatin0 new a''ount&&& C/an0in0 t/e user in6or%ation 6or La'3 .nter t/e new valueA or press .*T.- 6or t/e de6ault !ull *a%e (+C -oo% *u%>er (+C Mor3 P/one (+C 2o%e P/one (+C Ot/er (+C C/an0in0 password 6or La'3 .nter t/e new password (%ini%u% o6 ?A %a$i%u% o6 1"F '/ara'ters) Please use a 'o%>ination o6 upper and lower 'ase letters and nu%>ers& *ew passwordC -e4enter new passwordC Password '/an0ed& ,''ount setup 'o%plete& Ot/erwiseA press

28

/egardons les questions en dtails. <!'outil demande d'abord le lo%in" c'est le nom de l'utilisateur. <!'9 5ici U9 8 est un nombre associ $ l'utilisateur" par exemple pour root c'est tou(ours =. Cet 9 est unique" deux utilisateurs ne peu#ent a#oir le m)me. !a plupart du temps on peut laisser l'outil choisir lui<m)me. <9l faut ensuite indiquer le groupe auquel appartiendra l'utilisateur" on #erra ensuite comment crer un nou#eau groupe. Nous a#ons #u cette notion de groupe dans les droits des fichiers. <9l est possible ensuite d'a(outer l'utilisateur dans des groupes supplmentaires pour qu'il ait des droits supplmentaires bien spcifiques. ans la plupart des cas c'est inutile. <!a question sui#ante c'est le rpertoire &M- du user. 'ar con#ention c'est tou(ours /home/lo%in 5sauf pour root8. C'est dans ce rpertoire que l'utilisateur pourra stocCer ses donnes. <Comme nous l'a#ons #u au dbut il existe plusieurs shell2 le plus populaire et utilis est bash. A moins que #ous a%e> une prfrence particuli&re pour un autre shell" bash est le bon choix. <!es comptes peu#ent a#oir une date de #alidit" c'est $ ce moment l$ qu'on l'indique si on #eut en fixer une. <!es autres informations 5Name" /oom number" ^orC phone etc8 ne sont pas importantes" elles sont m)me inutiles. <!a derni&re question est le mot de passe" on #erra ensuite comment l'enle#er en cas de besoin.

A l'instar de adduser" useradd peut dfinir certaines informations par dfaut. Ce sont les m)mes que pour adduser. 'ar exemple le groupe sera users" l'U9 sera le prochain disponible" et le rpertoire &M- /home/lo%in. Attention" car si adduser cre le rpertoire &M- de l'utilisateur useradd ne le fait pas par dfaut. !es options de useradd sont les sui#antes et on peut ne pas les spcifier si on accepte les #aleurs par dfaut A
<u U9 <g G/7U'6 <G G/7U'6cA 9:97NN6!2S"G/7U'6cA 9:97NN6!PS"...TT <d /6'6/:79/6cB7,6 <s 'A:Bc Uc1B6!! <m pour crer le rpertoire B7,6 de l'utilisateur

!a s%ntaxe de useradd est la sui#ante A


useradd (OPT)O*S+ LO@)*

6xemple A
useradd 40 users 4d //o%e/La'3 4s />in/>as/

2'

!e compte cr par useradd est dsacti# par dfaut car il ne poss&de pas de mot de passe. 'our l'acti#er il faut lui a(outer un mot de passe ce qui acti#era le compte en m)me temps.

!e changement de mot de passe se fait par la commande passwd A


passwd (LO@)*+

1i le lo%in n'est pas indiqu" le changement de mot de passe sera fait sur l'utilisateur courant. 6n tant root" on peut indiquer le lo%in dont on #eut mettre 5ou changer8 le mot de passe.

'our supprimer un utilisateur il suffit d'utiliser la commande userdel A


userdel LO@)*

6xaminons la cration de groupe. C'est une tDche bien plus simple que la cration d'un utilisateur. !e nom de la commande est explicite A %roupadd5 !a principale option est (% G*D permettant d'affecter une #aleur enti&re particuli&re au groupe.
0roupadd (OPT)O*S+ @-OUP.

!a suppression est encore plus simple A


0roupdel @-OUP.

6.2.

Les ,i !ie"s asso i*s

6xaminons ce qui est sous la surface A les fichiers lis aux groupes et aux utilisateurs.

Fichier /etc/pass0d /etc/shado0 /etc/group

Contenu 9nformations sur les comptes utilisateurs 9nformations scurises sur les comptes utilisateurs 9nformations sur les groupes

Tableau +5 Fic!iers contenant les in*ormations sur les utilisateurs et %rou'es

/etc/passwd est format de la mani&re sui#ante A


lo0inC%dp7a'ti6CU)IC@)ICin6o7utilisateurCpat/7/o%eCpat/7s/ell

7n retrou#e la plupart des informations que l'on a #u lors de la cration des utilisateurs.

3(

Champ login mdpcactif U9 G9 infocutilisateur pathchome pathcshell

Description le nom de l'utilisateur x s'il % a un mot de passe" rien sinon identifiant 5nombre entier8 de l'utilisateur identifiant 5nombre entier8 auquel l'utilisateur appartient les informations comme le #rai nom" numro de tlphone" le rLle etc. chemin du rpertoire B7,6 de l'utilisateur chemin du shell de l'utilisateur Tableau #5 7"ntaxe de /et /.ass%#

6xemples A
rootC$C0C0CC/rootC/>in/>as/ t/aeronC$C1000C100CAAAC//o%e/t/aeronC/>in/>as/ apa'/eC$CO0CO0CUser 6or ,pa'/eC/srv//ttpdC/>in/6alse

'etite explication sur le dernier. Apache est un ser#eur B::' 50eb8 libre et comme de nombreux logiciels orients rseaux il ncessite de fonctionner #ia un compte cr spcialement. Ainsi en cas de piratage le pirate n'aura que les droits tr&s limit du ser#eur. e plus" tant donn que .a n'est pas un #rai utilisateur il n'a pas besoin de shell" ainsi on spcifie /bin/false qui est un programme qui ne fait rien et ren#oie une erreur. 7n remarque que l'utilisateur est quand m)me cens )tre protg par un mot de passe. !e fichier /etc/shadow contient des donnes plus sensibles comme les mots de passes 5chiffrs8. 6xemples A
apa'/eCHC:F:FC0CCCCC rootC=1=!FG1OG1T=SR /:0/./u@F/NSCvC0/G/C1#;O;C0CCCCC

!e premier champ est le lo%in d'utilisateur. !e deuxi&me champ est le mot de passe chiffr. !e troisi&me champ est le nombre de (ours couls depuis le 2er (an#ier 23F=. !e reste des champs correspond aux (ours d'expiration" demande changement de mot de passe" obligation de changement de mot de passe etc. 1i par exemple on enl&#e le mot de passe de root et que l'on sau#egarde ainsi le fichier on pourra de#enir super<utilisateur sans qu'aucun mot de passe ne soit demand. 7n comprend alors pourquoi il % a une toile en tant que mot de passe pour l'utilisateur apache A si on essa%ait d'utiliser ce compte le mot de passe serait tou(ours refus.

!e formatage de /etc/%roup est encore plus simple et est comme ceci A


no%70roupeC%dp7a'ti6C@)ICautre70roupe1Aautre70roupe"A&&&

31

Champ nomcgroupe mpdcactif G9

Description explicite c'est le nom du groupe contrairement $ /etc/passwd un x indique qu'il n'% en a pas 5et il n'% en a (amais8 l'identifiant 5nombre entier8 du groupe

autrecgroupe2"autrecgroupeP"... nom des autres groupes qui en font parti" par exemple root est quasiment prsent dans tous les autres. Tableau .5 7"ntaxe de /et //"ou.

6.3.

C!an/ement #)uti'isateu"7 #e ."ivi'/es

'our lire ces fichiers" pour crer des utilisateurs" etc il faut )tre root 5super< utilisateur8. 9l est donc temps de #oir comment faire.

a.

Commande su

9l % a une seule commande qui permet de de#enir root et de changer d'utilisateur c'est su. 1i on appelle su sans param&tre c'est root qui sera choisi pour le changement. ans le cas o; on #oudrait changer pour un autre il suffit d'indiquer le lo%in en param&tre $ su A
su (LO@)*+ (OPT)O*S+

!orsqu'on est utilisateur su demande le mot de passe. Ce qui n'est pas le cas lorsqu'on est root.

b.

Commande sudo

9l existe une autre mthode" utilise par plusieurs distributions dont ubuntu" qui ne ncessite plus d'utiliser un compte root mais permet de donner des droits de super<utilisateur temporairement $ un utilisateur. Ce programme est sudo. 9l faut mettre la commande que l'on #eut excuter a#ec des droits suprieurs en param&tres de sudo. 6xemple A
sudo 'at /et'/s/adow

6n ralit sudo est un peu plus puissant que .a puisqu'il permet d'excuter des commandes" pas seulement en root mais" a#ec n'importe quel utilisateur en utilisant son propre mot de passe" ou aucun sui#ant la configuration. 6ncore une fois la configuration est dans un fichier texte" lisible et modifiable par un humain. Ce fichier est /etc/sudoers5
32

/egardons comment le configurer. :out d'abord il faut sa#oir que sudo dispose d'un dlai d'expiration 5timeout8" c'est<$<dire que la premi&re fois qu'on utilise sudo il demande le mot de passe mais ensuite pendant un dlai dfini il ne le demandera plus. onc la premi&re chose $ faire et de configurer ce timeout A
Ie6aultsC,LL ti%esta%p7ti%eoutB*

o; N est le temps en minute a#ant l'expiration. 1i NO= le mot de passe sera tou(ours demand. 6nsuite chaque ligne est construite selon ce formatage A
entit endroitB(utilisateur7'i>le)optionC'o%%ande1AoptionC'o%%ande"A&&& entit peut )tre un utilisateur ou un groupe" dans le cas du groupe il est prcd par d endroit est l'adresse d'o; est connect l'utilisateur 5car on peut se connecter $ distance a#ec ssh8.

Comme a#ec su" sudo permet d'utiliser n'importe quel utilisateur" on peut limiter cette possibilit en renseignant utilisateurAcible. 7ption peut )tre N&)$SS/D pour qu'aucun mot de passe ne soit demand. 1inon il ne faut rien mettre. commande3"commande4"... ce sont les commandes qui pourront )tre excutes" les autres seront re(etes. 'our chaque champ on peut indiquer $LL pour tout autoriser. 6xemples A
,LL ,LLB(,LL) ,LL

7n autorise tout de tout le monde" o; qu'ils soient connects" $ tout excuter en spcifiant son mot de passe en tant que n'importe quel utilisateur.
one ,LLB(root) ,LLA*OP,SSMIC/usr/>in/'at

7n autorise l'utilisateur one" o; qu'il soit connect" $ faire toutes les commandes en root en spcifiant son mot de passe et $ faire cat sans qu'il doi#e spcifier son mot de passe. 7n comprend qu'une mau#aise configuration peut entra@ner un gros trou de scurit.

c.

Qui suis !e " Commandes #hoami, id

A#ec toutes ces commandes de changement d'utilisateur" comment sa#oir qui on est - 9l % a P commandes permettant d'a#oir des informations sur l'utilisateur courant A whoami et id. whoami est tri#ial et affiche le nom de l'utilisateur courant. id est plus complet et affiche toutes les informations de l'utilisateur comme son nom" son U*D" G*D et les groupes additionnels auxquels il appartient. 6xemples A
t/aeron<SEuirrelMon3eyC1= w/oa%i t/aeron t/aeron<SEuirrelMon3eyC1= id uidB1000(t/aeron) 0idB100(users) 0roupsB100(users)

33

+. ,rocessus et si%naux
8.1. 9"o essus

Nous a#ons besoin de conna@tre quelques lments sur les processus. Un processus ce n'est rien d'autre qu'un programme en train de s'excuter. 'lus exactement c'est une tDche d'un programme. Un programme excut peut crer des processus lgers 5threads8 qui ne sont pas des processus $ part enti&re" ou se dupliquer par fork qui recopie le processus on obtient alors" ce qu'on appelle" un processus p&re et un processus fils. 9l existe plusieurs programmes permettant d'afficher les processus en cours sur le s%st&me. !a plus connue et la plus utilise ps. ps s'utilise comme cela A
ps (OPT)O*S+

Cependant" pour une fois" les options de ps sont plus compliques. 7n a comme d'habitude des options commen.ant par un tiret et d'autres" a%ant le m)me nom" qui n'ont pas de tiret. !e comportement par dfaut de ps 5sans option8 n'est pas tr&s utile et n'affiche pas grand chose. Io%ons ses options les plus intressantes.
Option <A <! u f Description Affiche tous les processus. Affiche aussi les threads. Affiche les informations dans un format utile pour l'utilisateur 5a#ec consommation de C'U et de mmoire8. Affiche sous forme d'arbre. Tableau 1/5 6'tions de .s

9l existe une autre forme donnant un rsultat comparable 5#oire identique8 $ <A u" et qui est asse> rpandue dans les tutoriaux c'est A aux. !'affichage sous forme d'arbre permet de #isualiser la notion de processus p&re fils. 'ar exemple en utilisant ps ($ f
"F0;# T S "F0;? pts/" Ss "F0OF pts/" SJ "F10N pts/" SlJ 6or%ation7linu$&odt 0C00 $ter% 460 0reen 4>0 >la'3 0C00 U7 >as/ 0C00 U7 />in/s/ /usr/>in/so66i'e 6or%ation7linu$&odt #C1? U7 /et'/openo66i'e&or0#/pro0ra%/so66i'e&>in

7n #oit que le processus p&re est xterm 5le terminal8" qu'il est le p&re de bash et que bash a excut /bin/sh 5qui est un lien s%mbolique #ers bash8 pour excuter le programme /usr/bin/soffice 5qui est un lien s%mbolique #ers un script shell8 et donc ce script excute /etc/openoffice5or%;/pro%ram/soffice5bin 'etit dtail A
(t/aeron<syndro%e 1+= ls 4l />in/s/ lrw$rw$rw$ 1 root root N "00:41141" 1FC0: />in/s/ 4K >as/

C'est bien un lien s%mbolique #ers /bin/bash

34

7u on aurait pu faire A
(t/aeron<syndro%e />in/s/C sy%>oli' (t/aeron<syndro%e /usr/>in/so66i'eC 1+= 6ile />in/s/ lin3 to V>as/Q 1+= 6ile /usr/>in/so66i'e sy%>oli' lin3 to V/et'/openo66i'e&or0#/pro0ra%/so66i'eQ

C'est donc aussi un lien s%mbolique.

(t/aeron<syndro%e 1+= 6ile /et'/openo66i'e&or0#/pro0ra%/so66i'e /et'/openo66i'e&or0#/pro0ra%/so66i'eC POS)R s/ell s'ript te$t e$e'uta>le

6t lui c'est bien un script shell. 9l n'% a donc aucun m%st&re" tout est cohrent. 'enchons nous un peu plus sur les informations que fournit ps.
(t/aeron<syndro%e 1+= ps au$ US.P)I PCPU PM.M WSX &&& t/aeron "O:#" 0&0 0&1 ?ONOO -SS TT9 #?"N tty1 ST,T ST,-T S 10C?0 T)M. COMM,*I 0C00 $ter%

Colonne U16/ '9 dC'U d,6, I1Z /11 ::h 1:A: 1:A/: :9,6 C7,,AN

Description Utilisateur propritaire du processus. 'rocessus 9 " c'est l'identifiant du processus. !e taux d'utilisation du C'U du processus au moment de la commande. !e taux de consommation de /A, du processus au moment de la commande. Une taille" asse> incomprhensible" utilise par le processus. Comme I1Z 'eu important. gtat du processus 5#oir tableau sui#ant8. :emps ou date de lancement du processus" ici 2=min et ]=s. :emps d'utilisation total du C'U. Nom du programme auquel correspond le processus. Tableau 115 In*ormations de .s

35

!'tat du processus est dcrit par des lettres dont #oici la correspondance A
tat / 1 : Z Q N s l ? Description 6n sommeil qu'on ne peut pas interrompre. 6n fonctionnement normal. 6n attente d'un #&nement. 1topp. Zombie" le processus est termin en attente du processus parent. !e processus est en haute priorit d'excution. !e processus est en basse priorit d'excution. W session leader X" ce n'est pas important. !e processus poss&de des threads 5multi<threads8. !e processus est en a#ant<plan 5foreground8. Tableau 125 8tat des 'rocessus

Nous a#ons #u que ps permettait d'afficher l'utilisation au moment de la commande de l'utilisation mmoire et C'U d'un processus. Cependant on ne peut pas la sui#re en temps rel $ moins de rpter plusieurs fois rapidement la commande. 9l existe bien sKr un programme qui permet de monitorer l'utilisation de ces ressources en classant les processus les plus gourmands en premier. Ce programme est top. 7n peut l'utiliser directement" sans option ni param&tre. Une fois top lanc nous sommes confront $ un probl&me A comment arr)te<t<on top sans de#oir fermer le terminal 'our cela on utilise la combinaison de touche C'RL 6 C. Cette combinaison n'est pas spcifique $ top" elle en#oie un signal au processus lui demandant de s'arr)ter. Nous allons #oir .a en dtail.

8.2.

Les si/naux

Un signal est un ordre" identifi par une #aleur enti&re" en#o% au processus qui a obligation de le traiter ou de l'ignorer. 'our dtailler un peu A le programme doit renseigner que telle ou telle fonction correspond $ un signal. !orsque le signal est mis l'excution du programme est suspendu et c'est la fonction enregistre correspondant au signal qui est excute afin de traiter le signal.

36

Io%ons les principaux signaux A


Signal 19G9N: 19GUU9: 19GV9!! 19G16GI 19G:6/, 19GBU' 19GF'6 19G9!! 19GA!/, 19G'9'6 19G:1:' 19GC7N: Valeur P E 3 22 2] 2 * 4 24 2E Action emande d'interruption 5C:/! ? C8 Arr)t du processus. 1uppression du processus. 6rreur de segmentation 5acc&s mmoire in#alide8 emande de fermeture du processus. :erminal dconnect" sou#ent utilis pour demander au processus de se relancer. 6rreur de #irgule flottante 5sou#ent di#ision par =8 9nstruction illgale. :emporisation coule. Utilisation d'un W tube X cass. Hlocage de l'excution du processus. 5C:/! ? Z8 /eprise de l'excution du processus. Tableau 1$5 ,rinci'aux si%naux

1i certains signaux peu#ent )tre intercepts et traits par le processus" S*G"*LL ne peut pas l')tre et pro#oque la mort du processus. 'our fermer proprement un processus il #aut mieux utiliser les signaux S*G'-RM ou S*G*N'. !an.ons un programme graphique depuis le terminal. 6ssa%ons mousepad qui est un bloc note comme celui de windows. 7n se rend compte que l'on a plus la main sur le terminal. 'our pou#oir taper d'autres commandes il faudrait que mousepad se termine. 7u... 6ssa%ons C:/!?Z" que se passe<t<il Nous #o%ons A S2T? 1topped mousepad

1i nous cherchons mousepad dans les processus actifs nous trou#ons A


(t/aeron<syndro%e 1+= ps au$ US.P)I PCPU PM.M WSX -SS TT9 Y t/aeron #"#"# 0&0 0&O 1":11" 1O##" pts/0 ST,T ST,-T T 1"CN? T)M. COMM,*I 0C00 %ousepad

Nous a#ons #u que ' dans la colonne S'$' signifie que le processus a son excution bloque. 1i nous cliquons sur la fen)tre de mousepad on ne peut plus rien crire dedans" elle semble W plante X. Nous a#ons E possibilit de le relancer A en en#o%ant le signal S*GC&N' pour qu'il reprenne son excution" et P commandes f% et b% qui respecti#ement relance l'excution en a#ant<plant 5f% O abr#iation de fore%round8 ou en arri&re<plan 5tDche de fond" b% O abr#iation de back%round8. 6ssa%ons f%" nous constatons que le processus reprend son excution mais nous n'a#ons tou(ours pas la main sur le terminal.

37

1i nous refaisons C'RL6B et que cette fois nous tapons b% nous constatons que le processus a repris son excution mais que cette fois le terminal est de nou#eau disponible. !e processus tourne maintenant en arri&re<plan. 1i nous cherchons de nou#eau mousepad dans les rsultats de ps A
(t/aeron<syndro%e 1+= ps au$ US.P)I PCPU PM.M WSX -SS TT9 Y t/aeron #"#"# 0&0 0&: 1":"?" 1O?0N pts/0 ST,T ST,-T S 1"CN? T)M. COMM,*I 0C00 %ousepad

1on tat est 'S' 5en attente d'un #&nement8 il n'est donc plus bloqu et on remarque qu'il n'a pas de '?' indiquant que le processus est en a#ant<plan. Nous a#ons #u qu'on pou#ait lui en#o%er un signal pour qu'il reprenne son excution. 'our en#o%er un signal directement $ un processus il faut utiliser la commande kill qui" comme son nom ne l'indique pas" ne sert pas seulement $ tuer des processus. 'our utiliser kill A
3ill (4S)@*,L+ P)I1 (P)I"+Y

1i on n'indique pas le signal" par dfaut c'est le signal S*G'-RM qui est en#o%. onc pour relancer mousepad nous pou#ons faire A
3ill 4S)@CO*T P)I7de7%ousepad

)*DAdeAmousepad est EPEPE dans l'exemple prcdent" on le trou#e dans la deuxi&me colonne de ce qu'affiche ps. ,ais il existe bien sKr une mthode plus facile pour a#oir le )*D d'un processus. !a commande pidof rcup&re le )*D $ partir du nom du programme. 6xemple A
(t/aeron<syndro%e 1+= pido6 %ousepad #"#"#

6t il existe un programme regroupant kill et pidof en une seule commande A killall. 9l permet d'en#o%er un signal $ un processus $ partir du nom du programme. Attention car si le m)me programme est lanc plusieurs fois" ils rece#ront tous le signal. killall s'utilise comme kill sauf qu'il faut spcifier le nom du programme au lieu du )*D. 6xemple A
3illall 4S)@CO*T %ousepad

9l est possible d'excuter directement un programme en back%round en terminant la commande par un et commercial 5i8. 6xemple A
(t/aeron<syndro%e 1+= %ousepad Z (t/aeron<syndro%e 1+=

Nous reprenons directement la main sur le shell. Cependant la sortie standard du programme" ainsi que sa sortie d'erreur" se feront tou(ours dans le terminal.
38

#.

la con(u-te du s!ell

A#ant de pou#oir s'attaquer $ l'criture de scripts shell" il nous reste $ acqurir une plus grande ma@trise du shell.

:.1.

Les va"ia-'es #)envi"onnement

!es #ariables d'en#ironnement sont des #ariables d%namiques 5qui peu#ent changer de #aleurs8 et permettant aux di#ers processus de communiquer entre eux surtout concernant la configuration. !a commande en! permet d'afficher toutes les #ariables qui sont enregistres pour l'utilisateur courant. Ioici quelques exemples A
PMIB//o%e/t/aeron L,*@B6r7!P,T2B/usr/lo'al/>inC/usr/>inC/>inC/usr/0a%esC/usr/li>;N/Lava/>inC/usr/li> ;N/3deN/li>e$e'C/opt/3de#/li>;N/Et#/>inC/opt/3de#/>inC/usr/li>;N/Et/>inC/ usr/s/are/te$%6/>inC&C/s>inC/usr/>rl'ad/>in

Nous a#ons #u la commande pwd qui permettait de conna@tre le )$' courant. !a #ariable )/D contient la m)me chose. !a #ariable L$NG est utilise par le s%st&me pour changer la langue des messages des programmes. !a #ariable )$' est tr&s importante" c'est cette #ariable qui indique au shell o; il doit aller chercher les programmes dont on tape le nom. !orsqu'on appelle le programme en! par exemple" le shell #a d'abord chercher dans /usr/local/bin s'il n'% est pas il #a chercher dans /usr/bin etc. !'ordre est donc important. 9l est possible de #oir le contenu d'une #ariable en particulier. 'our cela on utilise la commande echo. 6lle permet d'afficher du texte et donc des #ariables car lorsque le shell #a interprter la commande il #a remplacer chaque #ariable par son contenu" si elle n'existe pas elle sera remplace par une cha@ne #ide. 'our diffrencier le texte '^ de la #ariable )/D on prc&de le nom de la #ariable du s%mbole C. Ceci ne s'applique que pour le contenu de la #ariable" pour une affectation il ne faut pas l'indiquer. 6xemple A
e'/o le P,T2 'ourant est C =PMI

'our changer une #ariable d'en#ironnement ou en a(outer une il faut utiliser la commande export pour bash" et sou#ent set pour les autres shells. 6xemple A
e$port M,W,-B'ontenu

,aintenant la #ariable M$0$R est affiche par en!. /egardons l'effet de la #ariable L$NG.
3'

1i nous appelons le programme cat en lui donnant en param&tre un fichier qui n'existe pas A
(t/aeron<syndro%e 1+= 'at 6i'/ier7Eui7ne$iste7pas 'atC 6i'/ier7Eui7ne$iste7pasC ,u'un 6i'/ier ou dossier de 'e type (t/aeron<syndro%e 1+= e$port L,*@Ben7US (t/aeron<syndro%e 1+= 'at 6i'/ier7Eui7ne$iste7pas 'atC 6i'/ier7Eui7ne$iste7pasC *o su'/ 6ile or dire'tory

:.2.

Les ;o3e"s

Nous a#ons plusieurs commandes permettant de traiter les fichiers mais nous n'a#ons pas encore t dans le cas o; nous de#ons faire un traitement de lot. 'ar exemple si nous #oulons supprimer tous les fichiers a%ant l'extension txt. 7n a recours" pour cela" aux (oCers.
Joker G jp2"pP"pE"...k Description /emplace toute une cha@ne /emplace un seul caract&re 6nsemble de cha@nes possibles Tableau 145 ,rinci'aux 9o:ers

Nous #oulons supprimer tous les fichiers a%ant l'extension .txt A


(t/aeron<syndro%e 1+= r% H&t$t

'ar exemple" nous a#ons un rpertoire contenant les fichiers sui#ants A


(t/aeron<syndro%e >+= ls >1731&pn0 >17t1&pn0 >17t#&pn0 >173"&pn0 >17t"&pn0 >"73"&pn0 >"7t1&pn0 >"7t"&pn0 >"7t#&pn0 >#7t1&pn0 >#7t"&pn0 >#7t#&pn0

Nous #oulons traiter uniquement les fichiers commen.ant par b2 et bE et contenant t2" tP" C2 et CP. Nous pou#ons faire A
(t/aeron<syndro%e >+= ls >[1A#\7T[1A"\&pn0 >1731&pn0 >173"&pn0 >17t1&pn0 >17t"&pn0 >#7t1&pn0 >#7t"&pn0

4(

:.3.

Les "e#i"e tions #e ,'ux

Nous #o%ons" depuis le dbut" des programmes afficher du texte dans le terminal. 6n ralit" les programmes en#oient les donnes dans le flux stdout 5contraction de standard output8 qui est le flux standard de sortie 5affichage8" ou encore stderr 5standard error8 qui est spcifique aux erreurs. 9l % a un troisi&me flux A stdin 5standard input8 qui correspond $ ce que nous tapons au cla#ier. Cette notion de flux est importante car il nous est possible de les rediriger. 9l existe pour .a E oprateurs.
Op l Q f Description /edirige la sortie #ers un fichier 6n#oi le contenu d'un fichier sur l'entre standard /edirige la sortie d'un programme #ers l'entre standard d'un autre programme. Tableau 155 6'1rateurs de redirection

9l existe un #ariante pour la redirection #ers un fichier. 1i on utilise D le contenu est en#o% dans un fichier qui est cr s'il n'existe pas et est cras dans le cas contraire. !'oprateur DD redirige #ers un fichier qui est cr s'il n'existe pas et a(oute $ la fin du fichier dans le cas contraire. /egardons quelques exemples A
(t/aeron<syndro%e (t/aeron<syndro%e //o%e/t/aeron (t/aeron<syndro%e (t/aeron<syndro%e //o%e/t/aeron (t/aeron<syndro%e (t/aeron<syndro%e //o%e/t/aeron //o%e/t/aeron 1+= pwd K t%p&t$t 1+= 'at t%p&t$t 1+= pwd K t%p&t$t 1+= 'at t%p&t$t 1+= pwd KK t%p&t$t 1+= 'at t%p&t$t

!a sortie standard de pwd est redirige #ers le fichier tmp.txt.

(t/aeron<syndro%e 1+= 'at 6i'/ier7Eui7ne$iste7pas K t%p&t$t 'atC 6i'/ier7Eui7ne$iste7pasC ,u'un 6i'/ier ou dossier de 'e type

!e message d'erreur n'est pas redirig dans le fichier car l'oprateur D redirige stdout par dfaut et les erreurs sont sur stderr. 9l faut sa#oir que chaque flux a une #aleur particuli&re A 2 pour stdout" P pour stderr et = pour stdin. 6n utilisant ces #aleurs nous pou#ons rediriger stderr A
(t/aeron<syndro%e 1+= 'at 6i'/ier7Eui7ne$iste7pas "K t%p&t$t (t/aeron<syndro%e 1+= 'at t%p&t$t 'atC 6i'/ier7Eui7ne$iste7pasC ,u'un 6i'/ier ou dossier de 'e type

Nous pou#ons aussi rediriger stderr #ers stdout A


(t/aeron<syndro%e 1+= 'at 6i'/ier7Eui7ne$iste7pas "KZ1 'atC 6i'/ier7Eui7ne$iste7pasC ,u'un 6i'/ier ou dossier de 'e type

41

6t rediriger l'ensemble #ers un fichier A


(t/aeron<syndro%e 1+= 'at 6i'/ier7Eui7ne$iste7pas Kt%p&t$t "KZ1

!'ordre de redirection est important" si on a#ait plac 4DE3 a#ant Dtmp5txt cela n'aurait pas fonctionn.

'our comprendre l'utilisation de l'oprateur f 5tube en fran.ais" pipe en anglais8 il faut comprendre que beaucoup de commandes peu#ent traiter les donnes que l'on indique en param&tres mais aussi sur leur entre standard. 'renons l'exemple de cat" nous a#ons #u qu'il pou#ait afficher le contenu d'un fichier. ,ais il peut aussi rpter ce qu'il re.oit sur son entre standard. 6xemple A
(t/aeron<syndro%e 1+= 'at ceci est un 'e'i est un exemple e$e%ple

en gras nous a#ons ce qui a t tap au cla#ier. 'our arr)ter cat il faut lui en#o%er un -&, 56nd &f ,ile8 #ia la combinaison de touches C'RL6D. 7n ne #oit pas clairement l'utilit de ce comportement. Alors regardons une pratique sou#ent utilise pour crer un fichier texte A
(t/aeron<syndro%e 1+= 'at K t%p&t$t 'e'i est un e$e%ple (t/aeron<syndro%e 1+= 'at t%p&t$t 'e'i est un e$e%ple

Ce qui nous permet de #oir un exemple d'utilisation de l'oprateur 'Q' A


(t/aeron<syndro%e 1+= 'at ] t%p&t$t 'e'i est un e$e%ple

7n peut alors contracter les commandes cat tmp5txt et cat F tmp5txt en utilisant pipe A
(t/aeron<syndro%e 1+= 'at t%p&t$t ^ 'at 'e'i est un e$e%ple

g#idemment ici .a n'a pas beaucoup d'intr)t mais nous allons #oir des programmes tr&s utiles dans le traitement des fichiers et qui s'utilisent dans la ma(orit des cas a#ec un pipe.

42

.. Les commandes 'rinci'ales


Commande a0C basename cat cut dirname echo find grep head less more sed sort tail tr uniq 0c 0hich xargs Description !angage d'examen et de traitement de motifs 5patterns8 1upprime le )$' et le suffixe d'un nom de fichier Affiche la concatnation de fichiers 1upprime des morceaux de chaque ligne d'un fichier Ne laisse que le )$' d'un nom de fichier Affiche une ligne de texte /echerche de fichiers dans l'arborescence Affiche les lignes qui correspondent $ un motif Affiche la premi&re partie d'un fichier Affiche interacti#ement un fichier par morceau 1imilaire $ less gditeur de flux pour filtrer et transformer le texte :rie les lignes d'un fichier Affiche la derni&re partie d'un fichier /emplace ou supprime des caract&res Affiche ou supprime des rptitions de lignes Compte les lignes" mots ou caract&res d'un fichier Affiche le )$' complet d'une commande 'asse son entre standard en arguments $ une commande Tableau 1)5 ,rinci'ales commandes Unix

<.1.

D*tai's #e es ."in i.a'es omman#es

Ce qui suit n'est qu'un aper.u des possibilits qu'offrent ces programmes. 1eules les options les plus utiles sont rfrences. 'our #oir en dtail tout ce que permet de faire une commande il faut consulter les pages de manuel A
%an COMM,*I.

a.

a#$ % Langage d&e'amen et de traitement de motifs (patterns)

awk est un outils qui dispose de son propre langage. 9l est possible de crer un fichier contenant les commandes mais la plupart du temps il est plus intressant de passer les instructions directement en param&tres. awk s'utilise ainsi A
aw3 Q[instru'tions\Q

43

!'important est qu'awk spare les W mots X qu'il doit traiter. 'ar exemple le premier mot sera identifi par b2 et le mot ] par b]. !'instruction la plus utilise de awk est print. 6xemple A
(t/aeron<syndro%e 1+= e'/o 'e'i est un e$e%ple ^ aw3 Q[print =1 =#\Q 'e'iun

1i on #eut placer un espace entre A


(t/aeron<syndro%e 1+= e'/o 'e'i est un e$e%ple ^ aw3 Q[print =1 5 5 =#\Q 'e'i un

b.

basename % Enlve le r*pertoire et le suffi'e d&un nom de fichier.

>asena%e *OM (SU!!)R.+

6xemples A
t/aeron<0eii4la>o?C1= >asena%e /usr/in'lude/stdio&/ stdio&/ t/aeron<0eii4la>o?C1= >asena%e /usr/in'lude/stdio&/ &/ stdio

c.

cat % Concat*ner des fichiers et les afficher sur la sortie standard

'at (OPT)O*+ (!)C2).-+&&& options A <n A numrote chaque ligne <b A numrote les lignes non #ide <s A supprime les lignes #ides rptes

6xemples A
t/aeron<0eii4la>o?C1= 'at test&t$t 'e'i est un 6i'/ier inutile pour %ontrer les 'o%%andes .nLoy _ t/aeron<0eii4la>o?C1= 'at 4sn test&t$t 1 'e'i est un 6i'/ier inutile " pour %ontrer les 'o%%andes # N .nLoy _

Utilisation particuli&re A si on ne prcise pas de fichier" cat recopie l'entre standard. !e programme s'arr)te lors de la saisie de C'RL6D.

44

d.
options A

cut % +upprime des morceau' de cha,ue ligne d&un fichier

'ut (OPT)O*S+ (!)C2).-+&&& <b !91: A ne coupe que les caract&res de cette liste

6xemple A
(t/aeron<syndro%e 1+= e'/o e$e%ple ^ 'ut 4> 1ANA? e%p

e.

dirname % -e conserve ,ue la partie r*pertoire d&un chemin d&accs.

dirna%e *OM

6xemples A
t/aeron<0eii4la>o?C1= dirna%e /usr/in'lude/stdio&/ /usr/in'lude t/aeron<0eii4la>o?C1= dirna%e /usr/in'lude/ /usr t/aeron<0eii4la>o?C1= dirna%e stdio&/ &

f.
options A

echo % .ffiche une ligne de te'te

e'/o (OPT)O*S+ C2,)*.

<n A n'affiche pas de retour $ la ligne $ la fin de la ligne.

g.
options A

find % /echerche de fichiers dans l&arborescence

6ind (OPT)O*S+ (P,T2+ (.RP-.SS)O*+ <' A ne pas sui#re les liens s%mboliques <! A sui#re les liens s%mboliques

'A:B A rpertoire de dpart pour la recherche


6M'/61197N est aussi constitu par des options A <maxdepth N A ne descend pas dans plus de N sous<rpertoires <name ,7:9F A recherche les fichiers correspondant au motif <iname ,7:9F A comme (name mais non sensible $ la casse 5diffrence minuscule / ma(uscule8 <executable A ne cherche que les excutables <readable A ne cherche que les fichiers dont on a le droit de lecture <0ritable A ne cherche que les fichiers dont on a le droit d'criture

6xemples A
(t/aeron<synapse 1+= 6ind 1/t%p 4na%e 5teH&s/5 //o%e/t/aeron/t%p/test"/test&s/ //o%e/t/aeron/t%p/test&s/

45

(t/aeron<synapse 1+= 6ind 1/t%p 4ina%e 5teH&s/5 4reada>le //o%e/t/aeron/t%p/test"/test&s/ //o%e/t/aeron/t%p/test&s/ //o%e/t/aeron/t%p/TeSt&s/

h.

grep % .ffiche les lignes ,ui correspondent 0 un motif

%rep est surement le programme le plus utile et le plus utilis" il permet de filtrer un fichier en n'affichant que les lignes qui correspondent 5ou que celles qui ne correspondent pas8 $ un motif.
0rep (OPT)O*S+ MOT)! (!)C2).-+&&&

options A
<e ,7:9F A utilise ,7:9F comme motif" cette option est utile pour spcifier plusieurs motifs <i A ignore la casse autant pour le fichier que pour le motif <# A in#erse le sens de correspondance" pour n'afficher que les lignes qui ne correspondent pas au motif <o A n'affiche que la partie qui correspond au motif au lieu de la ligne compl&te <n A affiche le numro de la ligne qui correspond <c A affiche uniquement le nombre de lignes qui correspondent

6xemples A
(t/aeron<syndro%e 1+= 'at test&t$t ^ 0rep 4n es 1C'e'i est un 6i'/ier inutile "Cpour %ontrer les 'o%%andes (t/aeron<syndro%e 1+= 'at test&t$t ^ 0rep 4nv es #C NC ?C.nLoy _

i.
options A

head % .ffiche la premire partie d&un fichier

/ead (OPT)O*S+ (!)C2).-+&&& <c S<TN A affiche les N premiers octets de chaque fichier" si '<' est spcifi head affiche tout sauf les N derniers octets de chaque fichier <n S<TN A affiche les N premi&res lignes de chaque fichier" si '<' est spcifi head affiche tout sauf les N derni&res lignes de chaque fichier

1i on ne spcifie aucune option head affiche les 2= premi&res lignes du fichier. 6xemples A
(t/aeron<syndro%e 1+= 'at test&t$t ^ /ead 4n " 'e'i est un 6i'/ier inutile pour %ontrer les 'o%%andes (t/aeron<syndro%e 1+= 'at test&t$t ^ /ead 4n 4N 'e'i est un 6i'/ier inutile (t/aeron<syndro%e 1+= 'at test&t$t ^ /ead 4' N 'e'i

46

!.

less % Permet un affichage interactif par morceau d&un long fichier.

less (!)C2).-+

1i aucun fichier n'est spcifi" less prendra en compte les donnes sur son entre standard. 7n peut se dplacer" descendre ou remonter dans le fichier en utilisant les fl&ches. Ce programme est orient utilisateur et n'est pas utile dans une commande automatise comme un script.

$.

more % Permet un affichage interactif par morceau d&un long fichier.

1imilaire $ less. 1auf qu'on se dplace en appu%ant sur entre.

l.

sed % 1diteur de flu' pour filtrer et transformer le te'te

sed 4e .RP-.SS)O* (!)C2).-+&&&

sed permet de faire beaucoup de choses" comme awk. Cependant on l'utilise principalement pour faire du remplacement d'expression. !e remplacement se fait ainsi A 's/expression/remplacement/g' 6xemple A
(t/aeron<syndro%e 1+= e'/o 'e'i est un e$e%ple ^ sed 4e Qs/un e$e%ple/une de%onstration/0Q 'e'i est une de%onstration

m.
options A

sort % 2rie les lignes d&un fichier

sort (OPT)O*S+ (!)C2).-+&&& <b A ignore les espaces qui prcdent le texte <f A ignore la casse </ A trie de fa.on alatoire <r A in#erse le rsultat du trie <u A n'affiche pas les doublons

6xemples A
(t/aeron<syndro%e 1+= 'at t%p&t$t ^ sort souris '/at '/at dentier (t/aeron<syndro%e 1+= 'at t%p&t$t ^ sort 4>u '/at dentier souris

47

n.

tail % .ffiche la dernire partie d&un fichier

Ce programme et le complment de head" il a les m)mes fonctionnalits mais en utilisant la fin du fichier comme rfrentiel.
tail (OPT)O*S+ (!)C2).-+&&&

options A
<cS?TN A affiche les N derniers octets" si '?' est spcifi tail affiche les tous les octets a partir du Ni&me octet. <nS?TN A affiche les N derni&res lignes" si '?' est spcifi tail affiche les toutes les lignes a partir de la Ni&me ligne.

1i aucune option n'est spcifie" tail affiche les 2= derni&res lignes du fichier. 6xemples A
(t/aeron<syndro%e 1+= 'at test&t$t ^ tail 4'J" e'i est un 6i'/ier inutile pour %ontrer les 'o%%andes .nLoy _ (t/aeron<syndro%e 1+= 'at test&t$t ^ tail 4'" _ (t/aeron<syndro%e 1+= 'at test&t$t ^ tail 4nN pour %ontrer les 'o%%andes .nLoy _ (t/aeron<syndro%e 1+= 'at test&t$t ^ tail 4nJ? .nLoy _

o.
options A

tr % /emplace ou supprime des caractres

tr (OPT)O*S+ S.T1 (S.T"+ <d A supprime les caract&res contenu dans S-'3" pas de remplacements

6xemples A
(t/aeron<syndro%e 1+= e'/o test ^ tr QetQ QiLQ LisL (t/aeron<syndro%e 1+= e'/o test ^ tr 4d QetQ s

!e remplacement se fait caract&re par caract&re. C'est<$<dire que le premier caract&re du S-'3 sera remplac par le premier caract&re du S-'4" le deuxi&me caract&re du S-'3 sera remplac par le deuxi&me caract&re du S-'4 etc.

48

p.

uni, % .ffiche ou supprime des r*p*titions de lignes

Attention A uniG supprime uniquement les rptitions de lignes conscuti#es. 1i des lignes identiques sont parpilles dans le fichier" uniG ne les traitera pas.
uniE (OPT)O*S+ (!)C2).-+&&&

options A
<c A prfixe les lignes par leur nombre d'occurrences <d A affiche uniquement les lignes rptes <i A ignore la case <u A affiche uniquement les lignes uniques

!e comportement par dfaut est d'afficher le fichier en supprimant les rptitions 5mais en laissant la premi&re occurrence contrairement $ l'option (u8. 6xemples A
(t/aeron<syndro%e 1+= 'at t%p&t$t '/at '/at dentier '/at dentier (t/aeron<syndro%e 1+= 'at t%p&t$t ^ uniE 4' " '/at 1 dentier 1 '/at 1 dentier (t/aeron<syndro%e 1+= 'at t%p&t$t ^ uniE 4d '/at (t/aeron<syndro%e 1+= 'at t%p&t$t ^ uniE 4u dentier '/at dentier

,.
options A

#c % Compte les lignes, mots ou caractres d&un fichier

w' (OPT)O*S+ (!)C2).-+&&& <c A compte le nombre d'octets <m A compte le nombre de caract&res <l A compte le nombre de lignes <0 A compte le nombre de mots

6xemples A
(t/aeron<syndro%e 1+= e'/o 'e'i est un e$e%ple ^ w' 4' "0 (t/aeron<syndro%e 1+= e'/o 'e'i est un e$e%ple ^ w' 4% "0

4'

(t/aeron<syndro%e 1+= e'/o 'e'i est un e$e%ple ^ w' 4l 1 (t/aeron<syndro%e 1+= e'/o 'e'i est un e$e%ple ^ w' 4w N

r.

#hich % .ffiche le P.23 complet d&une commande

which utilise le contenu de la #ariable d'en#ironnement )$' pour chercher" dans l'ordre de la liste inscrite dans )$' " o; est la commande demande.
w/i'/ COMM,*I.

6xemple A
(t/aeron<synapse 1+= w/i'/ ls /usr/>in/ls

s.

'args % Passe son entr*e standard en argument 0 une commande

$ar0s COMM,*I.

6xemple A 1i on dsire afficher les dtails de tous les fichiers 5sh qui sont contenus dans le rpertoire courant et dans tous ses sous<rpertoires. !a commande find #a afficher sur sa sortie standard tous ces fichiers mais ls n'accepte pas de donnes sur l'entre standard. 7n ne peut donc pas utiliser directement un pipe.
(t/aeron<synapse test"+= 6ind & 4na%e 5H&s/5 ^ $ar0s ls 4la/ 4rw$r4$r4$ 1 t/aeron root NANG "0104014"; "0C0: &/0uv'view70&O&"/auto0en&s/ 4rw$r4$r4$ 1 t/aeron root #1O "0104014"; "0C0: &/0uv'view70&O&"/de>ian/add76iles7de>&s/ 4rw$r4$r4$ 1 t/aeron root ""F "0104014"; "0C0: &/install7e$a%ple7s/ell&s/ 4rw$r4$r4$ 1 t/aeron root 1:0 "0104014"; "0C0: &/load7%od&s/ 4rw$r4$r4$ 1 t/aeron root "1N "0104014"; "0C0: &/%37nod7p'a$e&s/ 4rw$r4$r4$ 1 t/aeron root :? "0104014"; "0C0: &/r%7%od&s/

<.2.

C!aine" 'es omman#es

9l est possible de cha@ner les commandes afin d'en excuter plusieurs $ partir d'une seule ligne. ans le cas o; la commandeP est indpendante de la commande2 on place un point #irgule 5m8 entre les P commandes. !a commande P sera excute (uste apr&s la commande2. !e point #irgule indique (uste au shell que c'est la fin de la commande. 'lus intressant encore" on peut excuter la commandeP que si la commande2 s'est termine sans erreurs" pour cela on place P et commerciaux 5ii8 entre les deux commandes. ans certains cas on peut dsirer excuter la commandeP si la commande2 s'est termine par des erreurs" pour cela on utilise P pipes 5ff8 entre les P commandes.

5(

1/. L01criture de scri'ts


Nous sommes enfin pr)ts $ aborder le plus intressant A les scripts shell. Un script est un programme interprt 5donc sans compilation8 par un interprteur 5ici bash8 permettant d'effectuer automatiquement des tDches rbarbati#es. Un script shell est un fichier texte contenant un ensemble de commandes" principalement celles que nous a#ons #u dans les parties prcdentes" et d'instructions propres au langage qui est tr&s simple 5car tr&s dpouill8. Nous allons #oir la s%ntaxe de ce langage. :out d'abord dans la premi&re ligne du fichier il faut indiquer l'interprteur qui #a )tre utilis. Ceci n'est pas spcifique et est #alable pour tous les langages de scripts que l'on dsire rendre excutable 5chmod 6x8 et excuter directement 5sans le passer en param&tre $ l'interprteur8. Ioici cette ligne A
D_/>in/s/

9l est intressant de noter que di&se 5sharp8 'n' est le caract&re permettant de mettre en commentaire. Ce que nous a#ons #u pour les commandes et les #ariables est" bien #idemment" tou(ours #alable.

10.1.
a.

Con#itionne' et -ou 'es


if % 2este une valeur bool*enne

!a s%ntaxe du if est la sui#ante A


i6 valeur t/en instructions 6i

!e retour $ la ligne est ncessaire a#ant et apr&s le then. 9l est possible de mettre if et then sur la m)me ligne en utilisant le m 5point #irgule8 comme sparateur. 6xemple A
i6 =PMI BB =P,T2 t/en e'/o le pat/ 'ourant est le 2OM. 6i

Comme dans tous les langages il est possible d'excuter d'autres instructions dans le cas o; la condition serait fausse" on utilise alors le mot cl else. ans le cas o; on #oudrait refaire un if on utilise alors elif contraction de else et de if. !a structure est la sui#ante A

51

i6 valeur t/en instructions eli6 valeur t/en instructions else instructions 6i

b.

test % 1valuation d&une e'pression

ans ce langage" if n'#alue pas directement l'expression conditionnelle" il se contente de #rifier la #aleur boolenne 'RU- ou ,$LS-. 9l faut pour cela utiliser test ou H. 6xemple A
i6 ( =PMI B =2OM. + t/en e'/o le pat/ 'ourant est le 2OM. else e'/o le pat/ 'ourant nUQest pas le 2OM. 6i

ou
i6 test =PMI B =2OM. t/en e'/o le pat/ 'ourant est le 2OM. else e'/o le pat/ 'ourant nUQest pas le 2OM. 6i

9l est important de noter que les espaces a#ant et apr&s H et l'espace a#ant I sont obligatoires [ !'utilisation du point d'exclamation 5[8 in#erse la #aleur boolenne. 6xemple A
i6 _ test =PMI B =2OM. t/en e'/o le pat/ 'ourant nUQest pas le 2OM. 6i

'our tester ce script il faut l'crire dans un fichier texte" en oubliant pas d'crire sur la premi&re ligne JK/bin/sh Une fois sau#egard 5sous le nom test5sh par exemple8 on a deux possibilits. 1oit on l'indique en tant que param&tre $ bash A
t/aeron<SEuirrelMon3eyC1= >as/ test&s/

1oit on le rend excutable et on l'excute A


t/aeron<SEuirrelMon3eyC1= '/%od J$ test&s/ t/aeron<SEuirrelMon3eyC1= &/test&s/ 52

'ourquoi a#oir mis un backslash a#ant l'apostrophe - Nous a#ions d($ #u tout au dbut que le backslash permettait de modifier le comportement d'un caract&re. 6n effet dans ce langage l'apostrophe sert $ former une cha@ne de caract&res tout comme les guillemets. Cependant leurs comportements sont diffrents. 1i les guillemets sont (uste une indication" l'apostrophe bloque les actions du shell sur le contenu de la cha@ne. 'ar exemple elle bloque le processus d'expansion des #ariables" c'est<$<dire que les #ariables ne seront pas remplaces par leur contenu. 6xemple A
t/aeron<SEuirrelMon3eyC1= e'/o 5=2OM.5 //o%e/t/aeron t/aeron<SEuirrelMon3eyC1= e'/o Q=2OM.Q =2OM.

Nous a#ons utilis dans l'exemple C &M- et C)/D qui sont des #ariables d'en#ironnement" mais il est possible de crer des #ariables propres aux scripts. !a s%ntaxe est simple" ce n'est qu'une simple affectation A
no%7varia>leBvaleur

9l n'% a aucune dclaration $ faire. !a #ariable est cre d&s qu'une #aleur lui est affecte. !es #ariables dans ce langage ne sont pas t%pes. !es distinctions et les con#ersions entre une cha@ne" entier et fichier ne sont #isibles que dans les tests.

c.

4p*rateurs de test

Nous a#ions" dans l'exemple prcdent" un 'O' pour la comparaison" mais il en existe beaucoup d'autres dont #oici la liste des plus utiles.
Op O [O <n <> <eq <ne <ge <le <gt <lt <e <d <f <x Syntaxe CBA9N62 O CBA9N6P CBA9N62 [O CBA9N6P <n CBA9N6 <> CBA9N6 6N:96/2 <eq 6N:96/P 6N:96/2 <ne 6N:96/P 6N:96/2 <ge 6N:96/P 6N:96/2 <le 6N:96/P 6N:96/2 <gt 6N:96/P 6N:96/2 <lt 6N:96/P <e F9CB96/ <d F9CB96/ <f F9CB96/ <x F9CB96/ Condition exprim!e !es cha@nes sont identiques !es cha@nes ne sont pas identiques !a cha@ne n'est pas #ide !a cha@ne est #ide !es entiers sont gaux !es entiers ne sont pas gaux 6N:96/2 est suprieur ou gal $ 6N:96/P 6N:96/2 est infrieur ou gal $ 6N:96/P 6N:96/2 est suprieur $ 6N:96/P 6N:96/2 est infrieur $ 6N:96/P F9CB96/ existe F9CB96/ existe et c'est un rpertoire F9CB96/ existe et il est rgulier F9CB96/ existe et il est excutable Tableau 1+5 6'1rateurs de com'araisons de test

53

'our #aluer plusieurs expressions lors d'un test A


Op <a <o Syntaxe 6M'/61197N2 <a 6M'/61197NP 6M'/61197N2 <o 6M'/61197NP Condition exprim!e 1i 6M'/61197N2 et 6M'/61197NP sont #raies 1i 6M'/61197N2 ou 5logique8 6M'/61197NP sont #raies

Tableau 1#5 6'1rateurs binaires de test

d.

boucle #hile

!a boucle while 5tant que en fran.ais8 excute les instructions tant que la #aleur de l'expression de sa condition est #raie. 1a s%ntaxe est la sui#ante A
w/ile valeur do instructions done

e.

boucle until

9l existe aussi la boucle until 5(usqu'$ ce que en fran.ais8 qui excute les instructions (usqu'$ ce que la #aleur de l'expression de sa condition soit #raie. 1a s%ntaxe est la m)me que celle de while A
until valeur do instructions done

f.

boucle for

ans ces P cas" l'expression de la condition est rgie par les m)mes r&gles que pour if. !a boucle for est totalement diffrente. 6lle permet de traiter les donnes d'une liste en en prenant une par itration. 1a s%ntaxe reste simple A
6or variable in liste do instructions done

6xemple A
6or i in 1 " # N ? do e'/o =i done

ou encore
6or i in 5'e'i5 5est5 5un5 5test5 do e'/o =i done

54

g.

case

!a derni&re structure conditionnelle $ #oir est case. 6lle permet de slectionner diffrentes instructions $ excuter selon la #aleur d'une #ariable. 1a s%ntaxe est la sui#ante A
'ase $variable in valeur1) instructions `` valeur2) instructions `` valeur3) instructions `` esa'

h.

read

bash dispose d'une commande interne 5built(in8 tr&s utile dans l'criture des scripts A read. !a commande read permet de capturer ligne par ligne ce qui est en#o% sur l'entre standard et de placer ce contenu dans une ou des #ariables passes en arguments. !e comportement de read est lui<m)me intressant car si on lui donne E #ariables en param&tres il #a dcouper la ligne en mots 5le sparateur tant un espace ou une tabulation8 et mettre le premier mot dans la premi&re #ariable" le deuxi&me dans la deuxi&me #ariable et tout le reste dans la derni&re #ariable. 6xemple A
read e'/o e'/o e'/o %ot1 %ot1 %ot" %ot# %ot" %ot# B =%ot1 B =%ot" B =%ot#

Ce qui donne $ l'excution


(t/aeron<synapse 1+= >as/ test&s/ 'e'i est un test %ot1 B 'e'i %ot" B est %ot# B un test

read s'utilise la ma(orit du temps a#ec while. 6n effet" nous a#ons #u que if 5et donc cela s'applique aussi $ while et until8 n'#alue que si la #aleur boolenne est I/A96 ou FAU116. Ainsi on peut directement #aluer la #aleur de retour d'une commande. :out programme ren#oie une #aleur $ l'71 $ la fin de son excution" si l'excution s'est bien droule elle ren#oie = 5ce qui pour bash signifie :/U68 et une autre #aleur sou#ent ngati#e en cas de probl&me 5ce qui est qui#alent $ FA!168. :ant que read n'a pas rencontr -&, 5-nd &f ,ile8 elle ren#oie =.

55

6xemple d'utilisation A
w/ile read li0ne do e'/o li0ne saisie B =li0ne done

i.

variables sp*ciales

Nous #enons de #oir qu'un programme ren#oie une #aleur lorsqu'il se termine. 1i on dsire rcuprer cette #aleur en #ue de la traiter ultrieurement il existe pour cela une #ariable spciale. Ce n'est pas la seule" #oici les principales A
Var bba bn bN Description Contient la #aleur du dernier programme qui s'est termin Contient la liste des param&tres passs au script Contient le nombre de param&tres passs au script Contient le Ni&me param&tre $ partir de 2 5b2 bP bE etc8 Tableau 1.5 ;ariables s'1ciales

!.

.ffectation des variables et op*rations

Nous a#ons #u que nous pou#ions rediriger les flux" ren#o%er le flux de sortie standard d'un programme #ers le flux d'entre standard d'un autre. Cependant" comment rediriger la sortie standard #ers une #ariable 9l existe P s%ntaxes. !a premi&re #ieille cole A
variableBVcommandeV

6t la seconde A
variableB=(commande)

9l est donc possible de passer en argument" $ un autre programme" le contenu de #ariable. ,ais il est possible de contracter tout cela en utilisant xar%s. xar%s prend en argument une commande et lui passe en arguments ce qu'il re.oit sur son entre standard. 'ar exemple" on dsire conna@tre le t%pe du dernier fichier que contient le rpertoire courant. 1ans xar%s A
varB=(ls PMI ^ tail 4n1) 6ile 5=var5

A#ec xar%s A
ls =PMI ^ tail 4n1 ^ $ar0s 6ile

Contrairement $ quasiment tous les langages" il n'est pas possible de faire directement une opration arithmtique sur les #ariables. !a s%ntaxe est un peu particuli&re.
varB=((operation)) 56

6xemple" si on #eut incrmenter la #ariable A


varB=((=varJ1))

9l est possible de dcouper un script en plusieurs fonctions. !eur s%ntaxe est simple A
6on'tion nom_fonction() [ instructions \

!e plus grand a#antage est qu'elles s'utilisent comme si elles taient des programmes indpendants A on peut leur passer des param&tres" rediriger leurs flux etc.

$.

e'emples de s5nthse

6xemple de s%nth&se 5while ? opration arithmtique ? case8 A


D_/>in/s/ varB0 w/ile ( =var 4ne N + do 'ase =var in 0) e'/o 4n 5'e'i 5 `` 1) e'/o 4n 5est 5 `` ") e'/o 4n 5un 5 `` #) e'/o 5test5 `` esa' varB=((=varJ1)) done t/aeron<SEuirrelMon3eyC1/t%p= >as/ test"&s/ 'e'i est un test

57

6xemple de s%nth&se 5while ? for ? pipe8 A


D_/>in/s/ D 'e s'ript lit son entre standard et spare '/aEue %ot en utilisant D le 'ara'tre QCQ 'o%%e dli%iteur et les a66i'/e un par un w/ile read li0ne do li0neB=(e'/o =li0ne ^ sed Qs/C/ /0Q) 6or %ot in =li0ne do e'/o =%ot done done t/aeron<SEuirrelMon3eyC1/t%p= e'/o 'e'iCestCunCtest ^ test#&s/ 'e'i est un test

11. 20autres commandes utiles


9l existe des centaines de commandes et de programmes sous GNU/Linux utilisables dans un terminal. Nous ne pou#ons bien sKr pas toutes les #oir. Nous allons #oir quelques programmes supplmentaires tr&s utiles au quotidien.

Programme b>ipP date dd g>ip ldconfig tar uname uptime 0get >ip

"tilit! Compresse des donnes en b>ipP Affiche et r&gle l'heure Con#ertie et copie un fichier Compresse des donnes en g>ip ,et $ (our le cache des biblioth&ques d%namiques ,anipulation des archi#es tar 'ermet de conna@tre des informations sur le s%st&me 'ermet de conna@tre des informations sur le s%st&me 'ermet de tlcharger des fichiers par B::' / F:' Compresse des donnes en >ip Tableau 2/5 ,ro%rammes com'l1mentaires

!a plupart des logiciels et plus gnralement des archi#es disponibles pour GNU/Linux sont des 5tar5%L ou des 5tar5bL4

58

%L correspond $ une compression %Lip et bL4 $ bLip4. Cependant ces algorithmes et les programmes qui leurs sont associs ne se chargent pas de crer une archi#e pou#ant contenir plusieurs fichiers 5comme le fait Lip8. Cette tDche est effectue par tar.

a.

b6ip7 % Compresse des donn*es en b6ip7

>aip" (!)C2).-+

1i ,*C *-R est omis" bLip4 compressera les donnes pro#enant de l'entre standard et crira sur la sortie standard les donnes compresses. Hien que la dcompression soit quasiment tou(ours effectue a#ec tar il arri#e que les donnes compresss ne soient pas une archi#e tar. 7n utilise alors bunLip4 de la fa.on sui#ante A
>unaip" (!)C2).-+

1i ,*C *-R est omis" bunLip4 dcompressera les donnes pro#enant de l'entre standard et crira sur la sortie standard les donnes dcompresses.

b.

date % .ffiche et rgle l&heure

date est tr&s pratique pour la manipulation d'une date et permet $ l'utilisateur de spcifier son format ce qui rend son utilisation tr&s souple. 'our le dtail complet il faut aller #oir la page de manuel de date.
date (J!O-M,T+

6xemple A
date JQP, Pd P% (P ) P9Q t/aeron<SEuirrelMon3eyC1/t%p= date JQP, Pd P% (P ) P9Q Mednesday "N 0# (Mar'/) "010

c.

dd % Convertie et copie un fichier

dd est un mer#eilleux outils permettant de manipuler des fichiers au sens Unix du terme. !a ma(orit du temps on utilise dd pour manipuler les donnes pilotes de priphrique.
dd (OPT)O*S+

options A
ifO17U/C6 A indique la source des donnes $ copier ofO 61:9NA:97N A indique la destination des donnes bsON A lit et crit par N octets ibsON A lit N octets $ la fois 5]2P par dfaut8 obsON A crit N octets $ la fois 5]2P par dfaut8 countON A copie uniquement N blocs

1i if n'est pas spcifi" les donnes sont lues sur stdin. 1i of n'est pas spcifi" les donnes sont crites sur stdout.
5'

9l est possible de suffixer N par des coefficients multiplicateurs A


Suffixe 0 b CH V ,H , GH G Coefficient P ]2P 2=== 2=P4 2===G2=== 2=P4G2=P4 2===G2===G2=== 2=P4G2=P4G2=P4 Tableau 215 &ulti'licateurs de ##

6xemple A 'our crer une image 917 d'un C


dd i6B/dev/'dro% o6Bi%a0e&iso

sous GNU/Linux il suffit d'utiliser dd.

d.

g6ip % Compresse des donn*es en g6ip

0aip (!)C2).-+

1i ,*C *-R est omis" %Lip compressera les donnes pro#enant de l'entre standard et crira sur la sortie standard les donnes compresses. Hien que la dcompression soit quasiment tou(ours effectue a#ec tar il arri#e que les donnes compresss ne soient pas une archi#e tar. 7n utilise alors %unLip de la fa.on sui#ante A
0unaip (!)C2).-+

1i ,*C *-R est omis" %unLip dcompressera les donnes pro#enant de l'entre standard et crira sur la sortie standard les donnes dcompresses.

e.

ldconfig % 8et 0 !our le cache des biblioth,ues d5nami,ues

!es biblioth&ques d%namiques sont l'qui#alent des !! sous windows. 6t $ l'instar de windows il faut les placer dans des rpertoires bien spcifiques comme on l'a #u tout au dbut. Cependant il existe sous GNU/Linux un mcanisme de cache. Ainsi chaque fois qu'une biblioth&que est a(oute au s%st&me il faut relancer ldconfi% qui #a mettre $ (our le cache permettant ainsi d'excuter le programme a%ant besoin de la biblioth&que.
ld'on6i0

ldconfi% poss&de bien des options mais qui ne sont pas tr&s utiles.

6(

f.

tar % 8anipulation des archives tar

tar permet de manipuler des archi#es au format tar" mais surtout il sert de base $ l'utilisation de %Lip et bLip4.
tar (OPT)O*S+ (!)C2).-+

options A
<x A extrait les fichiers de l'archi#e <( A utilise b>ipP pour dcompresser <> A utilise g>ip pour dcompresser <# A passe en mode #erbeux et affiche les fichiers extraits <c A cre une archi#e <f N7, A utilise N7, comme archi#e

1i (f n'est pas spcifi tar utilisera par dfaut l'entre ou la sortie standard. 'our dcompresser une archi#e bLip4 A
tar 4$L6 6i'/ier&tar&>a"

'our dcompresser une archi#e %Lip A


tar 4$a6 6i'/ier&tar&0a

'our crer une archi#e A


tar 4'6 ar'/ive&tar repertoire

ou
tar 4'6 ar'/ive&tar 6i'/ier1 (6i'/ier"+Y

g.

uname % Permet de conna9tre des informations sur le s5stme

9l est tou(ours intressant de conna@tre quelques informations sur le s%st&me qu'on est en train d'utiliser. uname permet de conna@tre la #ersion du no%au" le t%pe d'architecture et le nom du processeur.
una%e (OPT)O*S+

options A
<a A affiche toutes les informations <s A affiche le nom du no%au 5cette commande est aussi disponible sur tous les autres Unix(like8 <n A affiche le nom de la machine <r A affiche la #ersion du no%au <m A affiche le nom de l'architecture <p A affiche le nom du processeur <o A affiche le nom de l'71

6xemple A
t/aeron<SEuirrelMon3eyC1/t%p= una%e 4a Linu$ SEuirrelMon3ey "&;&#"&#4s%p D" SMP T/u San F "0C10CN1 CST "010 i;O; W), *e/e%ia/ Centaur2auls @*U/Linu$

61

h.

uptime % Permet de conna9tre des informations sur le s5stme

uptime donne des informations supplmentaires sur le s%st&me. Nous a#ons #u comment #oir la consommation mmoire et C'U d'un processus mais il est parfois intressant de conna@tre la charge globale du s%st&me. uptime permet de conna@tre cette information ainsi que temps coul depuis le dmarrage de la machine.
t/aeron<SEuirrelMon3eyC1/t%p= upti%e 10C":C0: up ;: daysA 1FCN?A 1 userA load avera0eC 0&00A 0&00A 0&00

i.
options A

#get % Permet de t*l*charger des fichiers sur un serveur 322P ou :2P

w0et (OPT)O*S+ U-L <7 F9CB96/ A enregistre le tlchargement sous le nom F9CB96/ <c A si le fichier de destination existe d($" il tente de reprendre le tlchargement <q A mode silencieux <<limitOI9:6116 A limite la #itesse de tlchargement $ 0*'-SS-" on peut suffixer 0*'-SSpar C pour multiplier par 2===.

w%et permet de faire beaucoup de choses comme aspirer enti&rement un site en sui#ant les liens. 'our plus de dtails il faut consulter la page de manuel.

!.

6ip % Compresse des donn*es en 6ip

Hien qu'on utilise rarement ce format sous GNU/Linux" les archi#es destines aussi $ windows sont sou#ent dans ce format. 1%ntaxe A
aip 4r ar'/ive&aip rpertoire

ou
aip 4r ar'/ive&aip 6i'/ier1 6i'/ier" Y

'our dcompresser A
unaip ar'/ive&aip

62

12.
12.1.

dministration et con*i%uration
Les 'o/s

!es di#ers messages du s%st&me et des applications sous GNU/Linux sont rpartis dans diffrents fichiers de lo%s. 9l existe E lo%s principaux. :ous sont au m)me endroit A /!ar/lo%
Fichier dmesg s%slog messages Description Contient les messages propres au no%au Linux. Contient les messages en#o%s #ia le dmon s9slo%. Contient des messages du s%st&me. Tableau 225 ,rinci'aux 'o/s

!e lo% dmes% est associ $ une commande du m)me nom. Ce lo% est #raiment tr&s important car il contient les messages qu'en#oie le no%au d&s son dmarrage. :ous les priphriques dtects % figurent. 6xemple lors de la connexion d'une cl U1H A
(t/aeron<synapse 1+= d%es0 Y us> "41C new /i0/ speed US devi'e usin0 e/'i7/'d and address ; us> "41C *ew US devi'e 6oundA idWendorB0:?1A idProdu'tB1;"N us> "41C *ew US devi'e strin0sC M6rB1A Produ'tB"A Serial*u%>erB# us> "41C Produ'tC IataTraveler @" us> "41C Manu6a'turerC Gin0ston us> "41C Serial*u%>erC 001NFO0IOC!1!:F11?,O0O!0 s'si10 C us>4stora0e "41C1&0 s'si 10C0C0C0C Iire't4,''ess Gin0ston IataTraveler @" 1&00 P8C 0 ,*S)C " sd 10C0C0C0C ,tta'/ed s'si 0eneri' s0N type 0 sd 10C0C0C0C (sdd+ FO"F#:" ?1"4>yte lo0i'al >lo'3sC (N&00 @ /#&F# @i ) sd 10C0C0C0C (sdd+ Mrite Prote't is o66 sd 10C0C0C0C (sdd+ Mode SenseC 1; "N 0: ?1 sd 10C0C0C0C (sdd+ ,ssu%in0 drive 'a'/eC write t/rou0/ sd 10C0C0C0C (sdd+ ,ssu%in0 drive 'a'/eC write t/rou0/ sddC sdd1 sd 10C0C0C0C (sdd+ ,ssu%in0 drive 'a'/eC write t/rou0/ sd 10C0C0C0C (sdd+ ,tta'/ed SCS) re%ova>le dis3

S9slo% est le lo% associ au dmon s9slo%d. S9slo%d est un programme qui tourne en tDche de fond et permet aux programmes" qui % font appel" de stocCer leurs messages a#ec la date et le ni#eau d'alerte dans ce seul et m)me fichier de lo%.

63

12.2.

L)amo"=a/e #u systme

Nous a#ons #u comment fonctionne le s%st&me une fois dmarr. 9ntressons nous maintenant au dmarrage. 1ur un s%st&me x*R 5nos 'C8" le +*&S recherche un disque amor.able et excute un petit programme sur ce disque qui prend le relais" c'est le bootloader. 'our !inux" il % a L*L& de moins en moins utilis et GRU+. !e bootloader charge ensuite le no%au en mmoire qui #a ensuite monter la partition principale 5/8. Une fois le no%au et le matriel initialis il excute le programme init qui se charge d'excuter des scripts d'initialisation du s%st&me et dmarre %ett9 par console #irtuelle ce qui permet d'a#oir les terminaux. Ces scripts de dmarrage sont situs soit dans /etc/rc5d soit dans /etc/init5d Ces scripts sont des scripts shell comme ce que nous a#ons #u prcdemment. !eur dmarrage est conditionn par leur droit. 'ar exemple nous a#ons rc5s9slo% le fameux dmon s9slo%. 1i nous examinons ses droits A
root(r'&d+D ls 4la/ r'&syslo0 4rw$r4$r4$ 1 root root :O1 "00140;40: "#C10 r'&syslo0

Nous #o%ons qu'il est excutable et sera donc dmarr par init. 9l est possible $ l'utilisateur root d'utiliser manuellement ces scripts pour dmarrer" arr)ter ou redmarrer le programme correspondant. 6xemple a#ec rc5sshd A 1ur le Li!eCD SS d 5que nous #errons plus loin8 n'est pas excutable. Alors rendons le excutable et dmarrons le A
root(r'&d+D '/%od J$ r'&ss/d root(r'&d+D &/r'&ss/d start

'our dmarrer il suffit d'indiquer start comme param&tre au script. 'our redmarrer on indique restart et stop pour arr)ter. !es fichiers rcN5d o; N est compris entre = et R sont des scripts excuts selon le ni#eau d'excution 5runle!el8. Cela correspond au mode d'excution du s%st&me.
#unle$el Description = 2 P E 4 ] R Arr)t du s%st&me ,ode mono utilisateur inutilis ,ode multi utilisateurs normal !ancement du ser#eur Morg 9dentique $ 4 /edmarrage du s%st&me Tableau 2$5 Les di**1rents "un'eve's

Ces modes et leurs scripts" qui % sont associs" sont #isibles dans le fichier /etc/inittab dont nous ne #errons pas le dtail.
64

Cependant on % note une ligne tr&s intressante A


DSyste% initialiaation (runs w/en syste% >oots) siCSCsysinitC/et'/r'&d/r'&S

Ceci signifie que le script utilis pendant le dmarrage du s%st&me est rc5S dans /etc/rc5d5 C'est donc lui qui initialise le s%st&me. Nous #enons de #oir qu'il % a des modes pour le dmarrage et l'arr)t du s%st&me mais nous n'a#ons pas encore #u les commandes associes A reboot et halt. 9l faut bien sKr les excuter a#ec les droits root 5soit en root soit #ia sudo8.

12.3.

Les mo#u'es #u noyau

9l est temps de #oir un peu plus en dtail ce qu'est le no%au Linux. Linux est un no%au monolithique modulaire. 7n ne d#eloppera pas ce qu'est un no%au monolithique car ce n'est pas tr&s important. 6n re#anche l'aspect modulaire est tr&s important car il permet d'a(outer ou d'enle#er $ chaud 5lorsque le no%au est charg8 des modules. Ces modules sont des fonctionnalits du no%au comme des pilotes par exemple. Linux est bien sKr multi utilisateurs et multitDches. !es sources du no%au Linux int&grent la grande ma(orit des fonctionnalits du no%au ainsi que les dri#ers. !ors de la compilation on a le choix entre compiler ces fonctionnalits soit en dur" donc directement dans le no%au soit en modules. !es modules sont rpartis dans une arborescence contenue dans A
/li>/%odules/W.-S)O*7IU7*O9,U/3ernel

!es modules du no%au peu#ent utiliser et exporter des fonctions qui sont ainsi disponibles pour les autres modules. Afin d'tablir ces dpendances apr&s l'installation d'un module il faut utiliser la commande depmod A
dep%od 4a

!a commande lsmod permet d'afficher la liste des modules chargs dans le no%au a#ec leurs dpendances. 6xemple A
Module $t7t'pudp ipta>le76ilter ip7ta>les $7ta>les vt1"11 /w%on7vid Siae "01? "0"; O?NF 10?:N 11#:; 1:F" Used >y " 1 1 ipta>le76ilter " $t7t'pudpAip7ta>les 0 1 vt1"11

7n #oit par exemple que le module hwmonA!id dpend du module !t3433" ou encore que le module iptableAfilter utilise le module ipAtables. 'our charger un module on utilise la commande modprobe A
%odpro>e *OM7MOIUL.

65

'our dcharger un module on utilise la commande rmmod A


r%%od *OM7MOIUL.

9l se peut que certains modules du no%au soient des implmentations diffrentes des m)mes fonctionnalits" ou qu'ils soient incompatibles. 'ar exemple le dri#er libre framebuffer n!idia et le dri#er propritaire n!idia. 'our #iter que le no%au les charge automatiquement on peut les blacklister. !e fichier contenant la liste des modules $ ne pas charger est blacklist5conf ou blacklist dans /etc/modprobe5d 1a s%ntaxe est tr&s simple" pour chaque ligne on a A
>la'3list *OM7MOIUL.

!ors du dmarrage sui#ant du s%st&me" le no%au ne chargera plus ces modules.

12.+.

Inte",a es "*seaux

Nous a#ions #u" tout au dbut" que les interfaces rseaux n'taient pas reprsentes" comme les autres priphriques" par un fichier dans /de!. !es interfaces rseaux ethernet sont identifies par ethN o; N est le numro de l'interface. 9l n'% a qu'une commande pour tout faire A ifconfi%. 'our afficher toutes les interfaces et leurs configurations A
i6'on6i0 4a

Gnralement" l'interface se nomme eth=. 'our dsacti#er l'interface A


i6'on6i0 interface down

'our l'acti#er A
i6'on6i0 interface up

ans le cas o; l'*) est fixe et non attribue par un ser#eur D C) A 'our configurer son *) A
i6'on6i0 interface IP

'our configurer la passerelle A


route add de6ault 0w IP_PASS ! ""

!es DNS sont configurs dans le fichier /etc/resol!5conf 'our a(outer un DNS il faut utiliser la s%ntaxe sui#ante A
na%eserver IP_#$S

!es modifications sont immdiates" il n'est pas ncessaire de redmarrer le s%st&me. ans le cas o; l'*) est attribue par un ser#eur D C)" pour faire une demande d'*) pour une interface A
d/'p'd interface 66

12.4.

Le s!e'' #istant

7n a sou#ent besoin" lorsqu'on utilise GNU/Linux" de se connecter $ distance $ une machine" ser#eur etc. Fort heureusement il est possible d'a#oir un shell distant tr&s simplement grDce $ SS .

a.

++3

SS est l'acron%me de Secure Shell car en plus de permettre une connexion il chiffre aussi toutes les donnes. SS permet une connexion $ distance il est donc bas sur le principe client/ser#eur. 9l n'est pas ncessaire que le ser#eur SS 5SS d8 soit excut pour que le client fonctionne. 6n re#anche il faut que SS d soit excut sur la machine cible. 1on script de dmarrage tant dans /etc/init5d ou /etc/rc5d selon le s%st&me. epuis une machine sous GNU/Linux pour se connecter sur une autre il suffit d'utiliser la commande sui#ante A
ss/ (4p port+ (4l utilisateur+ adresse7distante

1i l'option (l n'est pas spcifi" SS tentera une connexion a#ec l'utilisateur courant. Une fois l'authentification faite on dispose du shell comme si on tait connect localement. 9l existe un client SS sous windows qui se nomme )u''M.

b.

+CP

SS permet aussi de faire du transfert de fichier. 'our cela on utilise la commande SC). scp s'utilise d'une mani&re comparable $ cp. 'our spcifier la machine distante on utilise la notation sui#ante A
utilisateur<adresse7distanteC('i>le+

'our copier un fichier ou un rpertoire local #ers la machine distante A


s'p (4P port+ (4r+ *OM utilisateur<adresse7distanteC

'our copier un fichier ou un rpertoire distant en local A


s'p (4P port+ (4r+ utilisateur<adresse7distanteC*OM &

Comme pour cp l'option (r permet de copier des rpertoires et tout ce qu'ils contiennent. 6xemple si ma machine distante a l'adresse 23P.2R*.=.4 et que (e dsire copier le rpertoire W documents X #ers la machine A
s'p 4r do'u%ents t/aeron<1:"&1;O&0&NC

12.6.

C"on 'e .'ani,i ateu" #e t> !es

Nous sa#ons crire des scripts. ,ais il se peut qu'on ait besoin d'excuter un programme" un script ou une simple commande de mani&re priodique ou $ une date fixe. 9l existe bien #idemment un tel planificateur de tDches sous GNU/Linux. Ce programme est Cron.

67

Comme d'autres logiciels que nous a#ons #u et qui tournent en tDche de fond cron" ou plus prcisment crond" est un d?mon. Crond permet de grer des fichiers" appels crontabs" contenant les r&gles $ sui#re pour l'excution programme d'une commande. Comme on peut s'% attendre crond excute les commandes programmes a#ec l'utilisateur crateur de la r&gle. 'our crer des r&gles il faut utiliser le programme appel crontab qui #a faire le lien entre l'utilisateur et l'criture du fichier a#ec des droits suprieurs dans /!ar/spool/cron/crontabs/L&G*N 1%ntaxe de crontab A
'ronta> (OPT)O*S+ (!)C2).-+

options A
<l A affiche les r&gles de l'utilisateur <e A dite 5par dfaut dans 0*8 les r&gles de l'utilisateur <d A supprime les r&gles de l'utilisateur <u U:9!91A:6U/ A spcifie l'utilisateur

'ar dfaut c'est l'utilisateur courant qui sera utilis. /egardons maintenant la s%ntaxe des r&gles. C'est $ la fois tr&s simple et extr)mement puissant. !es r&gles s'cri#ent sur une seule ligne forme de R colonnes.
,inute Beure +our ,ois +our de la semaine Commande

Comme pour les scripts shell" le caract&re n sert $ mettre en commentaire (usqu'$ la fin de la ligne. 'our spcifier W quelque soit X on indique une toile G. Crond traite les r&gles toutes les minutes. 7n peut donc faire excuter une commande toutes les minutes en indiquant partout des toiles. 'our excuter toutes les 2= minutes on crit G/2= dans la premi&re colonne. 9l est aussi possible d'excuter une commande que un inter#alle de temps. 'our cela on crit H7/N6c9NF6/96U/6<H7/N6c1U'6/96U/6. Io%ons des exemples A
DM)* 2.U-. SOUMO)S SIS Dpour e$'uter date toutes les %inutes H H H H H COMM,*I. dateKKdate&t$t

Dpour e$'uter date toutes les " /eures (pile) 0 H/" H H H dateKKdate&t$t Dpour e$'uter date toutes les 10 %inutes de "#/eure b F/eure du %atin H/10 "#4F H H H dateKKdate&t$t Dpour e$'uter date b 10/eure pile et 1N/eure pile 0 10A1N H H H dateKKdate&t$t Dpour e$'uter date tous les pre%iers du %ois b %inuit 0 0 1 H H dateKKdate&t$t

68

'our les colonnes ,791 et + 1 il faut utiliser les abr#iations anglaises des mois et des (ours. 9l est ncessaire de rediriger les flux de sortie" soit #ers un fichier soit #ers /de!/null" car par dfaut crond redirige les sorties sur le mailer interne.

12.8.

Com.i'ation #)un ."o/"amme tie"s

Nous n'a#ons pour l'instant utilis que des programmes qui taient d($ disponibles par dfaut sur le s%st&me. 9l arri#e sou#ent qu'on ait besoin d'un logiciel supplmentaire. Nous a#ons #oqu la gestion des paquets propre $ chaque distribution. Nous allons #oir que nous pou#ons compiler nous<m)me ces programmes. 'our l'exemple nous prendrons le ser#eur tftp(hpa qui est un ser#eur ',') protocole sou#ent utilis dans un s%st&me embarqu. !es sources sont disponibles $ cette adresse A httpA//000.Cernel.org/pub/soft0are/net0orC/tftp/

Commen.ons par rcuprer l'archi#e A


(t/aeron<synapse t%p+= w0et 4E /ttpC//www&3ernel&or0/pu>/so6tware/networ3/t6tp/t6tp4/pa4?&0&tar&>a" .nsuite on d'o%presse lQar'/ive (t/aeron<synapse t%p+= tar 4$L6 t6tp4/pa4?&0&tar&>a" (t/aeron<synapse t%p+= 'd t6tp4/pa4?&0

7n a dans le rpertoire un fichier confi%ure qui est un script shell permettant une #rification des dpendances et une configuration automatique des options de compilation. !e script confi%ure est gnr par la suite d'outils autotool 5autoconf" automake" libtool8. 9l contient alors tou(ours les m)mes options de base" ensuite les d#eloppeurs peu#ent choisir d'en a(outer. 'our conna@tre toutes les options disponibles on appelle confi%ure a#ec l'option ((help !es options tou(ours disponibles sont les sui#antes A
<<prefixO 9/ /pertoire de base pour l'installation <<libdirO 9/ /pertoire o; seront installes les biblioth&ques <<s%sconfdirO 9/ /pertoire contenant les configurations <<mandirO 9/ /pertoire contenant les pages de manuel <<includedirO 9/ /pertoire contenant les fichiers d'en<t)tes du C <<bindirO 9/ /pertoire contenant les excutables

!a plupart du temps le prfixe par dfaut est /usr/local car comme on l'a #u c'est le rpertoire cens contenir les programmes non installs par dfaut a#ec le s%st&me. 'ar dfaut tous les autres rpertoires ont le prfixe comme rfrence" par exemple pour les biblioth&ques )R-,*#/lib" )R-,*#/bin pour les excutables et )R-,*#/etc pour les fichiers de configuration.

6'

Nous allons plutLt indiquer /usr comme prfixe et /etc pour le rpertoire des fichiers de configuration.
(t/aeron<synapse t6tp4/pa4?&0+= &/'on6i0ure 44pre6i$B/usr 44sys'on6dirB/et'

7n peut ensuite compiler" ceci se fait par l'intermdiaire de la commande make car le script confi%ure a gnr toutes les r&gles de compilation 5Makefiles8.
(t/aeron<synapse t6tp4/pa4?&0+= %a3e

9l ne reste plus qu'$ l'installer" comme l'installation #a se faire au sein du s%st&me nous de#ons obtenir les droits root.
(t/aeron<synapse t6tp4/pa4?&0+= su PasswordC (root<synapse t6tp4/pa4?&0+D %a3e install

6t pour terminer nous re<gnrons le cache des biblioth&ques.


(root<synapse t6tp4/pa4?&0+D ld'on6i0

9l existe d'autres outils que autotool pour la gnration de configuration de compilation. Cependant autotool est tr&s ma(oritairement utilis. 'arfois certains logiciels asse> simples sont fournis uniquement a#ec un Makefile" il suffit alors de sauter l'tape de confi%ure et d'excuter directement make pour procder $ la compilation.

12.:.

Le .o"t s*"ie

Nous" lectroniciens" a#ons sou#ent besoin d'utiliser le port srie pour dialoguer a#ec des cartes. Nous allons donc #oir comment l'utiliser dans ce but puis nous #errons comment on peut a#oir un terminal 5a#ec shell et authentification8 sur le port srie.

a.

Lecture et *criture sur le port s*rie


9per'erminal de

9l existe P programmes a%ant les m)mes fonctionnalits que le windows A %tkterm et minicom.

!ors qu'on utilise ces deux programmes en tant qu'utilisateur il faut #rifier qu'on ait les droits de lecture et d'criture" dans le cas contraire il faut les a(outer A
'/%od FFF /dev/ttyS0

Gtkterm est un terminal graphique 5donc il faut a#oir le ser#eur #or% dmarr8 ddi $ l'criture et $ la lecture sur le port srie. 9l ressemble beaucoup $ 9per'erminal et tout est configurable a#ec les souris par les menus.

7(

Fi%ure )5 3a'ture d01cran de G(?(e"m

minicom est un peu plus compliqu car il est a#ant tout con.u pour dialoguer a#ec un modem. 'our le configurer il faut crer un fichier 5minirc5dfl dans le &M- de l'utilisateur ou modifier le fichier gnrique de configuration A /etc/minirc5dfl 6xaminons sa configuration A
pu pu pu pu pu pu pu >audrate :;00 >its O parity * stop>its 1 %init %reset %/an0up

7n fixe le transfert 3R== bauds. !es donnes sont sur * bits sans parit a#ec un seul bit de stop. Ce sont les param&tres les plus couramment utilis. 6nsuite on dsacti#e les options spcifiques $ la communication a#ec un modem 5minit" mreset" mhan%up8. minicom utilise par dfaut le priphrique /de!/modem et ce n'est pas modifiable par l'utilisateur" si on #eut utiliser /de!/tt9S@ il suffit de faire un lien s%mbolique A
ln 4s /dev/ttyS0 /dev/%ode%

9l ne reste plus qu'$ excuter minicom a#ec l'option (o pour #iter qu'il en#oie des commandes d'initialisation5
minicom%&o

71

Fi%ure +5 3a'ture d01cran de mini om

b.

Le terminal sur le port s*rie

Afin de disposer d'un terminal sur le port srie il nous faut un cDble NULL( M&D-M. 6nsuite il faut modifier le fichier /etc/inittab que l'on a d($ entre#u. Nous a#ions #u que inittab tait le fichier de configuration de init" et qu'init se chargeait de dmarrer les terminaux #irtuels 5accessibles par C'RL6$L'6,x a#ec = l x l F8. C'est dans ce m)me fichier que l'on #a pou#oir configurer le terminal sur le port srie. 9l suffit d'indiquer la ligne A
s1C"#N?CrespawnC/s>in/a0etty 4L #ON00 ttyS0 vt100 s2 est le nom de la ligne" PE4] sont les runle!els" respawn indique que lorsque la connexion est termine le processus doit )tre relanc" /sbin/a%ett9 est le programme qui #a grer le shell sur le port srie.

a%ett9 prend les arguments sui#ant A


<! indique que l'on utilise pas un modem" E*4== c'est la #itesse de transfert" tt%1= que l'on utilise /de!/tt9S@ le premier port srie #t2== le t%pe de terminal.

6nsuite on force init $ relire son fichier de configuration A


init E

CLt client il faut a#oir configur le programme de lecture du port en E*4==bauds" pas de contrLle de flux" *bits. !e prompt d'authentification de#rait appara@tre apr&s la commande init G. 7n a donc acc&s au s%st&me comme si on tait en local ou par SS . ,ais on peut faire encore plus fort en en#o%ant les messages d'initialisation du no%au par la liaison srie. 9l suffit pour cela" (uste a#ant le dmarrage du no%au d'indiquer le param&tre sui#ant A
'onsoleBttyS0A#ON00 72

7n obtient alors du cLt client A

,essages de boot du no%au

)rompt de lo%in et shell

Fi%ure #5 3a'ture d01cran un terminal sur le 'ort s1rie

3onclusion
Au cours de cette formation" nous aurons appris comment utiliser cette mer#eilleuse ligne de commande. Utiliser les principales commandes Unix et m)me crire des scripts shell. Nous a#ons #u les rudiments de l'administration et la configuration. Ces notions #ous permettrons de #ous dbrouiller quelque soit la distribution Linux que #ous utilisere>" m)me sur un s%st&me embarqu.

73

4iblio%ra'!ie
)e systme )*+,-. /!Reilly 0rance 1 Ric&ard 2tallman et la r3olution du lo iciel li%re 4 ,ne %io rap&ie autorise. 5yrolles &ttp6778889c:sait9net7cours7scripts9p&p &ttp6778889 nu9or 7soft8are7%as&7manual7%as&ref9&tml &ttp6778889fil9uni3:lille19fr7;sedo la37/27main((59&tml &ttp67788893anemery9com7)inu#72erial7serial:console9&tml &ttp677linu#dansmonpc9is:a: ee<9com7inde#9p&p=pa e>terminal?serie

74

You might also like