Vous êtes sur la page 1sur 63

Prsentation gnrale dUNIX

Universit de Gabes Facult de sciences de Gabes Dpartement Informatique

1.1 Historique des systmes UNIX


AIX HP-UX IRIX UNIX Unix Ware XENIX

Cours: Linux1: Configuration et programmation systme avances


Prpar par lassistante: Mdme Imen S !I"I #$%!&I
Cours dsign au MPSSRI
nne universitaire !"##$#"#!

Unix system V Unix TSS V7

Multics

UNICS

Unix TSS V1

Unix TSS V2 V3

Unix TSS V4 V5

Unix TSS V6

Linux Solaris

1965

1969

1972

1973 1973

1974 1974

1976 Unix BSD Free BSD Net BSD Open BSD MacOSX

Figure2: Lvolution historique du systme Unix ( rf: site comment a marche)


TSS: Time Sharing System 1 2

1.1 Historique des systmes UNIX

1.1 Historique des systmes UNIX

1969 1979 : les premiers pas universitaires


En 1969 : Ken Thompson, aux BELL Laboratories, "Multics" (Multiplexed Information and Computing System): Cest un systme monoutilisateur et multitche crit en assembleur. En 1972, Dennis Ritchie implmente le langage C En 1973 : rcriture du noyau et des utilitaires dUNIX en C UNICS (UNiplexed Information and Computing Service), rapidement contracte en Unix. En 1974 distribution dUNIX aux Universits (Berkeley et Columbia notamment).

1979 1984 : les premiers pas commerciaux


En 1979, avec la version 7, UNIX se dveloppe commercialement : Par des socits prives comme Microport (1985), XnixMicrosoft (1980) qui achetrent les sources et le droit de diffuser des binaires. Des Unix like apparaissent ; le noyau est entirement rcrit. Luniversit de Berkley fait un portage su VAX (UNIX 32 V). AT&T vend la version 7 sur les ordinateurs de la gamme PDP 11.

1.1 Historique des systmes UNIX

1.1 Historique des systmes UNIX

1984 1993 ... : la standardisation


En 1984, le Systme V.2 est adopt comme standard. En 1984, X/Open est charge dorganiser la portabilit dUNIX. En 1985, AT&T publie SVID (System V Interface Definition) qui dfinit linterface dapplication du Systme V.2 et non pas son implmentation. En 1985, un professeur hollandais, nomm Andrew Tannenbaum, dveloppa un systme d'exploitation minimal, appel Minix . En 1986, le Systme V.3 apporte les Streams, les librairies partages et RFS (Remote File Sharing). En 1993, X/Open lance le COSE (Common Open Software Environment). Il sagit daccords entre constructeurs pour le dveloppement dapplications dans un environnement commun. Lauthentification dUNIX appartient dsormais un consortium de constructeurs (USL, HP, IBM, SUN ...).
5 6

1991 2000 : LINUX, le renouveau dUNIX


LINUX est une implantation libre des spcifications POSIX avec des extensions System V (AT&T) et BSD (Berkeley). En 1991, Linus B. Torvalds (Helsinki) utilise MINIX. La 1re version de LINUX 0.01. Cest une rcriture de MINIX, avec des ajouts de nouvelles fonctionnalits et la diffusion des sources sur Internet > une version instable En 1994 : 1re version stable De nos jours: Les versions 2.0 etc... Respectent la norme POSIX (code source portable) et le code source est gratuit.

Prsentation gnrale dUNIX

1.2 Caractristiques du systme UNIX

1.2 Caractristiques du systme UNIX


Multi-utilisteurs Plusieurs utilisateurs peuvent se connecter et travailler en mme temps. Chaque utilisateur a son environnement personnel. Multi-tches Un mme utilisateur peut lancer plusieurs travaux simultanment. Interactif Il est possible de dialoguer avec l'ordinateur. Possibilit aussi de lancer des processus (tches) en arrire plan et en mode diffr (batch). Portabilit Il est crit en C donc fonctionnement sur de nombreux plates-formes matriels.
8

Systme de fichiers hirarchis; Organisation en arborescence

usr

etc

home

var

dev

bin

lib

passwd

C1

C2

.. .. .

1.2 Caractristiques du systme UNIX

1.2 Caractristiques du systme UNIX

Chacun des rpertoires a un nom standardis et un contenu prcis:


/ /bin /boot /dev /etc /home /root /usr /var /proc Racine du systme, contient les rpertoires principaux Commandes essentielles communes tous les utilisateurs Fichers de dmarrage du systme, contient le noyau Points dentre des priphriques Fichiers de configuration Rpertoires personnels des utilisateurs Rpertoire personnel de ladministrateur Hirarchie secondaire, applications, bibliothques partages Fichiers traces du systme (logs) Systme de fichiers virtuel, informations en temps rel

Un mcanisme de protection identification des utilisateurs par mot de passe protection des fichiers Un super-utilisateur Une vision simplifie par l'utilisateur des entres-sorties Les priphriques sont reprsents par des noms de fichier, et peuvent tre utiliss comme des fichiers ordinaires) Le choix dun langage de commandes : Les shells.

10

Prsentation gnrale dUNIX

1.3 Structure du systme UNIX

1.3 Structure du systme UNIX


Les applications Interprtes de commande Noyau Mat riel

&tilitaires

!"ell# s"$ cs"$ %s" Les utilisateurs

Le noyau gre les tches de base du systme : -L'initialisation du systme -La gestion des ressources -La gestion des processus -La gestion des fichiers -La gestion des Entres/Sorties Lutilisateur communique avec le noyau par l'intermdiaire d'un SHELL. Les shells sont aussi des langages de commandes et de programmation. Les shells les plus connus sont : BOURNE SHELL (sh) KORN-SHELL (ksh) C-SHELL (csh) TC-SHELL (csh) Les utilitaires sont des outils d'interfaage avec le systme, de programmation et de communication.
11 12

Figure3: Structuration du systme UNIX

'artie1# certi(ication L'I101


1. Matriel & Architecture 2. Installation de Linux & Gestion des Packages 3. GNU & co andes Unix

)"ap1#Matriel & Architecture


1 Configurer les bases du BIOS 2 Configurer un modem et une carte son 3 Installer des priphriques SCSI 4 Paramtrer diffrentes cartes d'extension PC 5 Configurer les priphriques de communication 6 Configurer des priphriques USB
13 14

!. "#st$ es de %ichiers &. ' (indo)

1* *on%igurer les +ases du ,I-"


Objectifs
=> Configurer le matriel systme de base en modifiant correctement le BIOS systme. Cet objectif inclut une comprhension approprie des buts de configuration du BIOS tels que l'utilisation de LBA sur les disques durs IDE de plus de 1024 cylindres, en activant ou dsactivant des priphriques intgrs, aussi bien qu'en configurant des systmes avec ou sans priphriques externes tels que des claviers. Cela inclut galement le paramtrage correct des adresses d'IRQ, de DMA et d'I/O pour tous les ports administrs par le BIOS et la gestion des arrts sur erreur.

1*1,I-"
Cest un petit programme qui rside en mmoire morte. Quand vous allumez l'ordinateur, les instructions du BIOS (Basic Input Output System) sont charges en RAM depuis un composant ROM situ sur la carte mre et dans lequel elles sont disponibles de faon permanente. Ces instructions indiquent au processeur o est situ le systme d'exploitation et comment le charger en RAM. Pour permettre au systme d'exploitation et aux applications de fonctionner sur un PC, le BIOS fournit un niveau standard de services que le systme d'exploitation peut utiliser pour dialoguer avec le matriel. son tour, le systme d'exploitation fournit des services standards aux applications qui leur permettent de fonctionner.
15 16

Fichiers, termes et commandes principaux inclus :


/proc/ioports /proc/interrupts /proc/dma /proc/pci dmesg

1*2 Acc$s . des dis/ues0durs de grande ca1acit


LBA (Logic Block Addressing) est la mthode la plus courante pour dpasser la limite des 528 Mo impose par les lecteurs de disques IDE. La limite des 528 Mo est impose par le plus petit dnominateur commun (ppcm) entre les interfaces IDE et le BIOS (INT13H).

Avec LBA, chaque bloc a un numro unique et le niveau physique du disque n'est pas visible par le systme d'exploitation. Par exemple, un disque de 2048 cylindres, 16 ttes et 63 secteurs sera dtect avec 1024 cylindres, 32 ttes et 63 secteurs. Dans la traduction, si le numro de secteur est infrieur 1024*16*63, le disque dur fait moins de 528M. Lorsque le numro de secteur est suprieur 1024*16*63, le nombre de ttes est fix 32. Pour que tout fonctionne correctement, ce mcanisme doit tre support par le BIOS, l'OS et le disque IDE.
17 18

Elements Max Sector/Track Number of heads Number of cylindes Max Capacity

INT13H 63 255 1024 8.4G

IDE 255 16 65536

Limitation 63 16 1024

136.9G 528M

1*3 -+tenir des in%or ations sur les dis/ues0durs


Pour obtenir des informations sur la gomtrie d'un disque IDE, utilisez hdparm. hdparm [options] [devices] Options courantes : -g: Fournit la gomtrie du disque. -C: Affiche le mode de puissance du disque dur. active/idle: operation normale, Standby: Mode puissance rduite, Or sleeping: Mode puissance minimum. -v: Affiche tous les paramtres du disque dur.

Exemples : hdparm -g /dev/hda /dev/hda: geometry = 3648/255/63, sectors = 58605120, start = 0 hdparm -C /dev/hda /dev/hda: drive state is: active/idle

19

20

1*4 -+tenir des in%or ations sur le no#au


/proc est un pseudo-systme de fichiers qui est utilis comme interface vers les structures de donnes du noyau. La plupart de ses fichiers sont en lecture seule, mais certains permettent de modifier les variables du noyau. Exemples de rpertoires disponibles: /proc/uptime Depuis quand le systme a dmarr et fonctionne. /proc/sys/kernel Informations sur le noyau. /proc/sys/net Informations rseau. /proc/partitions Informations sur les partitions du/des disque(s) dur(s). /proc/scsi Informations SCSI. /proc/mount Informations sur les systmes de fichiers monts. /proc/devices Liste les pilotes chargs. /proc/bus Informations sur les bus. /proc/version Version Linux.
21

2* *on%igurer un
Objectifs

ode son

et une carte

Assurez-vous des conditions de compatibilit de raccordement des priphriques (en particulier pour les modems qui ne sont pas "Windows"), vrifiez que le modem et la carte son emploient des adresses uniques et correctes d'IRQ, d'I/O, et de DMA, si la carte son est PnP, installez et dmarrez sndconfig et isapnp, configurez le modem pour un "dial-up" clavier, configurez le modem pour le protocole PPP | SLIP | CSLIP connection, paramtrez le port srie pour 115.2 Kbps.

22

2.1 Mode
Un modem est un priphrique qui permet d'envoyer des donnes numriques sur une ligne tlphonique. Il existe quatre types de modems :
Externe : connect par le port srie. USB : connect par un port USB. Interne : carte ISA ou PCI. Intgr : directement intgr la carte mre.

2.2 Ports srie


Un modem externe peut tre configur avec setserial. setserial [options] device [parameters] Les diffrents ports srie disponibles sont : /dev/ttys0 (COM1), port 0x3f8, irq 4 /dev/ttys1 (COM2), port 0x2f8, irq 3 /dev/ttys2 (COM3), port 0x3e8, irq 4 /dev/ttys3 (COM4), port 0x2e8, irq 3 Options habituelles : -a: rapporte toutes les informations disponibles sur un priphrique connect.

La plupart des nouveaux modems sont Plug and Play et vous avez diffrents moyens de les configurer :
Le pilote srie le fait pour vous. Utiliser le programme isapnp. Laisser le BIOS PnP faire la configuration.

Pour afficher les informations sur un priphrique ISA, utilisez pnpdump. Cet utilitaire peut afficher les informations d'une carte PnP (ports d'entre/sortie, interruptions et canaux DMA) que la carte souhaite ou doit utiliser. Pour configurer un priphrique ISA, utilisez isapnp. Pour plus d'informations, lisez la page de manuel du fichier isapnp.conf.
23

24

Paramtres habituels : -port: numro de port. -irq: numro IRQ. -uart: Type d'UART autoris (aucun, 8250 (vitesse=19200bit/s), 16450 (vitesse=38400 57600bit/s), 16550 (vitesse=115 kbit/s). (40 broches) -autoconfig: Demande au kernel de dterminer l'UART, le numro IRQ,... -baud_rate: Bande passante de communication (maximum : 115200 octets/sec). Exemple : Pour obtenir des information sur les priphriques connects setserial -a /dev/ttyS* Pour dfinir la vitesse du port srie: setserial speed option Option: spd_hi (56ko), spd_vhi (115ko), spd_shi(230ko),
25

2*3 A11els entrants et sortants


Pour mettre un appel avec un modem, vous pouvez utiliser les applications setserial ou minicom. Un fichier de configuration peut tre cr avec l'option -s. minicom -s Pour recevoir un appel, le systme a besoin de lancer un processus getty pour grer la session d'appel. La configuration doit tre faite avec le fichier /etc/inittab : D1:45:respawn:/sbin/agetty -mt60 19200,9600 ttyS0 vt100 -m: dit getty d'extraire le taux bps. 19200,9600: taux bps quand il reoit un caratre BREAK. t60: timeout de 60 secondes. ttyS0: port sur lequel le modem est connect. vt100: type de terminal utilis dans la variable d'environnement TERM. Une fois que /etc/inittab est modifi, init doit le relire. telinit -q
26

2*4 )arte son


Les cartes son sont en gnral internes, c--d connectes directement sur un bus de la carte mre. Leurs configurations dpendent donc des ressources alloues: IRQ et adresse dI/O. Ces ressources peuvent tjrs tre consultes par les commande dmesg, lspci ou dans les fichier /var/log/dmesg ou /proc/pci. Loutil sndconfig permet dinstaller ou de dtecter la carte son et de proposer une configuration par dfaut, ou un mode manuel o lon choisit la carte son. Les modifications aux fichiers /etc/isapnp.conf et /etc/conf.modules (ou /etc/modules.conf) sont automatiques.
27

3* Installer des 1ri1hri/ues "*"I


Objectifs Configurer les priphriques SCSI en utilisant le "BIOS SCSI" aussi bien que les outils Linux ncessaires. Ils devraient galement faire la diffrence entre les divers types de SCSI. Cet objectif inclut la manipulation du BIOS SCSI pour dtecter les identifications SCSI utilises et disponibles et saisir la valeur correcte d'identification pour diffrents priphriques, particulirement le priphrique de dmarrage (boot). Cela comprend galement la gestion du paramtrage du BIOS de l'ordinateur pour dterminer la squence de dmarrage (boot) si des priphrique SCSI et IDE sont prsents. Fichiers, termes et commandes principaux inclus : SCSI ID /proc/scsi/ scsi_info

28

D.D

IDE: /dev/hdxy SCSI: /dev/sdxy O x prsente (a maitre, b esclave, c maitre, d esclave) (chacun possde au max 4 partitions primaires de 1 4 et 12 partitions logiques de 5 16 ) Exemple: La deuxime partition logique: /dev/hda2 /dev/hda5 /dev/hda6 Il existe 3 grands types dinterface SCSI: 1. SCSI-1: Interface 8 bits, 8 priphriques (en ralit 7), f=4,77Mhz 2. SCSI-2: 16 bits, 16 priphriques (15 en ralit) 3. SCSI-3: 32 priphriques.
29

3*1 Pri1hri/ues "*"I


On peut accder au BIOS SCSI lors du boot avec une squence particulire de touches, ce qui permet de modifier certains paramtres, de dfinir le SCSI comme bootable ou d'autres. Pour accder aux informations du SCSI, utiliser scsi_info ou hdparm. Exemples : scsi_info /dev/sda hdparm -gv /dev/sda
30

4* Para trer di%%rentes cartes d2extension P*


Objectifs Etre en mesure de configurer de nombreuses cartes pour diffrents slots d'extension. Ils devraient connaitre la diffrence entre les cartes ISA et PCI en respectant les donnes de configuration. Cet objectif comprend le paramtrage correct des IRQs, DMA et ports I/O des cartes, notammment pour viter les conflits entre les priphriques. Cela inclut l'usage de isapnp si la carte est un periphrique PnP. Fichiers, termes et commandes principaux inclus : /proc/dma /proc/interrupts /proc/ioports /proc/pci pnpdump (8) isapnp (8) lspci (8)
31

4.1 Cartes PCI Toutes les cartes PCI sont normalement dtectes par le BIOS. Lors du boot, le BIOS vrifie l'espace de configuration PCI et dtecte tous les priphriques et les bridges. Pour tre sr que le BIOS a dtect tous les priphriques PCI, utiliser lspci. Vrifier les bridges, les fonctions et les priphriques spciaux. 4.2 Cartes ISA Toutes les cartes ISA sont aussi normalement dtectes par leur pilote respectif. Les utilitaires qui permettent de configurer manuellement les cartes ISA sont pnpdump, pnpisa et le fichier /etc/isapnp.conf. Le programme pnpdump permet d'afficher les informations sur les cartes ISA dtectes. Le programme pnpisa utilise un fichier de configuration /etc/isapnp.conf qui a la mme syntaxe que la sortie de pnpdump et qui permet de configurer n'importe quel paramtre d'une carte ISA
32

5* *on%igurer les 1ri1hri/ues de co unication


Objectifs Installer et configurer diffrents priphriques internes ou externes de communication comme un modem, un adaptateur ISDN, et commutateurs (switches) DSL. L'objectif inclut la vrification de la compatibilit requise (importante en particulier si le modem est compatible Windows), et de la ncessit de charger et de paramtrer les pilotes adquats des priphriques, ainsi que les paramtres matriels (IRQs, DMAs, I/O ports) des priphriques. Cela comprend galement les priphriques de communication et les outils de configuration d'interfaces, comme le port srie pour 115.2 kbps, et l'installation correcte du modem pour la limite de connexions PPP en sortie. Fichiers, termes et commandes principaux inclus : /proc/dma /proc/interrupts /proc/ioports setserial(8)
33

5*1 I3- Ports


Pour obtenir la liste des ports d'entre/sortie utiliss dans le systme, vous pouvez afficher le contenu du fichier /proc/ioports. $ cat /proc/ioports 0000-001f : dma1 0020-003f : pic1 0040-005f : timer 0060-006f : keyboard 0070-007f : rtc 0080-008f : dma page reg 00a0-00bf : pic2 00c0-00df : dma2 00f0-00ff : fpu 0170-0177 : PCI device 8086:248a 0170-0177 : ide1 ..
34

5.2 Interruptions Afin d'obtenir la liste de toutes les interruptions de tous les priphriques, on peut afficher le contenu du fichier /proc/interrupts l'cran. $ cat /proc/interrupts CPU0 0: 397517 XT-PIC timer 1: 7544 XT-PIC keyboard 2: 0 XT-PIC cascade 5: 0 XT-PIC usb-uhci, usb-uhci 8: 2 XT-PIC rtc 10: 2024 XT-PIC eth0, usb-uhci, PCI device 12: 19502 XT-PIC PS/2 Mouse .. 5.3 DMA Pour obtenir la liste de tous les canaux DMA (Direct Memory Access) ISA utiliss, afficher le contenu du fichier /proc/dma. $ cat /proc/dma 4: cascade
35

5*4 P*I
Pour obtenir la liste de tous les priphriques sur le bus PCI, afficher le contenu du fichier /proc/pci. $ cat /proc/pci PCI devices found: Bus 0, device 0, function 0: Class 0600: PCI device 8086:3575 (rev 2). Prefetchable 32 bit memory at 0xe0000000 [0xefffffff]. Bus 0, device 1, function 0: Class 0604: PCI device 8086:3576 (rev 2). Master Capable. Latency=96. Min Gnt=12. Bus 0, device 29, function 0: Class 0c03: PCI device 8086:2482 (rev 1). IRQ 10. I/O at 0x1800 [0x181f]. .
36

6* *on%igurer des 1ri1hri/ues U",


Objectifs Activer le support USB, utiliser et configurer des priphriques USB diffrents. Cet objectif inclut la slection du chipset USB appropri et du module correspondant. Cela inclut aussi la connaissance des bases de l'architecture de couche modle (layer model) de l'USB ainsi que les diffrents modules utiliss dans les diffrentes couches (layer). Fichiers, termes et commandes principaux inclus : lspci (8) usb-uhci.o usb-ohci.o /etc/usbmgr/ usbmodules /etc/hotplug

6*1 4tection auto ati/ue de nou5eaux 1ri1hri/ues U",


Le programme excut lorsqu'un nouveau priphrique est connect est hotplug hotplug nom Noms courants : pci: priphrique PCI. usb: priphrique USB. Le rpertoire /etc/hotplug contient les scripts qui ont besoin d'tre excuts chaque fois qu'un priphrique est insr ou enlev. /etc/hotplug/pci.agent: Pour installer le pilote PCI adquat. /etc/hotplug/usb.agent: Pour installer le pilote USB adquat. Le programme hotplug est galement lanc au dmarrage du systme pour initialiser tous les priphriques connects. /etc/init.d/hotplug

37

38

6*2 Lister les 1ri1hri/ues U",


Pour vrifier que tous les priphriques ont bien t dtects, utilisez lsusb. lsusb [options] Exemple: $ lsusb Bus 001 Device 004: ID 04a9:3045 Canon Inc. PowerShot S100 Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.00 idVendor 0x04a9 Canon Inc. idProduct 0x3045 PowerShot S100 ... Pour afficher une vue graphique des priphriques USB connects, utilisez usbview.
39

6*3 Pilotes U",


Chaque priphrique USB dtect sera mont dans le systme de fichiers /proc/bus/usb. L'application approprie pourra y accder. Chaque priphrique USB sera vu au travers d'un systme de fichiers. /proc/bus/usb/001/005 Pour vrifier que le pilote appropri a bien t charg pour un priphrique USB, utilisez usbmodules. usbmodules [options] Exemples: $ usbmodules device /proc/bus/usb/001/001 $ usbcore $ usbmodules device /proc/bus/usb/001/005 mapfile /etc/hotplug/usb.handman Les modules charger par dfaut sont /lib/modules/<versionnoyau>/modules.usbmap. La table de correspondance est stocke dans le fichier /lib/modules/<versionnoyau>/modules.usbmap. Tous les pilotes sont stocks dans le rpertoire /lib/modules/<versionnoyau>/kernel/drivers/usb/. 40

6*4 A11lications U",


Beaucoup d'applications existent pour beaucoup de priphriques diffrents. Il faut parfois du temps pour arriver toutes les faire marcher. gphoto2 est une application qui peut-tre utilise pour un appareil photo numrique. options courrantes: --debug : Pour voir quel est le problme de communication avec l'appareil photo. --print-usb-usermap : stocke la sortie dans /etc/hotplug/usb.usermap de faon ce que l'application supporte votre appareil photo. -P : Tlcharger les photos. Exemple: gphoto2 --summary Dtection du 'Canon PowerShot S100'. Rsum de l'appareil : Indentification de l'appareil : Modle : Canon PowerShot S100 Propritaire :
41

+,emple de -uestions
Quelle commande permet dafficher les messages de dmarrage du systme? A. mess B. dmesg C. bootmsg D. lsmsg 2. Comment afficher les cartes connectes sur le bus PCI? A. less /proc/pci B. pcidump C. lesspci 3. La commande permet de lister les priphriques USB prsents sur la machine. 4. Combien de priphriques peut on thoriquement connecter sur une interface SCSI-2? A. 32 B. 8 C. 15
42

1.

5. Quelle commande permet de dtecter les priphriques prsents sur les ports srie? A. lsserial B. setserial C. scantty 6. Quelle(s) commande(s) permet(ent) de dtecter les cartes son prsentes sur votre machine? A. lspci B. less /var/log/dmesg C. sndconfig D. less /etc/modules.conf 7. Comment est reprsent le priphrique IDE esclave du deuxime controleur? A. hda B. sdc C. hdc1 D. hdd 8. Le choix du priphrique de dmarrage de votre machine se fait A. dans le bios B. avec une option du chargeur de demarrage (boot loader) C. automatiquement 43

)"ap2# Installation de Linux & Gestion des Packages


1.Conception de plan de partitionnement de disque dur 2. Installer un gestionnaire d'amorage (boot manager) 3 Compiler et installer des programmes partir des sources 4 Grer les bibliothques partages 5 Utilisation du systme de gestion des paquets de Debian 6 Utilisation du systme de gestion des paquets de Red Hat

44

1* Conception de plan de partitionnement de disque dur


Objectif Concevoir le plan de partitionnement des disques d'un systme Linux. Cet objectif inclut l'allocation de systmes de fichiers ou d'espaces de swap en partitions ou disques, et l'adaptation de ce plan aux besoins auquels le systme devra rpondre. Cela inclut galement de placer /boot sur une partition compatible avec les contraintes du BIOS pour pouvoir dmarrer. Fichiers cls, termes et utilitaires: / (systme de fichiers racine) /var (systme de fichiers) /home (systme de fichiers) espace de swap points de montage partitions cylindre 1024
45

1*1 Partitions
Lorsque l'on fait une installation, il est ncessaire de crer au minimum deux partitions : / (systme de fichiers racine): partition contenant la distribution Linux. Espace de swap : partition permettant au noyau de faire tourner plus de processus que la RAM seule ne pourrait en supporter. Si plusieurs disques sont disponibles, il est de bon ton de prvoir galement des partitions spares pour les rpertoires /usr et /home. Chaque partition contiendra un type de systme de fichiers (ventuellement tous diffrents) et pourra tre monte sur le systme actif dans l'arbre global des fichiers. Pour afficher la liste des systmes de fichiers actifs, utilisez la commande mount. $ mount proc on /proc type proc (rw) /dev/hda1 on /boot type ext2 (rw) shmfs on /dev/shm type shm (rw) La partition de swap n'a pas besoin d'un systme de fichiers. Le noyau pourra y accder en mode brut. 46

1*2 Problmes relatifs la vitesse des disques.


Avant de dcider votre plan de partitionnement, vous devez connaitre exactement les types d'applications qui tourneront sur votre systme.
Serveur de mails Serveur Web Applications graphiques s'appuyant sur X-Window et plus encore

1*3 M oire 5irtuelle


Les informations sur la partition de swap peuvent tre obtenues par la commande swapon swapon -s # montre la partition active. Pour obtenir des informations sur l'utilisation de la mmoire virtuelle, utilisez la commande vmstat. $ vmstat -n 1 procs memory swap io system cpu r b w swpd free buff cache si so bi bo in cs us sy id 5 0 1 184 3228 37684 92828 0 0 37 19 124 228 3 0 97 1 0 0 184 3476 37684 92596 0 0 0 0 102 368 0 0 100 2 0 0 184 3476 37684 92596 0 0 0 0 101 328 0 0 100

Si votre systme possde plusieurs disques, utilisez le plus rapide pour conserver la majorit de vos donnes.
/ Contient la plupart des utilitaires systmes qui ne sont pas souvent utiliss. Ils peuvent donc tre envoys sur le disque le plus lent. /var/log contient beaucoup d'informations de log. Cette partition est mieux sur un disque rapide. /usr est typiquement une partition spare. Nanmoins, la prvision d'utiliser de nombreux clients dmarrant de nombreuses applications graphiques pousse souvent mettre cette partition sur un disque rapide.
47

48

r:processes waiting for run time. b: processes in uninterruptable sleep. w: processes swapped out. swpd: virtual memory used (kB). free: Idle memory (kB). buff: Memory used as buffers (kB). si: Memory swapped in from disk (kB/s). so: Memory swapped to disk (kB/s). bi: Blocks sent to a block device (blocks/s). bo: Blocks received from a block device (blocks/s). in: The number of interrupts per second. cs: The number of context switches per second. us: user time, sy: system time, id: idle time.
49

2. Installer un gestionnaire d'amorage (boot manager)


Objectif Slectionner, installer et configurer un gestionnaire d'amorage. Cet objectif inclut la mise disposition d'emplacements de dmarrage alternatifs et d'options de dmarrage pour backup (par exemple en utilisant une disquette). fichiers cls termes et utilitaires : /etc/lilo.conf /boot/grub/grub.conf ( verifier : ne serait-ce pas plutt /boot/grub/menu.lst ?) lilo grub-install MBR superblock first stage boot loader

50

2*1 Gestionnaire d'amorage


Un gestionnaire d'amorage est install sur le MBR (Master Boot Record). Quand un systme est dmarr, il charge dans la RAM ce qui est sur le MBR. Les deux gestionaires d'amorage les plus courants sous Linux sont : Lilo: LInux LOader. Grub: Grand Unified Boot Loader. Un gestionnaire d'amorage permet de slectionner l'image partir de laquelle on dsire dmarrer, et ventuellement de passer des paramtres, de manire prdfinie ou interactivement. Pour Linux, il s'agit de dterminer le noyau sur lequel on veut dmarrer et de lui passer des paramtres (comme la partition utiliser comme racine), et ventuellement un initrd (initial Ram Disk) charger aprs le noyau. De nombreux systmes d'exploitations (notamment propritaires) ont tendance installer leur propre gestionnaire de dmarrage sans se proccuper de l'existence pralable d'un gestionnaire de dmarrage dans le MBR. Ainsi, il est prfrable de garder cela l'esprit quand on veut installer plusieurs systmes d'exploitations : si on veut faire cohabiter linux avec d'autres systmes, il est plus sr de l'installer en dernier, Grub et Lilo permettant de charger plusieurs systmes d'exploitation. GRUB est le gestionnaire par dfaut de nombreuses distributions linux actuelles.
51

2*2 LILO vs. GRUB


Les deux sont utiliss pour charger une image d'un disque vers la RAM. GRUB possde les avantages suivants sur LILO: Plus de commandes pr-OS. Peut charger des images places au-dela de la limitation BIOS du cylindre 1024. Peut accder son fichier de configuration via le systme de fichiers. Si vous utilisez LILO, chaque fois que vous ajoutez une nouvelle image ou que vous changez une image, un nouveau LILO doit tre install sur le MBR. LILO conserve ses informations de dmarrage dans le MBR. GRUB conserve ses informations de dmarrage dans le filesystem (menu.lst). LILO possde aussi un fichier de configuration: /etc/lilo.conf. Pour installer GRUB sur le MBR, utilisez grub. Cette commande va craser le MBR. Pour installer LILO sur le MBR, utilisez lilo. Lilo va utiliser le fichier /etc/lilo.conf pour savoir quoi crire sur le MBR.
52

Exemple de /etc/lilo.conf : # LILO global section boot = /dev/hda # Cible d'installation de LILO : le MBR vga = normal # (normal, extended, ou ask) read-only # Monte le systme de fichiers en lecture seule # LILO Linux section image=/boot/vmlinuz # Image charger label=linux # Nom de l'entre du menu root=/dev/hda1 # Partition racine pour le noyau initrd=/boot/initrd # disque en RAM # LILO DOS/Windows section other=/dev/hda3 label=windows # LILO memtest section image=/boot/memtest.bin label=memtest86

Exemple de menu.lst (fichier de configuration de GRUB): # GRUB default values timeout 10 # Dmarer le noyau par dfaut apres 10 secondes. default 0 # Noyau par dfaut. # Grub for Linux section 0 title GNU/Linux # Titre root (hd0,1) # /dev/hda2 systme de fichiers racine # Noyau et paramtres passer au noyau. kernel /boot/vmlinuz root=/dev/hda2 read-only initrd /boot/initrd boot # Grub for DOS/Windows section title Windows root (hd0,2) # /dev/hda3 makeactive chainloader+1
53 54

3. *o 1iler et installer des 1rogra es . 1artir des sources


Objectif Compiler et installer un programme excutable partir de ses sources. Cet objectif inclus des adaptations simples au Makefile, par exemple modifier des chemins ou ajouter un rpertoire d'inclusions supplmentaire. fichiers cls termes et utilitaires: gunzip gzip bzip2 tar configure make

3*1 6ichiers source


On appelle archive un ensemble de fichiers qui ont une relation et stocks dans un fichier unique (pour faciliter la copie, par exemple). La commande permettant de rassembler fichiers et sous-rpertoires dans une archive est tar. C'est pourquoi il est courant de dire qu'un fichier tar est une archive. tar fonction & options fichiers Fonctions courantes: -c: Cre une nouvelle archive. -t: liste les fichiers rassembls dans un fichier tar. -x: Extrait le contenu d'un fichier tar. Options courantes: -f file: Spcifie le nom du fichier tar. Exemples: tar cvf monbackup.tar ~ tar cvf usr.tar /usr tar tvf monbackup.tar tar xvf monbackup.tar On utilise gnralement l'extension .tar pour toutes archives cres par l'utilitaire tar.
55 56

3*2 *o 1ression de %ichiers


La compression permet d'conomiser l'espace de stockage et les besoins inhrents au transfert de fichiers. Il existe de nombreux utilitaires de compression de fichiers:
compress, uncompress # vieil algorithme Unix de compression gzip, gunzip # Le plus utilis bzip2, bunzip2 # l'algorithme donnant la meilleur compression (au cot de la vitesse...)

3*3 Archi5age de %ichiers et co 1ression


Il est possible de rassembler des fichiers et de compresser l'archive obtenue en une seule commande. Exemples: tar cvzf backup.tgz ~ # Backup du rpertoire utilisateur avec gzip tar cvjf backup.tbz ~ # Backup du rpertoire utilisateur avec with bzip2 tar xvzf backup.tgz # dcompression et extraction de backup.tgz avec gunzip tar xvjf backup.tbz # dcompression et extraction de backup.tbz avec bunzip2 Par dfaut, tar utilise des chemins relatifs, mais il est possible de sauver des fichiers en chemin absolu en utilisant l'option -P. Dans ce mode, les fichiers seront toujours extraits au mme endroit.
58

Une fois qu'une archive a t cre, elle peut tre compresse. Exemples: $ ls -l backup.tar -rw-r--r-- 1 rarrigon users 22773760 nov 10 11:07 backup.tar $ gzip -v backup.tar backup.tar: 53.8% -- replaced with backup.tar.gz $ ls -l backup.tar.gz -rw-r--r-- 1 rarrigon users 10507393 nov 10 11:07 backup.tar.gz $ gunzip backup.tar.gz $ bzip2 -v backup.tar backup.tar: 2.260:1, 3.540 bits/byte, 55.75% saved, 22773760 in, 10077846 out.
57

3*4 *ha7ne d2outils GNU


Sous Linux, toutes les sources peuvent tre compiles avec la chaine d'outils standard de GNU.
L'utilitaire make permet de construire un programme partir de plusieurs fichiers sources. Il utilise les rgles dfinies dans le Makefile. gcc est un compilateur C compatible ANSI. g++ est un compilateur C++.

!. Grer les +i+lioth$/ues 1artages


Objectif Dterminer de quelles bibliothques partages un programme excutable dpend, et de les installer si ncessaire. Trouver quel endroit les bibliothques du systme sont conserves. fichiers cls termes et utilitaires: ldd ldconfig /etc/ld.so.conf LD_LIBRARY_PATH Imprimer les dpendances en bibliothques partages Installer de nouvelles bibliothques Construire les dpendances.

Beaucoup d'archives contiennent des fichiers d'information (README, INTALL) qui expliquent comment le programme doit tre compil et install. Les fichiers Makefile.in et configure.in sont les fichiers de base servant produire le Makefile final. Le fichier configure est gnralement un script qui va explorer le systme et produire un Makefile final. C'est pourquoi il est courant que l'installation d'un programme partir des sources se rsume la suite de commandes : $ ./configure $ make $ make install La dernire commande demande gnralement les droits super-utilisateur (root) pour s'excuter avec succs.
59

60

4*1 ,i+lioth$/ues 1artages


&ne .i.liot"-ue est un ensem.le de (onctions -ue les pro/rammes peu0ent r utiliser pour impl menter leurs (onctionnalit s* Lors-ue l1on construit un e, cuta.le$ ces .i.liot"-ues sont 2li es2 au pro/ramme* )e lien peut 3tre stati-ue ou dynami-ue* &n lien stati-ue si/ni(ie -ue l1e, cuta.le (inal contiendra les (onctions de la .i.liot"-ue dans ses propres (ic"iers* !ous Linu,$ la .i.liot"-ue prend alors l1e,tension *a 4comme dans li.*a5* &n lien dynami-ue si/ni(ie -ue la .i.liot"-ue de0ra 3tre c"ar/ e en m moire 67M -uand le pro/ramme aura .esoin d1e, cuter les (onctions -u1elle contient* !ous Linu,$ la .i.liot"-ue prend alors l1e,tension *so 4comme dans li.*so5* Les r pertoires par d (aut des .i.liot"-ues standards sont#
8li.# utilis principalement par les pro/rammes de 8.in* 8usr8li.# utilis principalement par les pro/rammes de 8usr8.in*

Le (ic"ier 8etc8ld*so*con( est utilis par le systme pour indi-uer les 0entuelles autres localisations des .i.liot"-ues* 'our cr er un (ic"ier cac"e utilis par le c"ar/eur de liens$ utilise9 ldcon(i/* Le (ic"ier 8etc8ld*so*cac"e sera / ner * )e (ic"ier contient en (ait la liste des .i.liot"-ues trou0 es par le systme dans les r pertoires mentionn s par le (ic"ier 8etc8ld*so*con(*
61

!.2 41endance de +i+lioth$/ues. 'our a((ic"er la liste des d pendances d1un pro/ramme 4ou d1une .i.liot"-ue5 en termes de .i.liot"-ues parta/ es$ utilise9 ldd* ldd :;0dr< pro/ramme=.i.liot"-ue +,emple# > ldd ;d ;0 8.in8cp li.c*so*6 ?@ 8li.8li.c*so*6 40,400270005 8li.8ld;linu,*so*2 ?@ 8li.8ld;linu,*so*2 40,400000005 !.3 *hargeur de liens Le c"ar/eur de liens ld.so c"erc"e la .i.liot"-ue dont un pro/ramme a .esoin et la c"ar/e en m moire 67M* L1ordre de rec"erc"e de ld*so est #
LABLIC676DB'7EF Le (ic"ier cac"e 8etc8ld*so*cac"e Les r pertoires par d (aut 8li. et 8usr8li.*
62

&. Utilisation du s#st$ e de gestion des 1a/uets de 4e+ian


Objectif Utiliser le systme de gestion des paquets de Debian. Cet objectif inclut la capacit utiliser des outils tant graphiques qu'en ligne de commandes pour installer, mettre jour ou dsinstaller des paquets, ainsi que pour trouver les paquets contenant des fichiers ou des logiciels (qu'ils puissent ou non tre installs). Cet objectif inclut galement la capacit obtenir des informations sur le paquet, tels que la version, le contenu, les dpendances, l'intgrit du paquet et le statut d'installation (le paquet a-t-il dj t install). Fichiers cls, termes et utilitaires : unpack configure /etc/dpkg/dpkg.cfg /var/lib/dpkg/* /etc/apt/apt.conf /etc/apt/sources.list dpkg dselect dpkgreconfigure apt-get alien Debian est une organisation de bnvoles ddie au dvelopement de logiciels libres et la promotion des idaux de la Free Software Foundation. Le projet Debian a t fond en 1993. Il compte plus de 900 dveloppeurs. Debian supporte de nombreux processeurs: Alpha, ARM, HP PA-RISC, Intel x86, Intel IA-64, Motorola 680x0, MIPS, MIPS (DEC), PowerPC, IBM S/390, SPARC.
63

5*1 4select
L1utilitaire 0ous permettant d1aGouter ou retirer (acilement des pa-uets sous Ae.ian est dselect* Il permet de #
)"oisir la m t"ode d1accs au, pa-uets$ Mettre H Gour la liste des pa-uets disponi.les$ ! lectionner les pa-uets -ue 0ous 0oule9 sur 0otre systme$ Installer et mettre H Gour les pa-uets d sir s$ )on(i/urer n1importe -uel pa-uet non encore con(i/ur $ A sinstaller les lo/iciels non d sir s*

Le menu interacti( de dselect permet l1aGout et la supression de pa-uets* !oye9 trs prudents lors de l1utilisation de ce pro/ramme$ 0ous ris-uerie9 d1endomma/er 0otre systme*
64

5*2 A1t0get
!i 0ous conaisse9 le nom du pa-uet -ue 0ous 0oule9 installer$ utilise9 apt;/et* Ious de0e9 au pr ala.le con(i/urer le (ic"ier sources*list* )e m3me (ic"ier est utilis lors-ue 0ous c"oisisse9 la m t"ode d1accs apt de dselect* Il se trou0e dans 8etc8apt* +,emple de (ic"ier sources*list # cdrom#8cdrom cdrom#8mnt8cdrom (ile#8mnt (ile#8de.ian 'our mettre H Gour l1in(ormation sur les pa-uets disponi.les # > apt;/et update 'our installer un pa-uet # > apt;/et install pa-uet 'our remettre H Gour automati-uement tous les pa-uets install s # > apt;/et up/rade
65

5*3 A1t0cache
'our trou0er le nom d1un pa-uet -ue 0ous 0oule9 installer$ utilise9 apt;cac"e* !es options principales sont #
add ; aGoute un (ic"ier pa-uet au cac"e source s"oJp%/ ; Montre -uel-ues in(ormations / n rales relati0es H un pa-uet stats ; Montre -uel-ues statisti-ues .asi-ues searc" ; Kait une rec"erc"e dans la liste des pa-uets H partir d1une re/e, s"oJ ; Montre un enre/istrement lisi.le du pa-uet depends L Montre les in(ormations de d pendances d1un pa-uet

> apt;cac"e searc" /imp .a.y/imp ; 7n icon editor in 'erl;E% .lac%.oo% ; MENO 7ddress Coo% 7pplet cupsys;dri0er;/impprint ; Mimp;'rint printer dri0ers (or )&'! escputil ; 7 maintenance utility (or +pson !tylus printers (ilm/imp ; 7 motion picture editin/ and retouc"in/ tool

66

8. Utilisation du s#st$ e de gestion des 1a/uets de 9ed :at


Objectif Grer les paquets d'une distribution Linux en utilisant RPM. Cet objectif inclus la capacit installer, mettre jour et enlever des paquets, ainsi qu'obtenir des informations sur les paquets tels que leur statut, version, dpendance, intgrit et signature. Les candidats seront capable de dterminer quels fichiers un paquet contient, et quel paquet contient un fichier spcifique. Fichiers termes et utilitaires cls: /etc/rpmrc /usr/lib/rpm/* rpm grep

6*1 Gestionaire de 1a/uets de 9ed :at


Certaines distributions Linux utilisent RPM (pour "Red hat Package Manager) pour la gestion de la distribution des logiciels qui les composent. RPM tient jour une base de donnes dtaille de tous les logiciels installs sur le systme. Pour installer un paquet, jouez la commande: rpm -i [paquet].rpm Le paquet ne sera install que si toutes les dpendances sont rencontres et qu'aucun conflit avec un autre paquet n'est dtect. Pour mettre un paquet jour, jouez la commande: rpm -U [paquet].rpm Les fichiers de l'ancien paquet seront enlev du systme et remplacs par les nouveaux fichiers. Pour enlever un paquet, jouez la commande: rpm -e [paquet] Le paquet ne sera enlev que si ca ne cre pas de problme de dpendance.
67 68

6.2 Requtes RPM Il est possible d'interroger la base de donne RPM avec l'option -q. $ rpm -q -i apache L'option -i sert obtenir les informations sur les paquets L'option -l sert lister les fichiers contenu dans un paquet. $ rpm -q -l pciutils /sbin/lspci /sbin/setpci . L'option -f sert trouver le paquet contenant le fichier mentionn. $ rpm -q -f /sbin/lspci pciutils-2.1.9-58 -s: liste des fichiers avec informations sur les status. -d: ne liste que les fichiers de documentation. -a: Liste tous les paquets installs. 6.3 Commandes RPM Pour obtenir des informations sur un paquet ou un programme, utilisez rpmlocate. $ rpmlocate ipcs -q -i apache Searching for ipcs in rpm db: util-linux-2.11n-75: /usr/bin/ipcs /usr/share/man/man8/ipcs.8.gz Pour lister tous les paquets installs, utilisez rpmqpack. $ rpmqpack
69

6*4 Installation de "ources


Les (ic"iers 6'M sources ont / n ralement le (ormat pa-uet*src*rpm et peu0ent 3tre install s de la m3me (aPon -ue les .inaires* Les r pertoires H partir des-uels ils seront install s dans 8usr8src8pac%a/es8 sont#
!Q&6)+!# 'our les sources ori/inales* !'+)!# 'our le (ic"ier *spec -ui contrRle le processus de construction du rpm* C&ILA# Eoutes les sources sont construites dans ce r pertoire* 6'M!# QS le pa-uet .inaire sera stoc% * !6'M!# Les sources*

'our installer les sources d1un pa-uet$ Goue9 la commande# > rpm ;i monpa-uet*src*rpm Les (ic"iers sources seront plac s dans 8usr8src8pac%a/es dans les r pertoires !'+) et !Q&6)+!* 'our compiler les sources$ Goue9 la commande# > rpm ;.a 8usr8src8pac%a/es8!'+)!8monpa-uet*spec Le r sultat de la compilation sera plac dans le r pertoire C&ILA*
70

+,emple de -uestions
Quelle fichier contient la liste des partitions qui seront montes au dmarrage? A. /etc/inittab B. /etc/fstab C. /etc/mtab 2. Quelle commande permet de voir toutes les partitions montes? A. mount -a B. df C. show mount D. du -m 3. Quelle variable contient les chemins daccs aux librairies du systme? A. PATH B. LD_LIBRARY_PATH C. LIBPATH D. USRLIB 4. Linux utilise une zone spcifique lorsque la mmoire est sature, cet espace sappelle le .
71

1.

5. A quoi sert la commande ldconfig? A. a prendre en compte les nouvelles librairies dont le chemin est contenu dans le fichier /etc/ld.so.conf B. a configurer les chemins des librairies de systme C. a prparer la compilation dun programme 6. Lorsque vous installez un programme partir de ces sources , ltape finale aprs avoir dcompress les sources, lanc le ./configure et compil le programme est 7. Quelles sont les extensions des fichiers qui sont compresss de diffrentes manires? A. .tar B. .g C. .gz D. .tgz E. .Z 8. Quelles commandes peuvent dcompresser un fichier .tgz? A. gunzip B. guntar C. tar D. gzip 72 E. tar xvf

9. Quelle commande qui permet de dsinstaller lilo ? A. lilo -u B. remove lilo C. uninstall lilo D. lilo r 10. Quelle commande qui permet dattendre 30 seconde avant le dmarrage du systme? A. lilo -t 30 B. lilo -d 30 C. lilo delay 30 D. lilo 30 11. Quelle option avec la commande lilo qui permet le reboot du systme? A. -R B. -S C. -T D. L

73

12. Quelle est la la commande qui permet de dsinstaller le fichier testking du systme Debian ainsi que ses fichiers de configuration? A. dpkg -r testking B. dpkg --remove testking C. dpkg --kill testking D. dpkg -R testking E. dpkg --purge testking 13. Quelle est le rle de la commande suivante : rpm -Uvh file A. le fichier rpm sera vrifier B. le paquetage install sera mise jour dans le fichier file avec une sortie verbose. C. le paquetage install sera mise jour avec le fichier file donnant une sortie verbose et ajoute ltat davancement. D. Erreur 14. Quelle commande affiche le changelog du paquetage install postfix? A. rpm Vc postfix B. rpm qpil postfix C. rpm --changelog postfix D. rpm q --changelog postfix E. rpm qa --changelog postfix 74

)"ap3# Pri1hri/ues & "#st$ es de %ichiers Linux


1 )r er des partitions et des systmes de (ic"iers 2 Maintenir l1int /rit d1un systme de (ic"iers 3 )ontrRler le monta/e et d monta/e d1un systme de (ic"iers 4 M rer les -uotas dis-ue 5 'ermissions d1accs au, (ic"iers 6 'ropri t des (ic"iers 7 Liens r els et sym.oli-ues 8 Erou0er les (ic"iers systme et maTtriser leur positionnement
75

1* *rer des 1artitions et des s#st$ es de %ichiers


Objectifs Configurer les partitions disque et crer des "filesystems" sur des supports(media) tel que les disques durs. Cet objectif inclu en utilisant divers commandes diverses mkfs d'installer les partitions pour des filesystems varis, incluant ext2, ext3, reiserfs, vfat, et xfs. Key files terms and utilities include: fdisk mkfs

76

1*1 Partitions
Un support peut tre divis en plusieurs partitions. Les partitions sont habituellement cres lors de l'installation, mais elles peuvent aussi tre cres avec le programme fdisk ou d'autres utilitaires. Ceci permet de diviser le support en plusieurs partitions avec des systmes de fichiers spars et o des systmes d'oprations peuvent tre installs. Voir diapos 32

1*2 "#st$ es de %ichiers


Les systmes de fichiers permettent d'enregistrer, re lire et de manipuler des donnes sur un support. Les systmes de fichiers maintiennent une structure de donnes interne (meta-donnes) qui gardent les donnes organises et accessibles. La structure de ces meta-donnes caractrise un systme de fichiers. On peut accder un systme de fichiers grce un pilote la structure organise des meta-donnes. Quand Linux dmarre, il lit dans le fichier /etc/fstab la liste des systmes de fichiers qui doivent tre monts et vrifis s'ils sont dans un tat instable. Si une panne de courant survientm Linux se pourra pas dmonter proprement le systme de fichiers et certaines meta-donnes du cache ne seront pas synchronises avec le support. Les meta-donnes peuvent tre corrompues. Quand vous redmarrez le systme, il dtectera cela et fera avec fsck une vrification complte de la consistence de la structure des metadonnes. Cela peut prendre du temps, de quelques minutes quelques heures, selon la taille du support.
78

77

1*3 "#st$ e de %ichiers ;ournalis


Journaliser un systme de fichiers ajoute une nouvelle structure de donnes appele un journal. Ce journal se trouve sur le disque, et avant chaque modification des meta-donnes faite par le pilote, elle est d'abord inscrite dans le journal. Avant chaque modification des meta-donnes, le journal maintient un rapport (log) de la prochaine opration. Maintenant, si une panne de courant survient, il est seulement ncessaire de vrifier le journal. Un systme de fichiers journalis est trs rapide. Il a seulement besoin de lire les rapports et de corriger la dernire opration. La rcupration d'un systme de fichiers ne prend que quelques secondes. Sur un systme de cluster, la journalisation permet de rcuprer rapidement une partition partage d'un node qui s'est arrt.
79

1*4 "#st$ es de %ichiers de Linux


ext2: Ancien systme de fichiers de Linux, trs stable. Efficace pour les fichiers de plus de 2 ou 3 Ko. ext3: Extension journalis pour ext2. Il est possible de passer d'un sytme de fichier ext2 ext3 et vice-versa. Reiserfs: Systme de fichiers journalis. De 8 15 fois plus rapide que ext2 pour manipuler de petits fichiers. XFS: Un systme de fichiers journalis trs puissant avec des quotas et des ACL. Msdos: Systme de fichiers FAT de MS-Windows. NTFS (en lecture seulement): Systme de fichiers journalis de MSWindows SMBFS: Un systme de fichiers permettant de monter les partages Windows ou Samba depuis Linux. NFS: Network File System, systme de fichiers en rseau. ...
80

1*5 Ar+re du s#st$ e de %ichiers


Un systme de fichiers Linux a un rpertoire au sommet de la hirarchie appel root (/) o sont stocks tous les sousrpertoires du systme de fichiers. Les sous-rpertoires peuvent tre une autre partition, un rpertoire distant, ou un rpertoire distant accessible par le protocole NFS. Voir diapos 10 et 11

1*6 *ration d2un s#st$ e de %ichiers


'our cr er un systme de (ic"iers sur une partition$ utilise9 la commande m%(s* m%(s :options< ;t :(stype< de0ice :.loc%si9e< Qptions courantes # ;t :(stype< # Eype de systme de (ic"iers* ;c # I ri(ication de .loc%s d (ectueu, sur le p ri(i ri-ue a0ant la construction du systme de (ic"iers* La partition complte sera e((ac e et or/anis e a0ec le type de systme de (ic"iers demand * Il est possi.le de re0enir en arrire* Les types de systmes de (ic"iers possi.les sont # msdos$ e,t2$ e,t3$ reiser(s$mini,$ ,(s Le paramtre :.loc%si9e< permet d1adapter la taille des .loc%s H 0os .esoins* +,emples # m%(s ;t msdos 8de08(d0 m%(s ;t reiser(s 8de08"dd1 4096
82

81

1*7 *ration de s#st$ es de %ichiers tendu


Pour crer un systme de fichiers tendu (ext2, ext3) sur une partition, utilisez mke2fs. mke2fs [options] device [blocksize] Options courantes : -b : Specifie la taille des blocks -c : Vrification de blocks dfectueux sur le prifirique avant la construction du systme de fichiers. -j : Cration du systme de fichier avec un journal ext3 -L : Dfinie une tiquette pour le volume du systme de fichiers. Avec mke2fs, il est possible de stocker le superblock du journal sur un autre prifrique. Exemples: mkefs -b 2048 /dev/fd0 -L floppy mkfs -V mke2fs 1.26 (3-Feb-2002) Using EXT2FS Library version 1.263
83

1*8 "ur5eillance de l2utilisation du dis/ue


Pour afficher l'utilisation du disque, utilisez du. du [options] [files...] Options courantes : -a : Tous les fichiers, pas seulement les rpertoires. -b : Afficher la taille en octets. -c : Total -h : Format lisible par un tre humain (1K, 20M,...). Exemples: $ du -ch Documents 112k Documents/Cours/LPI101 4.0k Documents/Cours/LPI102 4.0k Documents/Cours/LPI201 4.0k Documents/Cours/LPI202 124k total du -sk ~ # Affiche la taille totale en kilo-octets du -ak ~ | sort -n more # Affiche tous les fichiers et leur taille par ordre croissant. 84

1*9 <s1ace dis/ue du s#st$ e de %ichiers


Un systme de fichiers est compos d'une structure de meta-donnes et d'une liste de blocks. Pour afficher, l'utilisation de l'espace du disque, utilisez df. df [options] [files...] Options courantes : -a: Inclure tous les systmes de fichiers avec 0 blocks. -t: Limiter la liste un type de systme de fichiers. -h: Format lisible par un tre humain (1K, 20M,...). Exemples: $ df -t reiserfs -h F 1k-blocks Used Available Use% Mounted on /dev/hda3 28771528 3121536 25649992 11% / $ df -t ext2 -h Filesystem Size Used Avail Use% Mounted on /dev/hda1 15M 3.8M 10M 27% /boot
85

2* Maintenir l2intgrit d2un s#st$ e de %ichiers


Objectifs Verifier l'intgrit des "filesystems", gerer l'espace libre et les inodes, et reparer des problmes simples sur le systeme de fichier. Cet objectif requier l'utilisation des commandes necessaires pour maintenir filesystem standard, ainsi que les donnes suplementaires associes avec la tenue d'un journal filesystem journaling. Key files terms and utilities include: du df fsck e2fsck mke2fs debugfs dumpe2fs tune2fs

86

2*1 =ri%ication des s#st$ es de %ichiers


To check filesystems consistency, use fsck. fsck [options] -t [fstype] device [fsck-options] Common options: -A: Go through the /etc/fstab file and try to check all file systems. Typically used at boot time from a script. -t fslist: Specify the type of file system to be checked. With -A, only filesystems that match fslist are checked -C: Display completion/progression bar. Common fsck-options: -a: Automatically repair. -r: Interactively repair. Examples: fsck -t msdos /dev/fd0 -a fsck -t reiserfs /dev/hda2 -r
87

Checking extended filesystems To check extended filesystems consistency, use e2fsck. e2fsck [options] device Common options: -b: Use an alternate super block filename. -c: This option makes badblocks program to run and marks all the bad blocks. -f: Force checking even if the filesystem seems clean. -a or -p: Automatically repair. -y: non-interactive mode Examples: e2fsck -ay /dev/fd0 e2fsck -f /dev/hda2

88

2*2 4+oguer les s#st$ es de %ichiers tendus


E"e de.u/(s pro/ram is an interacti0e (ile system de.u//er* It can .e used to e,amine and c"an/e t"e state o( an e,t2 (ile system* de.u/(s de0ice )ommon command# Felp# Mi0e an "elp on all t"e command a0aila.le* !tats# Mi0e a statitstics o( t"e media* !tat (ile# Mi0e a statistic o( t"e (ile on t"e media* lo/dump# Aump t"e Gournal1s media into a (ile +,ample# stat "aut*/i( Inode# 14 Eype# re/ular Mode# 0644 Kla/s# 0,0 Meneration# 67558 &ser# 0 Mroup# 0 !i9e# 3786 Kile 7)L# 0 Airectory 7)L# 0 Lin%s# 1 Cloc%count# 8 Kra/ment# 7ddress# 0 Num.er# 0 !i9e# 0 ctime# 0,3dd(3840 ;; !at No0 23 09#11#44 2002 atime# 0,3dd(3840 ;; !at No0 23 09#11#44 2002 mtime# 0,3dd(3840 ;; !at No0 23 09#11#44 2002 CLQ)N!# 40;35#55;58 EQE7L# 4
89

2*3 A%%icher les in%or ations d2un s#st$ e de %ichiers tendu


To print the super block and blocks group information of an extended filesystem, use dumpe2fs. dumpe2fs [options] device Common command: -b: print the bad blocks of the filesystem. -h: Display only the superblock information. Example: dumpe2fs -h /dev/fd0 dumpe2fs 1.26 (3-Feb-2002) Filesystem volume name: floppy Last mounted on: <not available> Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 184 ...
90

2*4 -1ti iser les s#st$ es de %ichiers tendus


To tune an extended filesystem, use tune2fs. tune2fs [options] device Common command: -i#: Interval between filesystem checks [d|m|w]. -l: List the contents of the filesystem superblock. -L: Set the volume label of the filesystem. Examples: tune2fs -L floppy /dev/fd0 tune2fs -l /dev/fd0 (Same output as dumpe2fs -h /dev/fd0) tune2fs 1.26 (3-Feb-2002) Filesystem volume name: floppy Block count: 1440 Reserved block count: 72 ...
91

3* *ontr>ler le ontage et d ontage d2un s#st$ e de %ichiers


Objectifs Configurer le montage d'un systeme de fichier( mounting of a filesystem). Cet objectif inclu la capacit manuellement monter et dmonter des systemes de fichiers, configurer le filesystem mont au dmarage, et configurer des filesystem amovible tel que lecteur de bande(tape), disquette (floppy), et CD. Key files terms and utilities include: /etc/fstab mount umount

92

3*1 Monter un s#st$ e de %ichiers


The mount command serves to attach the file system found on some device to the big file tree. mount [options] mount [options] [-t vfstype] [-o options] device dir If the device or directory is listed in /etc/fstab you can use the following: mount [options] [-o options [,...]] device | dir Normally only root has the priviledge to mount devices unless it is specified in the /etc/fstab file. Examples: mount # Print all the mouted filesystems. (etc/mtab) mount -a # Mount devices or dirs listed in /etc/fstab. mount -n -o ro /dev/hdc /mnt # Mount all /dev/hdc partition in read only mode without updating /etc/mtab. mount /media/cdrom mount /dev/cdrom # Allow a user to mount the CDROM if the following line is in /etc/fstab: /dev/cdrom /media/cdrom iso9660 ro,user,noauto,unhide mount -o sync /dev/sdb1 /mnt/usb # Sync in realtime
93

3*2 4 onter un s#st$ e de %ichiers


To detach a filesystem from the file tree, use umount. umount [options] umount [options] [-o options [,...]] device | dir A busy filesystem cannot be unmounted.
Open files Working directory of a process.

Examples: umount -a # Unmount devices or dirs listed in /etc/fstab. umount /mnt # Unmount the filesystem attached to /mnt. umount /media/cdrom # Allow a user to unmount the CDROM if the following line is in /etc/fstab: /dev/cdrom /media/cdrom iso9660 ro,user,noauto,unhide
94

3*3 In%or ations sur un s#st$ e de %ichiers


The file /etc/fstab contains all the file sytems and related information that will be used when doing a mount -a. (Boot time) The file /etc/mtab is maintained by the kernel and keeps track on what is or not mounted. The /etc/fstab format is: #device dir destination fs options 1 2 /dev/hda3 / reiserfs defaults 1 2 /dev/hda1 /boot ext2 defaults 1 2 /dev/cdrom /media/cdrom auto ro,noauto,user,exec 0 0 usbdevfs /proc/bus/usb usbdevfs noauto 0 0 /dev/hda2 swap swap pri=42 0 0 Common options: ro: read only, noauto: Don't mount automatically, exec: Can execute binary on the filesystem, suid: Allow to setuser bit. user: Allow a user to mount/unmount it, unhide: hidden file visible. Async: All operations will be done asynchronously. default: rw, suid, dev, exec, auto, nouser, and async. 95

4* Grer les /uotas dis/ue


Objectifs Grer les quotas disque pour les utilisateurs. Cet objectif inclut la mise en place d'un quota disque pour un systme de fichiers pour diter, vrifier et produire des rapports sur les quotas utilisateurs. Key files terms and utilities include: quota edquota repquota quotaon Managing quotas for filesystems Printing quota reports Managing disk quota

96

4*1 ?uotas
On a system, root can manage the useage of disk space per user and per filsystems. The two limits that can be setup are: The soft limit (soft =) specifies the maximum amount of disk usage a quota user is allowed to have. The hard limit (hard =) specifies the absolute limit on the disk usage a quota user can't go beyond it. There is also the possibility to setup a grace period that will enforce the soft limit only after an amount of time specified.

4*2 *rer des /uotas 1our les utilisateurs


1) The keyword usrquota or/and grpquota must be added in file /etc/fstab for the partition interested. /dev/fd0 /home/yann/mnt auto rw,noauto,user,usrquota 0 /dev/hda5 /home ext2 defaults,usrquota,grpquota 1 2 2) Add in each root filesystems the file user.quota or/and group.quota. touch /mnt/aquota.user touch /home/aquota.user touch /home/aquota.group chmod 600 /mnt/aquota.user chmod 600 /home/aquota.user chmod 600 /home/aquota.group Only root can do the quota administration and once the empty files have been created some disk quota can be set such as:
Soft limitation on number of files and inodes. Hard limitation on number of files and inodes if the grace time is set.
97 98

3) Check the setting quotacheck -v mnt quotacheck: Scanning /dev/fd0 [/home/yann/mnt] done quotacheck: Checked 6 directories and 1 files 4) Enable quota on the disk quotaon -av /dev/fd0 [/home/yann/mnt]: user quotas turned on 5) Customize the disk quota limits: $ edquota -u yann Disk quotas for user yann (uid 500): Filesystem locks soft hard inodes soft hard /dev/fd0 15 0 0 4 0 0 $ edquota -g yann $ edquota -t Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/fd0 7days 7days
99

4*3 A%%icher les /uotas


To list quotas for an user or group, use quota. quota [options] [user|group] Common options: -u:Default, print user quotas. -g:Print group quotas for the group of which the user is a member. -q: Print a more terse message, containing only information on filesystems where usage is over quota. Example: quota -u yann Display a quota report To display a quota report, use repquota. repquota [options] [user|group] Common options: -a: Report on all filesystems indicated in /etc/mtab to be read-write with quotas. -g: Report for group. Example: $ repquota /dev/fd0 *** Report for user quotas on device /dev/fd0 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------------------------------------------------------------root -8 0 0 2 0 0 yann -15 0 0 4 0 0 100

5* Per issions d2acc$s aux %ichiers


Objectifs Contrler les accs aux fichiers travers les permissions. Cet objectif inclut les permissions d'accs pour les fichiers ordinaires ou spciaux ainsi que les rpertoires. Est aussi compris les modes d'accs tel que suid, sgid, et le sticky bit, l'utilisation du champ group pour autoriser l'accs de groupes de travail un fichier, le immutable flag, et mode de cration de fichier par dfaut. Unix File Security File and Directory Permissions Default Permissions Changing File Permissions Changing File Owner and Group More Privileges Unix file security The biggest security problem may be you. You own any directory or files you created. You are responsible for accessibility of your files. You decide who can access which files and directories. In your home directory you will be able to grant different levels of permission to yourself, users in your group and the all other users.
101

5*1 Per issions des %ichiers et des r1ertoires


E"e permission o( a (ile or o( a directory can .e 0ieJed Jit" ls ;l* Kile permissions +,amples o( (ile permissions# ls ;l readme ;rJ,rJ;;;; 1 toto users 14 Uul 5 10#00 readme E"is means read$Jrite$ and e,ecution permissions (or user toto$ read and Jrite permissions (or mem.ers o( /roup users* No permissions (or ot"ers* 407605 ls ;l 8etc8"osts ;rJ;r;;r;; 1 root root 14 Uul 5 10#00 8etc8"osts E"is means read and Jrite permissions (or user root$ read permissions (or mem.ers o( /roup root and all ot"ers* 406445
102

5*2 Per issions 1ar d%aut


+,amples o( directory permissions# ls ;ld 8.in drJ,r;,r;, 2 root root 4096 Uul 5 10#00 8.in E"is means read$Jrite$ and e,ecution permissions (or user root$ read and e,ecution permissions (or mem.ers o( /roup root and ot"ers* 407555 ls ;l 8"ome8toto drJ,r;,r;, 10 toto users 4096 Uul 5 1#00 8"ome8toto E"is means read$ Jrite$ and e,ecution permissions (or user toto$ read and e,ecution permissions (or mem.ers o( /roup users and ot"ers* 407555 The default permissions when creating a file are 0666 and when creating a directory are 0777. Most of the systems overwrite this at boot time with the program umask. Generally the mask value is 022. It means the write for group and other will be blocked. To check or change the mask value, do: umask umask 066 Examples for file: default: rw- rw- rw- (0666) umask: 0 2 2 (0022) Block result: rw- r-- r-- (0644) Examples for directory: default: rwx rwx rwx (0777) umask: 0 2 2 (0022) Block result: rwx r-x r-x (0755)
104

103

5*3 *hanger les 1er issions des %ichiers


To change permissions on a file or directory, use chmod. To overwrite the existing permissions, do: chmod 0755 /tmp #rwx for user, rx for group and others To change add or cancel some permissions without overwriting all the existing permissions, do: chmod u+w readme # Add write permission for user chmod +r readme # Add read permission for everybody chmod -r readme # Remove read permission for everybody chmod u+x,g=r readme # Add execution for user and set read for group chmod u=rwx,go=rx readme # Set read write and execution for user, read and execution for group and others To change in recursive mode, use the -R option. chmod -R +x /sbin/*
105

8.Pro1rit des %ichiers


Objectifs Contrler les droits des utilisateurs et et des groupes sur les fichiers. Cet objectif inclut la capacit modifier la proprit utilisateur et groupe sur un fichier aussi bien que le propritaire par defaut de fichiers nouvellement crs. Key files terms and utilities include: chmod chown chgrp

106

6*1 *hanger le 1ro1ritaire et le grou1e d2un %ichier


To change the owner of a file or directory, use chown. chown yann mon_fichier.txt To change the group of a file or directory, use chgrp. chgrp dialout caller The programs gpasswd and yast2 allow you to administrate groups. gpasswd [-A user,...] [-M user,...] group -A: Add users with group administrator privileges. -M: Add members in group. Group administrators can add or delete members of the group gpasswd -d toto users gpasswd -a toto users Group administrators can set or remove the password for the group. gpasswd users gpasswd -r users
107

6*2 Plus de 1ri5il$ges


It is possible to give more privileges to an user when it executes a particular script or program by setting the uid or gid bit of the file. If the bit is set, the process will inherit the permissions of the owner of the file not the permissions of the user. To set the effective uid or gid, use chmod. chmod 2640 [file] # (2) gid is inheritable for group. chmod 4640 [file] # (4) uid is inheritable for user. Example of such program is /bin/passwd. The sticky bit can also be set and can make the program text segment resident in RAM. chmod 1640 [file] (1) The file program stays in RAM.
108

7* Liens rels et s# +oli/ues


Objectifs Crer et grer des liens symboliques ou rels vers un fichier. Cet objectif inclut la capacit crer et identifier des liens, copier des fichiers travers ces liens, et utiliser les liens vers des fichiers dans les tches d'administration systme. Key files terms and utilities include: ln

7*1 Liens
Use link when: You want to create a pathname to a file Set a shorter or fixed pathname to a file To link one file to another, use ln. ln [options] filename linkname ln [options] filename linkdirectory Common options: -f force: clobber existing link -s symbolic link The default links are hard link. On Windows there are called shortcut. A hard link can only be created to an existing file on the same physical device and no visible association can be displayed between a link name and a file name. A symbolic link can be created on a file that doesnt exist yet and can be viewed with the ls command.
109 110

7*2 Lier un %ichier


The symbolic and hard link can be displayed with ls -l. Symbolic link are indicated with an arrow: link_name->real_filename. $ ls -l /dev/midi lrwxrwxrwx 1 root root 6 Jul 4 21:50 /dev/midi -> midi00 Hard link are indicated with the number of link.

8* @rou5er les %ichiers s#st$ e et a7triser leur 1ositionne ent


Objectifs Familiariss avec la Hierarchie Standard du systme de fichiers, incluant la localisation habituelle des fichiers et les classifications de rpertoires. Cet objectif inclut la capacit de

$ ls/readme lrwxrwxrwx 3 yann users 677 Jul 4 21:50 readme When removing a link name, use rm. Only the link will be removed not the linked file.
111

trouver les fichiers et les commandes sur un systeme Linux.

112

+,emple de -uestions
1. Pour formater une partition, vous utilisez A. disk druid B. fdisk C. mkfs D. fsck 2. Quelles commandes permettent de tester un systme de fichiers format en ext3? A. fsck.ext3 B. fsck t ext3 C. tune2fs j D. e3fsck 3. Quelle commande montre loccupation dun rpertoire /usr/xxx? A. du s /usr/xxx B. df h /usr/xxx C. ls iR /usr/xxx 4. La commande permet de vrifier les quotas dun utilisateur.
113

5. La commande locate A. fonctionne comme find mais avec des options diffrentes B. est plus efficace que find car elle utilise un index C. permet de changer la langue par dfaut de linux 6. Pour rechercher un fichier texte dun utilisateur sur votre disque, vous utilisez A. locate B. whereis C. who D. find 6. Comment obtenir de linformation sur une commande et effectuer une recherche par mots-clefs? A. whoami B. whatis C. apropos D. which
114

7. Quels droits devrait avoir le fichier /usr/bin/passwd? A. 4511 B. 6400 C. 4222 8. Quelle commande est lance au dmarrage du systme sur toutes les partitions contenues dans /etc/fstab A. mkfs B. fsck C. chksum D. verify 9. La commande ln s permet A. de crer un lien symbolique B. de mettre jour les librairies du systme C. de faire une sauvegarde dun fichier
115

<xercice1 A A terminer les types et les droits dVaccs de c"a-ue utilisateur pour c"a-ue entr e # L rJ, L L L L L L essai L rJ L r L L r L L resume*t,t d rJ, r L , L L L ac"ats d rJ, r L , L L , .ilan l rJ, rJ L rJ L raccourci p rJ L rJ L rJ L communication <xercice2 A B )hoa i ali B ls 0l ;rJ, ;;; ;;; l med etudiants 120 Qct 10 10 #13 coda/e ;r;, r;; r;; l ali etudiants 210 Qct 10 11 #13 p/cd dr;; ;;; ;;; l ali etudiants 212 Qct 10 12 #30 reser0e ;rJ, r;; r;; l ali etudiants 120 Qct 10 13 #13 resume*t,t ; ;;; ;;; ;;; l ali etudiants 120 Qct 10 14 #13 secret*t,t d;;; ;;; ;;; l ali etudiants 120 Qct 10 15 #13 0ide drJ, ;;, L, l med etudiants 120 Qct 10 16 #13 .ilan
116

Que font les commandes suivantes? Fonctionnent elles ? Si non, pourquoi ? $ cat resume.txt $ more secret.txt $ ./pgcd $ ./codage $ chmod 777 codage $ ls reserve $ cp resume.txt reserve $ ls vide $ cp resume.txt pgcd $ rm pgcd $ ls bilan $ cd bilan Exercice3 : Crer un rpertoire Inter sous votre rpertoire personnel. Quels sont les droits daccs de Inter ? Modifier les permissions daccs sur Inter de faon quil soit accessible pour tout le monde. Utilisez la notation symbolique pour permettre tous les droits au propritaire (concernant le rpertoire inter ) et les refuser tous les autres. Crer un fichier Essai et modifier ses droits de la faon suivante : rw rw r rw wxxx r xr rrr

117

Vrifier ltat aprs chaque modification en utilisant la commande ls -l Crer un rpertoire RepTest et un fichier FileTest dans ce rpertoire. Modifier les droits daccs du rpertoire RepTest selon les droits proposs et essayer aprs chaque modification de passer dans le rpertoire (cd), lancer la commande ls dans RepTest , lire le contenu de FileTest et essayer de crer un rpertoire dans RepTest. Les droits de lutilisateur seront les suivants : rwx rw rx wx Trouver le masque positionn. Modifier le de faon avoir les droits suivants pour les fichiers nouvellement crer : rr Quels seront alors les droits aux rpertoires ? Exercice4 : Crer un rpertoire dont le droit daccs est 611. Crer un fichier dont le droit daccs est 644. Crer un rpertoire dont le droit daccs est 755. Crer un rpertoire dont le droit daccs est r x 118

)"ap4# GNU et co

andes Unix

1* Unix et Linux
Objectifs Unix est l'OS original d'Internet. NFS, TCP/IP, RPC, ... ont t dvelopps sur et pour Unix. Unix est en fait une spcification de ce que doit tre ce genre d'OS. Il en existe plusieurs implmentations. Citons pour l'exemple AIX d'IBM, HP-UX d'HP, Solaris de Sun, ou les *BSD. Linux est une implmentation Unix entirement rcrit par Linus Torvalds et son quipe de dveloppeurs volontaires rpartis sur l'ensemble de la plante et mis en contact grce Internet. Unix comme Linux sont : Portable, multi-utilisateurs, multi-tches, rendu indpendants des priphriques d'entres et de sorties, capables de grer les ressources matrielles, d'une grande performance, scuriss, quip d'une ligne de commande puissante et d'une interface graphique. Linux est compatible avec la norme POSIX et supporte d'autres API standard comme BSD ou SVR4 Linux possde toutes les fonctionalits que l'on peut attendre d'un Unix moderne, dont le multi-tche, multi-utilisateurs, mmoire virtuelle, librairies partages, chargement la demande, shared copy-on-write executables, gestion propre de la mmoire et utilisation de TCP/IP pour le rseau. De plus en plus d'entreprises slectionnent Linux pour ses performances, son cout faible et l'absence de royalties. 120

1 Unix et Linux 2 Travailler en ligne de commande 3 Excution de flux de textes en utilisant des filtres 4 Gestion de base des fichiers 5 Utiliser les streams, pipes, et redirections 6 Crer, surveiller et terminer des processus 7 Modifier les priorits d'excution des processus 8 Expressions rgulires 9 Effectuer les modifications de base des fichiers avec vi

119

1*1 Unix et Linux


Unix est l'OS d'origine d'Internet. Il a t dvelopp en 1970 aux laboratoires A&T Bell Labs. Il a ensuite t distribu gratuitement notament aux gouvernements et aux universits. Divers organismes en supporte diffrentes distributions :
System V BSD SCO

1*2 "e logger et se dlogger


Entrer dans une session est le premier pas pour accder un systme Linux. Vous avez besoin d'un identifiant (ID) et d'un mot de passe pour pouvoir commencer utiliser le systme. L'identifiant "root" est l'identifiant du superutilisateur qui a tous les privillges et n'est normalement assign qu' l'administrateur du systme. Lorsque l'on a russi entrer dans le systme, quelques variables d'environement vont tre initialises et le shell assign au compte correspondant l'identifiant sera lanc. Exemples de variables initialises au loggin: $HOME, $SHELL, $PATH, et d'autres. En modifiant le fichier /etc/login.defs, l'administrateur peut rgler quelques paramtres du logging et les variables pour tous les utilisateurs. Comme par exemple: UID_MIN 500 UID_MAX 60000 UMASK 022 ENV_PATH /usr/local/bin:/usr/bin:/bin Pour sortir, utilisez les commandes exit ou logout.
122

La plupart des Unix sont soumis des licences de copyright. Linux a t diffus pour la premire fois par Linux Torvalds en 1991. Son modle de dveloppement est librr du droit d'auteur. Il adopte la licence GPL cre par Richard Stallman quelques annes auparavant. Richard Stallman est galement l'origine du projet GNU, sans lequel Linux ne servirait pas grand chose. Certaines personnes prfrent ainsi parler de systme GNU/Linux. Linux implmente la plupart des commandes system V, BSD et Unix.
121

1*3 Mot de 1asse


Personne ne peut voir votre mot de passe, mme l'administrateur. Pour changer votre mot de passe d'utilisateur ou de groupe, utilisez passwd. passwd [options] Options courantes: -l, -u : bloque et dbloque un compte. -g [| r]: Utilis pour les groupes. -g dfini un mot de passe pour le groupe, et -r le remplace. -x|n : Nombre de jours maximum et minimum pendant lequel un mot de passe reste valide. En rgle gnrale, un mot de passe doit:
avoir une longueur minimale. ne contenir aucun mot du langage courant. Contenir des caratres alphanumriques Contenir un mlange de lettres majuscules et minuscules.
123

1*4 In%or ation sur les utilisateurs


Une ligne est dfinie dans le fichier /etc/passwd pour chaque compte utilisateur. Le mot de passe crypt est stock dans le fichier /etc/shadow. Le format de /etc/passwd est: Root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/bin/bash daemon:x:2:2:Daemon:/sbin:/bin/bash yann:x:500:100:Yann Forget:/home/yann:/bin/bash Le champs x est l'ancienne localisation pour le mot de passe. Le format de /etc/shadow est: root:IMXweyiV816gg:11996:0:10000:::: bin:!*:8902:0:10000:::: daemon:*:8902:0:10000:::: yann:GoIM8j1S.IuTY:11996:0:99999:7::: L'* pour le mot de passe crypt veux dire qu'aucun mot de passe n'a encore t dfini. Le ! devant le mot de passe crypt veux dire que le compte est bloqu.
124

1*5 In%or ation sur les grou1es


Il y a une ligne dans le fichier /etc/group pour chaque groupe d'utilisateurs. Le mot de passe crypt est stock dans /etc/gshadow. Le format de /etc/group est: root:x:0:root bin:x:1:root,bin,daemon daemon:x:2: video:x:33:yann Le format de /etc/gshadow est: root:*:root:root bin:*:root:root daemon:*:root:root video:*:root:root,yann Les mots de passe pour les groupes ne sont pas souvent implments car il faut passer un membre du groupe pour en changer ...
125

1*6 *o

andes 5aries

Pour obtenir des informations sur une session, jouez la commande id. id [options] [username] Options courantes: -g : N'imprime que l'identifiant du groupe. -u : N'imprime que l'identifiant de l'utilisateur. Exemple: $ id uid=0(root) gid=0(root) groupes=0(root), 1(bin), 14(uucp), 15(shadow),16(dialout) Pour lancer un shell avec un nouvel utilisateur et/ou groupe, jouez la commande su. su [options] [username] Options courantes: -s : Selectionne un autre shell. Exemple: $ su toto passwd:

126

1*7 "hell
Un shell est un interprteur de lignes de commandes qui :
attends les commandes (en affichant ce qu'on appelle l'invite) Les interprte (ceci inclus les redirections d'entre-sortie, les tuyaux, la gnration de nom de fichiers, etc...) les excute excute des langages de script

2. @ra5ailler en ligne de co

ande

IL y a plusieurs shells populaires :


sh: Bourn shell, le shell de scripts standart. csh: Berkley shell, permet le contrle de tches, l'historique des commandes, les alias ... ksh: Korn shell, Les syntaxes du Bourn avec les fonctionalits du Berkley. Bash: Bourne Again shell, libre, shell clone du Korn. Shell traditionel de Linux. Tcsh: Libre, clone du Berkley avec beaucoups d'extensions.

La plupart des shell vous permettent de personaliser son invite et son environement. Pour le bash, la variable du prompt est PS1 Pour le bash, les fichiers utiliss pour la personnalisation de l'environnement sont: .bashrc excut chaque nouvelle session bash. .bash_profile excut la connextion au shell. 127 .bash_logout excut la sortie du shell.

Objectifs Intragir avec les shells et les commandes en utilisant la ligne de commandes. Cet objectif inclus l'introduction de commandes et de squences de commandes valides, la dfinition, la rfrence et l'exportation de variables d'environement, l'utilisation de l'historique et des facilits d'dition, l'invoquation de programmes dans et en dehors du chemin, l'utilisation des commandes de substitution, l'application rcursive des commandes dans l'arbre des rpertoires, et l'utilisation de la commande man pour trouver des informations sur les commandes. fichiers cls, termes et utilitaires : . / source bash echo env exec export man pwd set unset ~/.bash_history ~/.profile 128

2*1 Ligne de co
Les lignes de commandes sont de la forme : commande [options] [arguments] Exemples: pwd ls -ld ou ls -l -d ou ls -d -l rm -r /tmp/toto cat ../readme helpme > save more /etc/passwd /etc/hosts /etc/group find . -name *.[ch] -print date "+day is %a"

ande

2*2 "hells et ,ash


L'ordre de prcdence des diffrentes sources lorsque vous entrez une commande dans le shell sont : Les alias. Les mots cls comme if, for et more. Les Fonctions. Les "Built-ins" comme cd, type, et kill. Les scripts et les programmes excutables prsents dans les chemins lists dans la variable d'environement PATH. Pour connaitre la source exacte d'une commande, utiliser : $ type kill kill is a shell builtin Ce qui est diffrent de : /bin/kill Pour lister l'ensemble des commandes "built-in", utilisez l'aide.

On peut mettre des lignes de commandes dans un fichier, de manire obtenir un script. Pour afficher une chaine de caractres sur la sortie standard, utiliser la commande echo. echo [-n][string|command|$variable] echo my home directory is: $HOME echo I use the $SHELL shell
129

130

/bin/bash peut-tre invoqu l'ouverture d'une session ou explicitement par un utilisateur. A l'ouverture, les fichiers scripts suivants sont utiliss : /etc/profile fichier du systme par dfaut. $HOME/.profile s'il existe. $HOME/.bash_profile s'il existe /etc/bash.bashrc s'il existe $HOME/.bashrc s'il existe Lorsqu'un utilisateur invoque explicitement le shell bash, les fichiers suivants sont excuts : /etc/bash.bashrc s'il existe. $HOME/.bashrc s'il existe; L'historique de tout ce qui est tap se trouve dans le fichier .bash_history. Un script est une liste de commandes et d'oprations excutes dans le contexte du shell. Vous pouvez vous servir de scripts bash pour mettre en place votre environement, vos variables, et plus.
131

2*3 4cou5rir 3+in3+ash


Chaque fois que vous excutez un nouveau programme, une nouvelle tche est cre. Quand le programme se termine, la tche se termine aussi et vous retrouvez le prompt en retour. Vous pouvez faire tourner le programme en arrire plan en ajoutant le caractre "&" apres la commande : monscript & Dans certaines situations, il est galement possible d'utiliser le contexte de la tche bash en utilisant la commande exec [program] C'est utile quand vous ne voulez pas que le programme rende le prompt sa terminaison. Le programme login, par exemple, est un bon exemple de rutilisation de la tche Bash dans laquelle il est dmarr. exec login
132

2.4 Variables du Shell Toutes les variables locales de la session bash peuvent tre vues par la commande set. La variable ne sera vue que par le shell o elle a t dclare. Pour dclarer une variable locale, utiliser simplement : $ MAVARIABLE=SAVALEUR Pour effacer une variable, utiliser : $ unset MAVARIABLE Toutes les variables d'environement peuvent-tre vues par la commande env. Pour dclarer une variable qui sera vue par les autres shells, utilisez export. $ export MAVARIABLE=SAVALEUR ou, $ MAVARIABLE=SAVALEUR $ export MAVARIABLE Quelques varaibles importantes : HOME : rpertoire utilisateur de celui qui s'est connect. PATH : chemin de recherche des commandes.
133

2.5 Man pages Les manuels en ligne dcrivent la majorit des commandes disponibles sur votre systme. $ man mkdir $ man cal Si vous cherchez un mot cl dans toutes les man pages, utiliser l'option -k, ou la commande apropos. $ man -k compress $ apropos compress La variable MANPATH contient les rpertoires o les man pages sont stockes. $ echo $MANPATH /usr/local/man:/usr/share/man:/usr/X11R6/man:/opt/gnome/man

134

3. <xcution de %lux de textes en utilisant des %iltres


Objectifs Etre en mesure d'appliquer des filtres sur les flux texte(text streams). Ces taches incluent l'envoi de fichiers texte et de flux externes(output streams) travers les filtres utilitaire texte (text utility filters) pour modifier ceux-ci, et utiliser les commandes standards UNIX issues des packages textutil GNU. Fichiers, termes et commandes principaux inclus : cat, cut, expand, fmt, head, join, nl, od, paste, pr, sed, sort, split, tac, tail, tr, unexpand, uniq, wc.

3*1 *orres1ondance de cha7ne et ;okers


Le joker est un mcanisme de correspondance de chane pour la gnration de noms de fichiers. L'objectif du joker est d'accrotre la productivit : Localiser les fichiers dont vous ne vous souvenez pas. Localiser les fichiers qui ont quelque chose en commun. Travailler avec un groupe de fichiers plutt qu'individuellement. Le shell interprte ces caractres spciaux : !@#$%^&*(){}[]|\;~'"`? Les caractres utiliss pour les jokers sont : ?*[]~ Si vous utilisez un caractre joker, le shell va essayer de gnrer un fichier. Essayez la commande suivante : echo all files *
135 136

3*2 *aract$res ;oker s1eciaux


W correspond H n1importe -uel caractre 4une et une seule (ois5* X n1importe -uel caractre 49 ro ou plusieurs (ois5 :a.c(/"9< un caractre parmi le Geu indi-u :a;9< &n caractre dans une s rie :Y,;9< 'as dans cette s rie Z 6 pertoire personnel Zutilisateur 6 pertoire personnel de 2utilisateur2 +,emples# W !eulement un caractre :a7<WWW [uatre caractres$ en commenPant par a ou 7* Ztoto c"emin du r pertoire personnel de toto :Y0;9<X Eoute c"aTne -ui ne commence pas par un c"i((re* [ue (ont ces commandesW ls :a;9<:7;\<WW*:u%< ls .i/X ls aWWWa ls WWX
137

2.3 Shell et jokers Une commande shell peut tre une commande simple ou complexe. ls -l [fF]* ls *.c | more ls -l [a-s]* | mail `users` La premire activit du shell est d'interprter les jokers. Seulement le shell interprte les jokers sans guillemets. 2.4 Guillemets et commentaires 2.4.1 Guillemets Utiliser des guillemets pour que le shell n'interprte pas les caractres spciaux et ne transforme plusieurs mots en commandes shell. 'chane' Presque tout dans les guillements est litral : echo 'Il le fait, "Pourquoi ?"' echo 'Parce que "#@&^:-)"' echo '$VAR='Moi "chane" Comme 'chane' mais interprte $, \, ! echo "Que s'est-il pass ?" echo "Je ne sais pas mais lisez cette $REPONSE" L'antislash \ trate le caractre suivant comme litral : echo \$VAR=Moi echo Que s\'est-il pass \? Comment afficher l'antislash ? echo \\
138

2.4.2 Commentaires Vous pouvez ajouter des commentaires sur une ligne de commande ou dans un script. Utiliser le caractre #. Un espace doit immdiatement prcder #. Exemples: echo $HOME # Print my Home directory echo "### PASSED ###" # Only this part is a comment echo The key h#, not g was pressed. Commandes cat, tac: Concatene des fichiers et affiche le rsultat sur la sortie standard. head, tail: Renvoie sur la sortie standard la premire (respectivement) la dernire partie des fichiers passs en argument. nl: Renvoie le nombre de lignes des fichiers passs en argument. wc: Print the number of bytes, words, and lines in files. cut: Remove sections from each line of files. tr: Translate or delete character. expand, unexpand: Convert tabs to spaces and space to tabs. Paste: Merge lines of files. join: Join lines of two files on a common field.
139

uniq: Remove duplicate lines from a sorted file. split: Split a file into pieces. fmt: Simple optimal text formatter. pr: Convert text files for printing. sort: Sort lines of text files. od: Dump files in octal and other formats. Concatenate files To concatenate files, use cat. cat [options] [files...] tac [options] [files...] The results are displayed to the standard output. Common options: -s: never more than one single blank line. -n: number all output line. Examples: cat file # Display file to the stdout. cat chapter* # Display all chapters to stdout. cat -n -s file # Display file with line number with single blank line. To concatenate files in reverse order, use tac. View the begining and the end of a file
140

To view only few lines at the beginning or at the end of a file, use head or tail. head [options] [files...] tail [options] [files...] The results are displayed to the standard output. Common options: -n: number of lines to be displayed. (head and tail) -c: number of bytes to be diplayed (head and tail) -f: append output. (tail) -s #: iteration for new data every # sec. (tail) Examples: head file # Display the first 10 lines of file. head -n 2 file # Display the first 2 lines of file. tail -c 10 file # Display the last 10 bytes of file. tail -f -s 1 /var/log/messages Display the last 10 lines of messages, block and check for new data every second. Numbering file lines To add the line number to a file, use nl. nl [options] [files...] The results are displayed to the standard output. Common options: -i #: incremente line number by #. -b: numbering style: a: number all lines, t: non empy line, n: number no line. -n: numbering format: rz:right justified, ln: left justified.
141

Examples: nl file # Add the line number in each line in the file. nl -b t -n rz file # Add the line number to each non-empty line with zerocompleted format. Counting items in a file To print the number of lines, words and characters of a file, use wc. wc [options] [files...] The results are displayed to the standard output. Common options: -c: the byte size. -m: the number of character. -w: the number of word. -l: the number of line. -L: length of the longest line. Examples: wc *.[ch] # Diplay the number of lines, words, and characters for all files .c or .h. wc -L file # Display the size of the longest line. wc -w file # Display the number of words.

142

Cutting fields in files To remove sections from each line of files, use cut. cut [options] [files...] The results are displayed to the standard output. Common options: -b #: Extract the byte at position #. -f #: Extract the field number #. Examples: cut -b 4 file # Extract and display the 4th byte of each line of file. cut -b 4,7 file # Extract and display the 4th and 7th byte of each line. cut -b -2,4-6, 20- file # Extract character 1 and 2, 4 to 6 and 20 to the end of the line for each line of file. cut -f 1,3 -d: /etc/passwd # Extract the username and ID of each line in /etc/passwd. The default delimiter is TAB but can be specified with -d.

2.5 Characters convesion To translate the stdin to stdout, use tr. tr [options] SET1 SET2 Common options: -d: delete character in SET1. -s: replace sequence of character in SET1 by one. Examples: tr a 'A' # Translate lower a with A tr [A-Z] [a-z] # Translate uppercase to lowercase tr -d # Delete all spaces from file To convert tabs to spaces, use expand and to convert spaces to tabs, use unexpand. expand file unexpand file 2.6 Lines manipulation To paste multiple lines of files, use paste. paste [options] [files...] Common options: -d #: delimiter: Use # for the delimiter. -s: serial: paste one file at the time.
144

143

Examples: paste f1 f2 # Display line of f1 follow by f2. paste -d: file1 file2 # Use ':' for the delimiter. To join multiple lines of files, use join. join file1 file2 To remove duplicated line, use uniq. uniq [options] [files...] Common options: -d: only print duplicated lines. -u: only print unique lines. Examples: uniq -cd file # Display the number of duplicated line. Splitting files To split big files, use split. split [options] file Common options: -l #: split every # lines. -b #: split file in bytes or b for 512 bytes, k for 1Kbytes, m for 1 Mbytes. Examples: split -l 25 file # Split file into 25-line files. split -b 512 file # Split file into 512-byte files. split -b 2b file # Split file into 2*512-byte files.
145

2.7 Formating for printing To format a file, use fmt. fmt [options] [files...] Common options: -w #: maximum line width. Examples: $ fmt -w 35 file # Display 35-character lines width. To format a file for a printer, use pr. pr [options] [files...] Common options: -d: double space. Examples: $ pr -d file # Format file with double-space. Sort lines of text files To sort the lines of the names files, use sort. sort [options] file The results are displayed to the standard output. Common options: -r: Reverse -f: Ignore case -n: Numeric -o: file: Redirect output to file -u: No duplicate records t;: Use ';' as delimiter, rather than tab or space.
146

Examples: sort file -r sort file -ro result Binary file dump To dump a binary file, use od. od [options] file The results are displayed to the standard output and start with an offset address in octal. Common options: -c: each byte as character -x: 2-byte in hex -d: 2-byte in decimal -X: 4-byte in hex. -D: 4-byte in decimal. Examples: $ od -cx /bin/ls 0000000 177 E L F 001 001 001 \0 \0 \0 \0 \0 \0 \0 \0 \0 457f 464c 0101 0001 0000 0000 0000 0000 0000020 002 \0 003 \0 001 \0 \0 \0 224 004 \b 4 \0 \0 \0 0002 0003 0001 0000 9420 0804 0034 0000 0000040 \0 \0 \0 \0 \0 \0 4 \0 \0 006 \0 ( \0 b2b0 0000 0000 0000 0034 0020 0006 0028 0000060 032 \0 031 \0 006 \0 \0 \0 4 \0 \0 \0 4 200 004 \b 001a 0019 0006 0000 0034 0000 8034 0804
147

4* Gestion de +ase des %ichiers


Objectifs Etre en mesure d'utiliser les commandes de base UNIX pou copier, dplacer, et retirer des fichiers et des directory. Ces taches regroupent les oprations avances de gestion de fichier tel que la copie recursive de fichiers multiples, retirer des directory recursivement, et deplacer des fichiers qui rencontre " a wildcard pattern". Cela inclus d'utiliser les spcifications simples et avancs de "wildcard" pour se referer aux fichiers, aussi bien que d'utiliser find pour localiser et agir sur les fichiers en se basant sur le type, la taille, et le temps(time). Key files terms and utilities include: cp, find, mkdir, mv, ls, rm, rmdir, touch file globbing cp: Copy files and directories. ls: List directory contents.

148

4*1 *rer et su11ri er des r1ertoires


To create a directory, use mkdir. mkdir [options] dir Common options: -m mode: set permission mode. Default use umask. -p parent: create parent directory as needed. Examples: mkdir -m 0700 bin mkdir -p bin/system/x86 To delete an empty directory, use rmdir. rmdir [options] dir Common options: -p parent: remove empty subdirectories. Examples: rmdir tmp rmdir -p bin/system/x86
149

4*2 *o1ier des %ichiers et des r1ertoires


Pour copier une fichier en un autre, ou vers un rpertoire, utiliser la commande cp. cp [options] source target Source et target peuvent tre un fichier ou un rpertoire. Common options: -i interactive: prompt to overwrite -r recursive: copy the subdirectories and contents. Use -R for special files. -f force: force the overwriting The default is to silently clobber the target file. Does not alter the source. Examples: cp *.[a-z] /tmp cp readme readme.orig cp ls /bin cp -ri bin/* /bin

150

4.3 Dplacer et renommer des fichiers Pour renommer un fichier, un rpertoire ou pour dplacer un fichier ou un rpertoire vers un autre endroit, utilisez mv. mv [options] source target Source et target peuvent tre un fichier ou un rpertoire. Common options: -i interactive: prompt to overwrite -f force: force the overwriting -v verbose The default is to silently clobber the target file. Does not alter the srcfile. Examples: mv *.[a-z] /tmp mv readme readme.orig mv ls /bin mv -fi bin/* /bin 4.4 Afficher une liste de fichiers et des informations The command to list files in the current directory is ls. ls [options] [filenames] Common options are: -l for a long format ; -F Append a file type character ; -a All files, including hidden; -R Recursive listing of subtree; -d Do not descend into directory The ls is equivalent to the dir command on DOS. Examples of ls output: ls -l /bin/ls -rwxr-xr-x 1 root root 46784 mar 23 2002 /bin/ls
151

4.5 Types de fichiers The long format means: ls -l /etc/hosts #List a long format of the file hosts -rw-rr-- 1 root root 677 Jul 5 22:18 /etc/hosts 4.6 Contenu des fichiers et emplacement Linux/Unix does not distinguish file by filename extension, like Windows. To determine the file content use file. file /etc .bashrc /bin/ls /dev/cdrom /etc: directory .bashrc: ASCII English text /bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped /dev/cdrom: symbolic link to /dev/hdc To determine if a command is a built-in shell command or a program, use type, and use which to find its location
152

4.7 Crer et utiliser des fichiers Les noms de fichiers peuvent tre cr avec les redirections I/O : cat chapter1 chapter2 > book Un diteur comme vi : vi mynewfile Plein d'utilitaires UNIX : cp file newfile Une application netscape La commande touch, qui cre des fichiers vides touch memo Un nom de fichier valide : a maximum 255 caractres doit respecter la casse (majuscules, minuscules,...) peut comporter tous les caractres sauf l'anti-slash '\' Recommended alphanumeric characters as well as plus, minus, and underscore characters.

4.8 Supprimer des fichiers et des rpertoires To remove files or subtree directories, use rm. rm [options] files Files can be a file or a directory. Common options: -i interactive: prompt to for each removal -f force: force the overwriting -r recursive: remove subtree directories and contents There is no unremove or undelete command. Examples: rm *.[a-z] rm readme readme.orig rm ls /bin rm -rfi /bin cd; rm -rf * .*

153

154

4.9 Trouver des fichiers dans le sous-rpertoire d'une arborescence To search for a file in a subtree directory, use find. find [subtrees] [conditions] [actions] The command can take multiple conditions and will search recursively in the subtree. Some possible conditions are: -name [FNG] # Search fo the FNG name -type c # Type of file [bcdfl] -size [+-]# # Has a +- size in blocks (c:bytes,k:kilo) -user [name] # Own by user -atime [+-]# # Accessed days ago +n means not been accessed for the last n days -n means been accessed the last ndays. -mtime [+-]# # Modified days ago -perm nnn # Has permision flags nnn Some possible actions are: -print # Print the pathname -exec cmd {} \; # Execute cmd on the file -ok cmd {} \; # Same as -exec but ask first Examples find . -name '*.[ch]' -print find /var /tmp . -size +20 -print find ~ -type c -name '*sys*' -print find / -type f -size +2c -exec rm -i {} \; find / -atime -3 -print find ~jo ~toto -user chloe -exec mv {} /tmp \;

155

156

4.10 whereis and which To locate a binary, source file, or man pages, use whereis. whereis [options] Common options: -b: Search only for binaries. -m: Search only for manual sections. -s: Search only for sources. Examples: whereis host host: /usr/bin/host /etc/host.conf /usr/share/man/man1/host.1.gz whereis -m host host: /usr/share/man/man1/host.1.gz To locate a file located somewhere defined by the PATH variable, use which. which -a ls /bin/ls The -a will look for all possible matches in PATH, not just for the first one.

5* Utiliser les strea sC 1i1esC et redirections


Objectifs Etre en mesure de rediriger les flux(streams) et de les connecter de faon effectuer avec efficience des donnes texte (process textual data). Ces taches inclues les redirection standard, les erreurs standard, faire un pipe sur sur le resultat d'une commande vers l'entre d'une autre commande(piping), utiliser la sortie d'une commande (output) comme argument d'une autre commande et d'envoyer la sortie la fois vers la sortie standard(stdout) et un fichier. Key files terms and utilities include: tee xargs < << > >> | ``
157 158

5.1 Entre et sortie standard For each command executed in a terminal, there are: a standard input value 0. (default keyboard) a standard output value 1.(default terminal) and a standard output for the errors value 2. (default terminal). Each channel can also be identified by an address: &0 for input, &1 for output, And &2 for errors. Each channel [n] can be redirected. [n]< file: Default value of n is 0 and it reads standard input from file. [n]> file: Default value is 1 and it sends standard output to file. (clobber) [n]>>file: Default value is 1 and it appends standard output to file. <<word: Read standard input until word is reached. `command`: Substitute the command name by the result. Examples: $ pwd > file # out=file in=none error=terminal. cat chap* >book # out=book in=none error=terminal. mv /etc/* . 2>error # out=terminal in=none error=error. echo end of file >> book # out=book in=none error=terminal. set -o noclobber # Shell does not clobber existing files. ls > list 2>&1 # ls and errors are redirected to list. ls 2>&1 > list # Errors are redirected to standard output and ls output is redirected to list. cat `ls /etc/*.conf` > conffile 2>>/tmp/errors 159

Concatenate all the configuration files from /etc dir in conffile and append errors in file /tmp/errors. Redirecting with pipes Pipes are an efficient way to apply multiple commandes concurrently. command1 | command2 The standard output of command1 will be piped to the standard input of command2. The standard error is not piped. Examples: ls -l /dev | more ls -l /etc/*.conf | grep user | grep 500 ls -l /bin | mail `users` To redirect the standard output to a file and to the terminal at the same time, use tee. ls -l /dev | tee file ls -l /etc | tee -a file # Append to the file Building arguments

160

The xargs utility constructs an argument list for a command using standard input. xargs [options] [command] The xargs command creates an argument list for command from standard input. It is typically used with a pipe. Common options: -p: prompt the user before executing each command. Examples: ls f* | xargs cat # Print to standard output the content of all files starting with f. find ~ -name 'proj1*' print | xargs cat Search in the Home directory for files starting with proj1 and send it to the standard input of cat. Use the /dev/null device file to discard output or error messages. Try the following: grep try /etc/* grep try /etc/* 2> /dev/null grep try /etc/* > /dev/null 2> /dev/null
161

6* *rerC sur5eiller et ter iner des 1rocessus


Objectifs Gerer les processus. Cela comprend la comprhension de la faon d'executer un job en tache de fond ou non( foreground and background), de modifier leur statut(background vers foreground et vice versa), demarrer un processus qui s'executera sans connection un terminal et signaler au programme de continuer aprs le logout. Les taches comprennent aussi la gestion des processus actifs, en selectionnant et triant les processus pour visualisation, en envoyant des signaux au processus, en tuant des processus et identifiant et tuant des aplications X qui ne se sont pas arrets alors que la session X est close. Key files terms and utilities include: & bg fg jobs kill nohup ps 162 top

6.1 Crer des processus A running application is a process. Every processes have: A process ID. A parent process ID. A current directory PWD. A file descriptor table. A program which it is executing. Environment variables, inherited from its parent process. Stdin, stdou, and stderr Other Bash is a program that when it is executed becomes a process. Each time you execute a command in a shell a new process is created. Except for the buil-in shell command. They run in the shell context. Use type to check if a command is a built-in shell command. Example type cp ls which type Monitor processes Once the system is up and running from a terminal it is possible to see which processes are running with the ps program. To display a long format of all the processes in the system, do: ps -Al F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY 0 1 0 0 80 0 79 0 112 do_sel 761 ? 0 1524 1222 0 TIME CMD 004 S 044 R 00:00:04 init
163

6.2 Surveiller des processus To monitor the processes in real-time, use top. top 9:20am up 2:48, 4 users, load average: 0.15, 0.13, 0.09 78 processes: 75 sleeping, 3 running, 0 zombie, 0 stopped CPU states: 15.3% user, 0.3% system, 0.0% nice, 84.2% idle Mem: 254896K av, 251204K used, 3692K free, 0K shrd, 27384K buff Swap: 514072K av, 0K used, 514072K free 120488K cached PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 0 40816 39M 17372 0 988 220 0 988 220 0 768 188 0 R R S SW 15.0 16.0 0.3 0.0 0.0 0.3 0.0 0.0 2:59 mozilla-bin 0:00 top 0:04 init 0:00 keventd 1517 rarrigon 0 1727 rarrigon 19 1 2 Root root

20 0 20 0

pts/3 00:00:00 ps

RSS: The total amount of physical memory used by the task. SHARE: The amount of shared memory used by the task. %CPU: The task's share of the CPU time. %MEM: The task's share of the physical memory. Once top is running it is also possible to execute interactive commands: Type N to sort tasks by pid. Type A to sort tasks by age (newest first). Type P to sort tasks by CPU usage. Type M to sort tasks by memory usage. Type k to kill a process (prompted for pid).
164

6.3 Terminer des processus The ps program will display all the processes running and their PID numbers. Once the PID is known, it is possible to send signals to the process. SIGSTOP to stop a process. SIGCONT to continue a stopped process. SIGKILL to kill a process. The program to send a signal to a process is called kill. kill -SIGKILL [pid] kill -63 [pid] kill -l By default a process is started in foreground and it is the only one to receive keyboard input. Use CTRL+Z to suspend it. To start a process in backgroud use the &. bash & xeyes & Job control In a bash process it is possible to start multiple jobs. The command to manipulate jobs are: jobs # List all the active jobs bg %job # Resume job in background fg %job # Resume job in foreground kill %job # Kill background job When bash is terminated all processes that have been started from the session will receive the SIGHUP signal. This will by default terminate the process. To prevent the termination of a process, the program can be started with the nohup command. nohup mydaemon

7* Modi%ier les 1riorits d2excution des 1rocessus


Objectifs Gerer les priorits d'execution des processus. Ces taches incluent de lancer un programme avec une priorit haute ou basse, de dterminer la priorit d'un processus et le changement de priorit d'un processus en cours. Key files terms and utilities include : nice ps renice top

165

166

7*1 Priorits
Pour dmarrer une commande avec une priorit donne, utilisez la commande nice . nice -n +2 [command] nice -n -19 [command] The program nice changes the base time quantum of the scheduler. Les valeurs sont comprises entre -19 (-20), qui correspond a une haute priorit +20 (+19), basse priorit. La valeur par dfaut est 0. Seul le superutilisateur root peut donner une priorit ngative (haute priorit). To modify the priority of a running program, use renice. renice +1 -u root # Change the priority for all root processes. renice +2 -p 193 # Change the priority for PID 193
167

8* <x1ressions rguli$res
Objectifs Manipuler des fichiers et des donnes textes en utilisant les expressions rgulires. Cet objectif inclu la cration simple d'expression rgulires contenant plusieurs lments d'criture. Ceci inclu aussi l'utilisation rgulire d'outils pour raliser des recherches travers un filesystem ou le contenu d'un fichier. Key files terms and utilities include: grep regexp sed

168

8.1 Pattern matching There are two kinds of pattern matching: Wildcards (File Name Generation) Regexp (Regular Expression)

Wildcard characters are mainly applied when they are used in the current directory or subdirectories. When wildcard characters *, ?, [ - ], ~, and ! are used in regexp they no longer generate filenames. Some of the utilities that us regexp are: grep, egrep vi more sed Perl
169

8.2 grep To find text in a file, use grep. grep [options] [string] [files] Best to quote the string to prevent interpretation. Common options: -i: Ignore case -l: List filename only if at least one matches -c: Display only count of matched lines -n: Also display line number -v: Must not match. Examples: grep host /etc/*.conf grep -l '\<mai' /usr/include/*.h grep -n toto /etc/group grep -vc root /etc/passwd grep '^user' /etc/passwd grep '[rR].*' /etc/passwd grep '\<[rR].*' /etc/passwd

170

8.3 sed To apply a command on a stream, use sed. sed [address1][,address2][!]command[options] [files...] The program sed will apply a command from address1 to address2 in a file. The address1 and address2 format are regular expressions. The sed program is a noninteractive editing tool. Examples: sed '1,3s/aa/bb/g' file # Replace in file from line 1 to 3 aa by bb. sed '/here/,$d' file # Delete line from here to the end. sed '/here/d' file # Delete lines with word here. sed '1,/xxx/p' file # Print lines from 1 to xxx. sed '/ll/,/ff/!s/maison/house/g' file # In file replace words maison by house excluding lines from ll to ff.
171

9* <%%ectuer les odi%ications de +ase des %ichiers a5ec 5i


Objectifs Editer des fichiers texte en utilisant vi. Cet objectif inclu la navigation dans VI, les nodes de base VI, insertion, dition, effacement, et recherche de texte. Key files terms and utilities include: vi /, ? h,j,k,l G, H, L i, c, d, dd, p, o, a ZZ, :w!, :q!, :e! :!

172

9.1 vi When using X-Windows, you can use mouse oriented editors such as xedit. In a cross-development environment, users use their favorite editor. On a nonwindowing system, you only need a keyboard editor such as vi. The vi editor on Linux is the same as on any Unix systems. vi has two modes: Command mode: Anything you type will be interpreted as a command Input mode: Anything you type will be inserted into the file Transition from one mode to another Command mode to Input mode: i, I, a, A, o, O keys Input mode to Command mode: ESC key The default starting mode is the Command mode The file configuration .exrc can be created in your HOME directory to setup some vi behavior. set ignorecase # No case-sensitive set tabs=3 # 3 space for tab character Perform basic file editing using vi

Enter Input Mode i before cursor a after cursor o open line below Delete dw delete word dd delete line D delete to end of line x delete char at cursor Move cursor l one space right h one space left j one line down k one line up $ end of line ^ start of line w next word e end of word
174

173

+,ercices
1. Quelle est la commande qui permet dafficher la liste des processus associs votre terminal. Quelle est la commande qui permet dafficher la liste des processus dont vous tes propritaire. Quelle est le rle des options -l et -f. quoi correspondent les colonnes PID et PPID ? Lancez une commande longue en arrire plan. Quel est le comportement du processus associ lorsqu'il reoit les signaux suivants :
1. 2. 3. sigkill (9) sigstop (23) sigcont (25)

)"ap5#' (indo)
1 Installer et )on(i/urer ]Kree86 2 Installer un /estionnaire d1a((ic"a/e 3 Installer ^ con(i/urer un /estionnaire d1en0ironnement /rap"i-ue 4 ] en r seau
176

2.

3. 4. 5. 6.

Utilisez la commande nice pour lancer des commandes ayant une faible priorit. Interprtez la hirarchie des processus qui vous appartiennent. La commande ps | wc compte deux processus en plus de ceux qui existent rellement lorsqu'on lance la commande. Pourquoi ? Donner deux commandes pour reprendre l'excution d'une instruction interrompue par un ^Z.
175

1. Installer et *on%igurer '6reeD8


Objectifs Configurer et installer un serveur X et un serveur de polices. Cet objectif regroupe la vrification du support de la carte video et du moniteur par le serveur X, ainsi que l'adaptation des rglages de X pour la carte et le moniteur. Cela inclut aussi l'installation des polices, d'un serveur de polices et de configurer X pour l'utilisation du serveur de polices (ce qui demande de modifier manuellement /etc/X11/XF86Config dans la section "Files"). Fichiers, termes et commandes principaux inclus : XF86Setup xf86config xvidtune /etc/X11/XF86Config .Xresources X est un systme de fentrage qui fournit les fonctions graphiques de base pour Linux. Conu pour fournir une GUI (Graphic User Interface) n'importe quel autre systme travers un rseau, quel que soit le Systme d'Exploitation. Repose sur le modle client/serveur. X n'est pas un module de l'OS. C'est une application. Le serveur X standard de Linux est Xfree86. Le fichier de traces du fonctionnement de XFree86 se trouve l'adresse /var/log/XFree86.0.log.
177

1.1 Configuration Si vous tapez "XFree86 -configure", cela va analyser votre matriel et gnrer automatiquement un fichier de configuration correspondant votre matriel. Cependant, pour les souris PS/2, on a souvent besoin de modifier ce fichier de configuration manuellement, de ""Device" "/dev/mouse"" jusqu' ""Device" "/dev/psaux"" 1.2 Dmarrer et arrter X Pour dmarrer X, on peut utiliser la commande : xdm Dmarrage automatique de startx lors du dmarrage de Linux au niveau 5 startx Lors de l'authentification au niveau 3 xinit Lorsque le fichier .xinitrc n'existe pas. init Dmarrage de X-Windows au niveau 5 de Linux Pour arrter X, on peut utiliser: <CTRL>+<ALT>+<BACKSPACE> init A un niveau infrieur Linux 5, arrte X-Windows. Configuration de X Pour configurer X sur un systme, on peut utiliser XF86Setup. Le programme va gnrer un fichier de configuration qui sera utilis par le serveur XFree86. Pour rgler l'cran sous X, utilisez Xfine2. Sous X, l'utilisateur peut configurer chaque paramtre convenable de l'affichage graphique. Polices d'affichage l'cran, styles Comportement du dispositif de pointage Couleurs d'affichage Gestionnaire de fentre Le rglage peut tre effectu par stratgie de groupe ou par utilisateur. .xinitrc est le gestionnaire de fentres et de style par dfaut utiliser avec la commande startx. .Xdefaults est utilis pour configurer les paramtres du pointeur, les couleurs, polices, etc...
178

2* Installer un gestionnaire d2a%%ichage


Objectifs Installer et configurer un gestionnaire d'affichage. Cet objectif inclut le dmarrage ou l'arrt du gestionnaire d'affichage et le changement des prfrences d'affichage, ainsi que le changement de le nombre de couleurs (pixel/bit) par dfaut du gestionnaire d'affichage. Cela inclut aussi la configuration du gestionnaire d'affichage pour une utilisation sur un terminal X. Cet objectif couvre les gestionnaires d'affichage XDM (X Display Manager), GDM (Gnome Display Manager) et KDM (KDE Display Manager). Fichiers, termes et commandes principaux inclus : /etc/inittab /etc/X11/xdm/* /etc/X11/kdm/* /etc/X11/gdm/*
179

X a besoin de gestionnaires de fentres pour manipuler toutes les applications graphiques. Dplacer, redimensionner. Ouvrir et fermer. Agrandir, rduire, mettre en icne. Barres de titres L'apparence des fentres est inclus dans le gestionnaire de fentres.shouldn't this be in Widget sets not WMs? Fournir des bureaux virtuels. Les distributions Linux disposent d'un grand nombre de gestionnaire de fentres: Fvwm2 Motif-like look, highly customizable WindowMaker Next Step look, fast and lean Wm2 Ultra lean Olwm Open look (Sun) The desktops bring on top of X Window managers more facilities: KDE: based on Qt, current at the top of market GNOME: The "GNU" Desktop, based on Gtk+-v2

180

3* Installer & con%igurer un gestionnaire d2en5ironne ent gra1hi/ue


Objectifs Paramtrer le bureau et le gestionnaire de fentres globalement pour dmontrer leur matrise des procdures de configuration des menus du gestionnaire de fentres et/ou des menus panel du bureau (desktop panel). Cet objectif inclut la slection et la configuration du terminal X choisi (xterm, rxvt, aterm, etc.), la vrification et le respect des dpendances des librairies ncessaires aux applications X, l'exportation d'un affichage X vers une station de travail externe. Fichiers, termes et commandes principaux inclus : .xinitrc .Xdefaults xhost variable d'environnement DISPLAY
181

4* ' en rseau
Objectifs X travaille en environnement client/serveur, o l'application est le client et le serveur est l'application qui sait de quelle manire fournir les services. Dans un systme autonome, les deux applications sont situes sur la mme machine. Dans un systme en rseau, l'utilisateur peut executer une application X installe sur une machine distante et effectuer l'affichage sur un ordinateur local. L'avantage de disposer d'un serveur X d'applications est : L'installation d'applications locales n'est pas ncessaire. Le systme local n'a pas besoin d'tre performant. L'accs aux donnes ne se fait pas localement. 4.1 X en rseau Export d'une application simple : Pour effectuer cette manipulation, faire : startx sur le serveur. xhost + Autoriser l'absence d'authentification sur le serveur. telnet serveur partir du client et paramtrer la variable DISPLAY pour le client. Export DISPLAY=clienthost:0.0 Export du gestionnaire de fentres : Pour effectuer cette manipulation, faire : Activer xdmcp avec gdmsetup sur le serveur Utiliser Xnest pour connecter le client au serveur en diffusion
182

+,emple de -uestions
1. A quoi sert un ficier Xressources? A. contrler lapparence des clients X; B. affecter des ressources pour le serveur X C. dfinir les droits daccs au serveur X en rseau 2. Pour dmarrer un serveur X ? A. vous utiliser un logiciel XDM B. vous lancez le script startx C. vous utiliser la commande Xressource D. vous utiliser la commande Xserved 3. Dans la liste suivante, quels sont les window manager A. WindowMaker B. KDM C. Xwindow D. twm
183

4. Que contient le fichier XF86Config? A. La rsolution de lcran B. Le(s) chemin(s) pour trouver les polices de caractre. C. La taille du moniteur D. Le nom du Window Manager lancer 5. Quel est lentre ddu fichier XF86Config qui spcifie quon est en machine locale? Choisi 2. A. unix/:-1 B. unix/:7100 C. tcp/:45 D. udp/:80 E. font/:-1 6. Quel est le fichier qui est utilis pour la configuration du XDM daemon? A. xdm-config B. xdm.conf C. xdmcfg D. xdaemon.conf E. None of the above
184

1. Introduction

Partie2: La pro rammatio! S"e##


Chapitre1: Dfinition et utilisation de variable
1. Introduction 2. Les scripts Shell 3. Les variables
Chapitre2: Dfinition dune expression

La pro rammatio! s"e##


Un script bash est un fichier de type texte contenant une suite de commande shell, excutable par linterprteur comme une commande unique.

1. La procdure 2. La commande test 3. La commande expr


Chapitre3: Structure de contrle

Un script peut tre lanc en ligne de commande, comme dans un autre script. Mais il sagit bien plus quun simple enchanement de commande: on peut dfinir des variables et utiliser des structures de contrle, ce qui lui confre le statut de langage de programmation interprt et complet.
185 186

1. La structure conditionnelle 2. Le choix multiples 3. Les structures itratives 4. La fonction

1. Introduction

2. Les scripts Shell

$suite%
Le langage bash gre notamment:
La gestion des entres-sorties et de leur redirection Des variables dfinies par le programmeur et des variables systmes Le passage de paramtres Des structures conditionnelles et itratives Des fonctions internes

Saisie du script
Utiliser vi de prfrence Les lignes commenant par le caractre dise # sont des commentaires. Le script doit dbuter par lindication de son interprteur crite sur la premire ligne: #!/bin/bash En fait si le shell par dfaut est bash, cette ligne est inutile.

187

188

2. Les scripts Shell

3. Les variables

Saisie du script
Exemple:
#!/bin/bash #script bonjour #affiche un salut lutilisateur qui la lanc #la variable denvironnement $USER contient le nom de login echo ----Bonjour $USER ----#loption n empche le passage la ligne #le ; sert de sparateur des commandes sur la ligne echo n Nous sommes le; date #recherche de $USER en dbut de ligne dans le fichier passwd #puis extraction de luid au 3ime champ, et affichage echo Ton numro dutilisateur est (grep ^$USER /etc/passwd | cut -d: -f3)

3.1& 3.1& Les 'aria(#es prd)i!ies


Voici les principales variables utilises par le shell
Variable HOME PATH TERM PS1 PS2 Signification Rpertoire personnel Rpertoire de recherche des commandes Nom du type de terminal utilis La valeur de la premire prompt La valeur de la deuxime prompt

189

190

2. Les scripts Shell

3. Les variables

Excution du script
Il est indispensable que le fichier script ait la permission x (soit excutable). Lui accorder cette permission pour tous ses utilisateurs avec chmod: Chmod a+x bonjour Pour lancer lexcution du script, taper ./bonjour, ./ indiquant le chemin, ici le rpertoire courant. Ou bien indiquer le chemin absolu partir de la racine. Ceci dans le cas o le rpertoire contenant le script nest pas list dans le PATH

3.2& 3.2& L*a))ectatio!


Il sagit de donner une valeur une variable. Le nom de la variable est form dune chane de caractres ne contenant pas de caractres spciaux. Lusage des majuscule est plutt rserv pour les variables systmes; na pas utiliser de caractres spciaux, en se limitant aux lettre, chiffres et caractres _ et . Laffectation reprsente un mot pour le shell, le caractre daffectation est le = Ne pas mettre de sparateur entre le = et le nom et la valeur Le shell associe du texte au nom de la variable, sans prsumer de sa signification.

191

192

3.2- Laffectation

3. Les variables

Par exemple, i=2, i=0002, i=deux nont pas la moindre signification de valeur pour le shell, et sont donc pour lui des affectations diffrentes.

3.3& 3.3& Le co!te!u


Il sagit de la rcupration du contenu de la variable Pour accder au contenu dune variable, on utilise le caractre $ devant le nom de la variable.

Le shell a donc besoin dutilitaires pour manipuler les nombres (tester, additionner) ainsi que les chanes de caractres: Les variables shell ne sont pas types.

Cest le shell qui fait la substitution. $variable=valeur $echo variable variable

$variable=valeur $a=truc $monrep=/usr/c1 $d=date $j=mot1 mot2 $


193

$echo $variable valeur $ Le shell interprte dabord les variables, puis la commande quil trouve en premire position sur la ligne.

194

3. Les variables

3. Les variables

3.+& 3.+& ,aria(#e !o! d)i!ie


Une variable non dfinie a une valeur nulle. Cela permet dutiliser une variable alors quon ne la jamais affecte. $echo rien Rien $echo $rien $echo A$rienA A $echo A${rien}A AA $ Pour bien limiter le nom de la variable de son contenu, on lencadre entre accolade ({}).

---3..& & /'a#uatio! de 'aria(#es


Il nest pas possible de rvaluer les variables utilisateurs. Cest--dire que le shell ne change la valeur dune variable QUE lors de laffectation. $A=1 $B=A $echo $B A $B=$A $echo $B 1 $A=2 $echo $B 1 $ On affecte toujours une variable une chane de caractre, soit le nom de la variable (B=A), soit son contenu (B=$A).
196

195

3. Les variables

3. Les variables

3.0& 3.0& I!terprtatio! des mta& mta&caractres


Les mta-caractres du shell sont substitues parmi les noms de fichiers du rpertoire courant. Linterprtation des mta-caratres est faite aprs linterprtation des variables. $ls -x f* f1 f2 fic1 fic2 fic3 fichier $t=fic $ls -x $t* fic1 fic2 fic3 fichier $ On liste les fichiers commenant par f. aprs affectation de t, on substitue $t* par linterprtation de $t puis de *. Soit fic*, donc tous les fichiers commenant par fic. $l=ls $ $l -x $t? fic1 fic2 fic3 $
197

3.1& 3.1& Su(stitutio! de comma!de


Il est possible de faire excuter une commande et den rcuprer le rsultat dans une variable. Cela se fait en encadrant une commande par des quotes inverses ou accent grave ``. Dans ce cas, on substitue la commande par sa sortie standard; cest--dire que lon excute la commande se trouvant entre ``, puis le shell interprte la ligne de commande. $echo la date est: `date` la date est: Wed May 18 15:56:30 MET 1994 $logname c1 $grep `logname` /etc/passwd c1:x:106:104:Eleve 1:/usr/c1:/bin/ksh $date Wed May 18 15:57:30 MET 1994 $ `date` ksh: Wed command not found $
198

3.7- Substitution de commande

Caractres spciau2 se trou'a!t da!s #es scripts


# Commentaire:
Les lignes commenant avec # ( lexcution de #!) sont des commentaires. # Cette ligne est un commentaire. Les commentaires peuvent apparatre en fin de ligne. $echo Un commentaire va suivre. # Un commentaire ici. Les commentaires peuvent aussi suivre un blanc au dbut dune ligne. # Une tabulation prcde ce commentaire. -> Un commentaire ne peut pas tre suivi dune commande sur la mme ligne. Il nexiste pas de faon de terminer le commentaire, pour que le vrai code commence dans la mme ligne. Utilisez une nouvelle ligne pour la commande suivante

Une commande excuter entre (guillemet inverse): Ne doit pas faire de lecture au clavier (ex: ni vi, ni pg) Sexcute dans un sous-shell, donc peut tre compose de plusieurs commandes spares par des ; voire mme sexcuter dans un autre rpertoire. $var= `cd /etc ; grep fun passwd` $echo $var fun:x:208:55:Guy Thienot:/tech/u2/fun:/bin/ksh $ La substitution de commande permet lexcution dune commande ou mme dun fichier de commandes.

199

200

# Commentaire:

Caractres spciaux se trouvant dans les scripts

; [point-virgule]

/emarque:
Bien sr, un # chapp dans une instruction echo ne commence pas un commentaire. De la mme manire, un # apparat dans certaines constructions de substitution de paramtres et dans les expressions numriques constantes.

Sparateur de commande : Permet de placer deux commandes ou plus sur la mme ligne. echo bonjour; echo ici Notez que le ; a parfois besoin dtre chapp

;; [double point-virgule]
Terminateur dans une slection par cas (case). On va le voir plus prcisment dans la partie choix multiple.

32emp#es:
echo "Le # ici ne commence pas un commentaire. echo Le # ici ne commence pas un commentaire. echo Le \# ici ne commence pas un commentaire. echo Le # ici commence un commentaire. echo ${PATH#*:} # substitue de paramtres, pas un commentaire. echo $((2#101011)) # conversion de base, pas un commentaire.

. [point] Commande point : Equivalent source. Cest une commande intgre de Bash. [guillemet double]
CHANE empche linterprtation de la plupart des caractres spciaux prsents dans

Les caractres standard de guillemet et d chappement !" , ,#$ chappent le #.

la CHANE.
201 202

Caractres spciaux se trouvant dans les scripts

**Caractres spciaux se trouvant dans les scripts

[guillemet simple]
CHANE empche linterprtation de tous les caractres spciaux prsents dans la CHANE. Ces guillemets sont plus puissant que .

/ [barre oblique]. Spare les composants dun nom de fichier (comme dans /home/bozo/projets). Cest aussi loprateur arithmtique de division. `[guillemet invers]. `commande` rend la sortie de commande disponible pour initialiser une variable. Connu sous le nom de guillemets inverss ou bien quottes. : [deux point]. Il sagit de lquivalent shell dun NOP (no operation). Elle peut tre considre comme un synonyme pour la commande intgre true. La commande : est elle-mme une commande intgre Bash, et son tat de sortie est vrai (0). : echo $? # 0
203 204

, [virgule].
relie une suite doprations arithmtiques. Toutes sont values, mais seul le rsultat de la dernire est renvoy. let t2 = ((a = 9, 15/3)) # Initialise a et calcule t2.

\ [anti-slash]
\X chappe le caractre X. Cela a pour effet de mettre X entre guillemet, et est quivalent X. Le \ peut tre utilis pour mettre et entre guillemets, pour pouvoir les crire sous forme littrale.

Caractres spciaux se trouvant dans les scripts

Caractres spciaux se trouvant dans les scripts

! [point dexclamation].
Il inverse ltat de sortie de la commande la quelle il est appliqu. Il inverse aussi la conclusion dun oprateur de test. Cela peut, par exemple, changer le sens dun gal (=) en un diffrent (!=). Loprateur ! Est un mot-cl Bash.
Dans un autre contexte, le ! Apparat aussi dans les rfrences indirectes de variable. Dans un contexte encore diffrent, partir de la ligne de commande, le ! Appelle le mcanisme dhistorique de Bash.

? [point dinterrogation].
A lintrieur de certaines expressions, le ? Indique un test pour une condition. Dans une construction entre parenthses doubles, ? Sert doprateur trois arguments dans le style du C. Dans une expression de substitution de paramtres, le ? Teste si une variable a t initialise. ? Joker (caractre irrgulier). Le caractre ? Sert de joker pour un seul caractre pour lexpansion dun nom de fichier dans un remplacement, et galement reprsente un caractre dans une expression rgulire tendue.

$ [dollar].
var1=5 var2=23skdoo echo $var1 # 5 echo $var2 # 23skidoo Un $ prfixant un nom de variable donne la valeur que contient cette variable
205 206

* [ltoile].
Dans le contexte des oprations arithmtique, * est une multiplication. La double astrisque ** est loprateur exponentiel.

Caractres spciaux se trouvant dans les scripts

Caractres spciaux se trouvant dans les scripts

!$ %parenthses&.
(a=bonjour; echo $a) Une liste de commandes entre parenthses lance un sous shell. Les variables comprises dans ces parenthses, lintrieur du sous-shell, ne sont pas visibles par le reste du script. Le processus parent, le script, ne peut pas lire les variables cres dans le processus fils, le sous-shell. a=123 (a=123;) echo a = $a # a = 123 # a lintrieur des parenthses sagit comme une variable locale.

|| [double barre]
Oprateur OU logique: Dans une structure de test, loprateur || a comme valeur de retour 0 (succs) si lun des deux est vrai.

&& [double et]


Oprateur ET logique: Dans une structure de test, loprateur && renvoie 0 (succs) si et seulement si les deux conditions sont vraies.

- [moins]
Le signe moins est une opration arithmtique.

= [gal].
Oprateur daffectation. a=28 echo $a # 28

'nitialisation de tableaux.
Array=(element1 element2 element3 ) [ ] lment dun tableau. Accols au nom dun tableau, les crochets indiquent lindice dun lment. Tableau[]=slot_1 echo ${Tableau[1]}
207

+ [Plus].
Oprateur arithmtique daddition

% [Modulo].
Oprateur arithmtique modulo (reste dune division entire).

~ [tilde]
Le ~ correspond la variable interne $HOME : Rpertoire de lutilisateur.
208

3. Les variables

3.8- Ordre dinterprtation

3.4& 3.4& 5rdre d*i!terprtatio!


Voici lordre et ce quinterprte le shell: 1. 2. 3. 4. 5. gestion des redirections (<, >, >>, <<, |) Interprtation des dans un sous-shell (substitution de commande) Interprtation des variables Interprtation des mta caractres Affectation ou excution du premier mot rencontr sur la ligne avec comme arguments les substitutions prcdentes $j=`date` $d=date $echo $j Wed May 18 16:28:16 MET 1994
209

$echo $d date $ j vaut la date au moment de laffectation. d vaut la chane de caractres date $ $d Wed May 18 16:39:11 MET 1994 $echo $j Wed May 18 16:28:16 MET 1994 $ Le contenu de la variable sera substitu puis on excute la commande. Dans le premier cas on excute date, alors que dans le second on affiche la date au moment de laffectation dans j (valeur statique).

210

3. Les variables

3.9- laffectation interactive

3.6& 3.6& #*a))ectatio! i!teracti'e


La commande interne read permet dassigner une valeur une variable, partir dune lecture sur lentre standard (par dfaut). La commande se met en attente du clavier et affecte les valeurs que vous tapez aux noms de variables qui lui sont passs en arguments. Si plus de valeurs sont entres quil ny a darguments, alors la dernire variable vaudra tous les derniers mots. Sil y a moins de valeurs entres que de variables, celles non affectes sont mises vide.

32emp#es: $read a 33 $echo $a 33 $read b c d voici trois mots $echo $d $c $b mots trois voici $read a b c et voici quatre mots

$echo $a et $echo $b voici $echo $c quatre mots $read d e f blups $echo $d blups $echo $e $echo $f
212

211

Chapitre1: Dfinition et utilisation de variable

1. Procdure

(. )rocdure
Une procdure (shell script fichier de commandes shell) est un fichier contenant une suite de lignes excutables par linterprteur de commande shell.

1.1& 1.1& 32cutio! d*u!e procdure


Il y a plusieurs manires dexcuter une procdure shell: Utiliser la commande interne ., qui permet de lire et dexcuter les commandes se trouvant dans le fichier procdure, sans crer de sous-processus.

32emp#e:
32emp#e:
$cat p1 # ceci est une procdure date who tty $
$ .p1 wed Jul 6 11:07:45 MET 1994 philip term/c0 Jul 6 10:30 fun term/c5 Jul 6 09:14 c1 term/c4 Jul 6 09:14 /dev/term/c4 $ Dans ce cas, aucun processus nest cr pour lire et lancer ces commandes, mais de toutes faons trois processus sont crs par ce script.
213 214

1.1- Excution dune procdure Lancer le programme shell en redirigeant son entre standard sur le fichier contenant la procdure.ainsi le shell lit les commandes sur ce fichier au lieu de les lire sur le terminal.

1.1- Excution dune procdure Modifier les droits du fichier p1, pour le rendre excutable pour lutilisateur, puis lancer la procdure comme sil sagissait dune commande standard.

32emp#e:
$ chmod u+rx p1 $ p1 wed Jul 6 11:07:45 MET 1994 philip term/c0 Jul 6 10:30 fun term/c5 Jul 6 09:14 c1 term/c4 Jul 6 09:14 /dev/term/c4 $ Dans ce cas, le systme se rend compte quil sagit dun fichier excutable particulier, en effet, celui-ci ne contient pas de code machine, mais des lignes de texte. Il suppose quil sagit dune procdure shell, donc cre un processus, qui excute le programme shell, et les commandes sont lues depuis ce fichier.
216

32emp#e:
$bash p1 wed Jul 6 11:07:45 MET 1994 philip term/c0 Jul 6 10:30 fun term/c5 Jul 6 09:14 c1 term/c4 Jul 6 09:14 /dev/term/c4 $ Dans ce cas, un sous processus est cr. Le pre est mis en attente et ne sera rveill que lorsque le sous-processus sera termin.

215

1. Procdure

1.2- Paramtres positionnels

1.2& 1.2& Paramtres positio!!e#s


Si une procdure est excutable, on peut lappeler comme les autres commandes externes, cest--dire mettre le nom de cette procdure au dbut de ligne et la faire suivre darguments: $p1 arg1 arg2 arg3 La procdure trouve les arguments dappel dans des pseudo-variables, appeles paramtres positionnels, dont les noms sont $0, $1, $2 , $9. En fait ce ne sont que des valeurs, en effet un nom de variable ne peut pas commencer par un chiffre.

La procdure ne peut jamais initialiser le contenu de ces variables, mais peut le consulter en utilisant la syntaxe $0, $1, $2,$9. Chaque paramtre positionnel contient un mot de la ligne de commande.

32emp#e:
> '1 ] D \

>0 '1 >1 ] D >2

\ >3

7tte!tio!:
Si la ligne contient des mta-caractres, le shell les substitue avant deffectuer le dcoupage en mots, et daffecter ces mots aux paramtres positionnels.
217 218

1. Procdure

Chapitre1: Dfinition et utilisation de variable

1.3& 1.3& ,aria(#e automatiques


Lorsquune procdure commence, dautres variables spciales, en plus des paramtres positionnels, sont initialises. Celles-ci peuvent tre consultes, mais pas modifies. On les appelle les variables automatiques ou prdfinies. Nom de la variable Valeur de la variable
_ (underscore) # * @ ? $ ! PPID PWD RANDOM SECONDS Le dernier mot de la dernire commande excute Le nombre de variables de position dfinies La liste des variables de position vu comme une seule variable La liste des variables de position Le code de retour du dernier processus termin Le numro du processus courant Le numro du dernier processus lanc en arrire plan Le numro du processus pre La rfrence absolue du rpertoire de travail Un nombre alatoire Le nombre de secondes coules depuis le lancement du processus shell
219

2. La comma!de test
8!ra#its
Comme son nom lindique, elle sert vrifier des conditions. Ces conditions portent sur des fichiers (le plus souvent), ou des chanes ou une expression numrique. Cette commande courante sert donc prendre des (bonnes) dcisions, do son utilisation comme condition dans les structures conditionnelles if .. then .. else, en quelque sorte la place de variables boolennes qui nexistent pas.

Sy!ta2e
Test expression [expression]

,a#eur de retour
La commande test, retourne 0 si la condition est considre comme vraie, une valeur diffrentes de 0 sinon pour signifier quelle est fausse.
220

2. La commande test

2. La commande test

9ester u! )ic"ier
Elle admet 2 syntaxes (la seconde est la plus utilise): test option fichier [ option fichier ]

9ester u!e c"ai!e


[ option chane ]

5ptio! si !i)icati):
-z | -n = | != la chaine est vide / nest pas vide les chaines compares sont identiques | diffrentes.

32emp#es des optio!s:


-e -f -d -r | -w | -x -s il existe cest un fichier normal cest un rpertoire il est lisible modifiable excutable il nest pas vide

32emp#e:
[-n " toto"] echo $? Affiche la valeur renvoye 0
221 222

32emp#es:
[-w fichier] le fichier est il modifiable? [-r /etc/passwd] X peut-il lire le fichier /etc/passwd?

2. La commande test

2. La commande test

9ester u! !om(re
[ nb1 option nb2 ] Il y a dabord un transtypage automatique de la chane de caractres en nombre

5pratio!s da!s u!e comma!de test


[expr1 a expr2] (and) 0 si les 2 expr sont vraies [expr1 o expr2] (or) 0 si lune des 2 expr est vraie [!expr1] ngation

5ptio! Si !i)icati)
-eq | -ne -lt | -gt -le | -ge gal | diffrent strict.inf | strict.sup inf ou gal | sup ou gal

32emp#e: 32emp#es:
a=15; [" $a " lt 15]; echo $? note=9; [$note lt 8 o $note ge 10] && echo tu nest pas convoqu(e) loral"

223

224

Chapitre1: Dfinition et utilisation de variable

3.La commande expr

3.La comma!de e2pr


:)i!itio!:
valuateur dexpression: concatne et value les arguments suivant lopration souhaite (les arguments doivent tre spars par des espaces). Les oprations peuvent tre arithmtiques, comparatives, chane de caractres ou logiques. expr 3+5 expr 5 % 3 expr 5 \* 3 #renvoie 8 #renvoie 2 #renvoie 15

#Dmonstration des possibilits de expr # Oprations arithmtiques


echo a=`expr 5 + 3` echo 5 + 3 = $a a=`expr $a +1` echo a + 1 = $a echo (incrmentation dune variable de la mme manire que let y=y+1 et y=$(($y+1)).) a=expr 5 % 3 #modulo echo 5 mod 3 = $a

# Oprations Logiques retourne 1 si vrai, 0 si faux,


echo x=24 y=25 b=expr $x = $y # Test dgalit echo b = $b # 0 [ $x ne $y ]
226

Loprateur de multiplication doit tre chapp lorsquil est utilis dans une expression arithmtique avec expr.
225

3.La commande expr

# Oprateur de chane de caractres


echo Oprateur de chanes de caractres echo a=1234zipper43231 echo Voici $a

La di))re!ce e!tre ; et <


# la commande VAR=toto stocke la chane de caractres toto dans la # variable VAR VAR=toto echo Le contenu de la variable VAR est $VAR # la commande LS1=$(ls) stocke la chane $(ls): LS1=$(ls) echo Le contenu de la variable LS1est ${LS1}. # la commande LS2=$(ls) stocke le rsultat de la commande ls : LS2= $(ls) echoLe contenu de la variable LS2 est ${LS2}. #Noter bien la diffrence entre .. et ..

# length: longueur de la chane


b=expr length $a echo la taille de $a est $b

# Index: position du premier caractre dans une sous-chaine qui correspond un # caractre dans la chaine
b=expr index $a 23 echo la position du premier 23 dans $a est $b

# substr: extrait une sous-chaine, en spcifiant la position de dpart et la taille


b=expr substr $a 2 6

227

228

Chapitre3: Structure de contrle

1. Structures conditionnelles

(. La structures conditionnelles
Syntaxe: if condition then instruction(s) fi Syntaxe: if condition then instruction(s) else instruction(s) fi

if suite-de-conditions then # squence excute si suite-de-conditions rend une # valeur 0

Syntaxe: if condition then instruction(s) elif condition then instruction(s) fi

else # squence excute sinon bloc-instruction2 fi Attention: ! Si bien est plac sur la 1re ligne, sparer avec un ; if condition ; then

229

230

1. Structures conditionnelles Lexemple suivant teste lexistence dun fichier if [-e /etc/shadow"] then echo fichier existe else echo Erreur fichier inexistant fi Pour vrifier que 2 arguments ont t passs au script if [$# -ne 2] then echo il faut 2 arguments vous en avez $# fi Test numrique permet dafficher si largument pass en paramtre est compris entre 5 et 10: if [$1 gt 5 a $1 lt 10] then echo 5<$1<10 fi

1. Structures conditionnelles Test numrique permet dafficher si largument pass en paramtre est un nombre positif, ngatif ou nul: if [$1 -gt 0] then echo $1 est positive elif [$1 -lt 0] then echo $1 est ngative elif [$1 -eq 0] then echo $1 est zero else echo Opps! $1 nest pas nbre, donner un nombre fi

231

232

1. Structures conditionnelles Supposons que le script exige la prsence dau moins un paramtre, il faut tester la valeur de $#, est elle nulle? if [$# = 0] then echo erreur, la commande exige au moins un argument.. exit 1 elif [$# = 1] then echo Donner le second argument: read arg2 fi

1. Structures conditionnelles

Un script shell qui fait le test sur lexistence dun utilisateur $ cat exist_user if grep $1 /etc/passwd > /dev/null then echo Lutilisateur $1 a un compte else echo lutilisateur $1 nexiste pas fi $ chmod u+x exist_user $exist_user c1 Lutilisateur c1 a un compte $

233

234

Chapitre3: Structure de contrle

2. Choix multiples

2. C"oi2 mu#tip#es
Syntaxe: case valeur in expr1) commandes;; expr2) commandes;; esac ;; indique la fin du choix (cas).

32emp#e1:
case $param in 0|1|2|3|4|5|6|7|8|9) echo $param est un chiffre;; [0-9]*) echo $param est un nombre;; [a-zA-Z]*) echo $param est un nom;; *) echo $param de type non prvu;; esac

32emp#e:
Le script attent une langue de lutilisateur read langue case $langue in franais) echo bonjour;; anglais) echo hello;; espagnol) echo buenos Dias;; esac
235

32emp#e2:
case $1 in one) X=un;; two) X=deux;; three) X=trois;; *) X=$1;; esac
236

3. Structure itrative

3.1 Boucle for

3.1 =ouc#e )or


Syntaxe:
for variable in liste do Commandes (utilisant $variable) done Pour chaque valeur de la variable dans la liste de valeurs, excuter le ou la suite de commande.

32emp#es:
Supposons que nous souhaitons renommer tous nos fichiers *.tar.gz en *.tar.gz.old, nous taperons le script suivant: for I in *.tar.gz do #tous les fichiers $I sont renomms $I.old echo $I-> $I.old mv $I $I.old #on finit notre boucle done
237

Supposons que nous voulions parcourir tous les sous-rpertoires du rpertoire courant pour faire cette mme manipulation. Nous pourrons taper: for REP in `find . -type d` do for FICH in $REP/*.tar.gz do if [-f $FICH] then mv $FICH $FICH.old else echo On ne renomme pas $FICH car ce n\est pas un fichier fi done done #Une boucle for avec une [liste] gnre par une substitution de commande. NOMBRE=9 7 3 8 37.53 for nombre in echo $NOMBRE # ou bien for nombre in 9 7 3 8 37.53 do echo n $nombre done
238

3. Structure itrative

3.2 La boucle while

3.2 La (ouc#e >"i#e


<tant que> le rsultat commande est vraie. La commande while consiste en lexcution dune commande en fonction de la valeur de retour dune autre commande. Si la valeur de retour est diffrente de zro, lexcution de la boucle est interrompue.

32emp#es:
Supposons, par exemples que vous souhaitiez afficher les 100 premiers nombres (pour une obscure raison), alors vous taperez: i=0 while [$i lt 100] do echo $i i=$(($i+1)) done Supposons, par exemples que vous souhaitiez lire un nom partir du clavier , alors vous taperez: echo e Entrez un nom de fichier read fich while [-z $fich] do echo e Saisie recommencer read fich done

Syntaxe: while suite de commande do Commandes done

239

240

3.2 La boucle while Supposons, par exemples que vous souhaitiez afficher les 10 premiers nombre, alors vous taperez: var0=0 LIMITE=10 while [$var0 lt $LIMITE] do echo n $var0 # -n supprime le retour chariot. var0=expr $var0+1 #var0=$(($var0+1)) fonctionne aussi. done Supposons, par exemples que vous souhaitiez quitter si le paramtre donn est fin , alors vous taperez: while [$var1!=fin"] do echo Variable dentre #1 (quitte avec fin) read var1 echo variable #1 = $var1 done

3. Structure itrative

3.3 La (ouc#e u!ti#


<jusqu ce que> le rsultat de la commande soit vrai. La commande until est excute jusqu ce que la dernire commande de la liste de commandes place derrire until renvoie une valeur vraie soit 0. Syntaxe: until suite de commandes do Commandes done

32emp#e:
until [$var1=fin] do echo "variable dentre #1 echo (fin pour sortir)" read var1 echo variable #1 =$var1 done # condition du test ici, en haut de la boucle.

241

242

3.4 Interruption & reprise dune boucle if [$# -ne 1] then echo Usage: $0 number echo I will find sum of all digit for given number" echo for eg. $0 123, I will print 6 as sum of all digit (1+2+3) exit1 fi n=$1 sum=0 sd=0 while [$n gt 0] do sd=`expr $n % 10` sum=`expr $sum + $sd` n=`expr $n/10` done echo sum of digit for number is $sum"
243

$cat deconnecte do sleep 180 echo ,\c done echo $1 nest plus connect $chmod u+x deconnecte $deconnecte c1 c1 nest plus connect $

Tand que lutilisateur pass en argument who (donc est connect), on boucle aprs avoir attendu 180 secondes et affich une virgule. Puis on signale quil nest plus connect. Les commandes testes dans le while sont excutes, donc leur affichage se fait lcran (sortie standard), afin dviter de recevoir laffichage parasite (seul le statut nous intresse), on redirige la sortie standard de la dernire commande dans le pseudopriphrique /dev/null.

while (who | grep $1) > /dev/null (ici c1) est dans la liste de la commande

244

Chapitre3: Structure de contrle

4. Fonctions

+. ?o!ctio!s
Le shell permet la dclaration de fonctions qui pourront tre appeles au sein dune procdure ou en direct sur linterprte. Lappel une fonction est plus rapide que lappel un script. Une fonction regroupe des commandes qui seront lances lappel cette fonction. Contrairement aux procdures, une fonction peut modifier lenvironnement dun shell. nom_de_fonction ( ) { commande1 commande2 commande3 }
245

Les commandes contenues dans une fonction pourront utiliser : les paramtre positionnels ($0, $1, $2, ..., $9), les variables automatiques (?, #, *, $, , @, !), les structures de contrle (if, for, case, while, until), les redirections dentres/sorties, les tubes (pipe "|").

32emp#e :
$ info ( ) { date tty } $ info Fri Sep 16 16:05:06 MET 2000 /dev/tty3 $
246

4. Fonctions Les fonctions sont considres comme des commandes mais ne font pas partie de lenvironnement puisquelles ne peuvent tre exportes. La commande set permet de visualiser les variables et les fonctions dfinies dans le shell courant.
$ set HOME=/usr/c1 PATH=:/bin:/usr/bin:/usr/local/bin:/usr/c1/bin:. info( ) { date tty } $

4. Fonctions Les fonctions accdent leurs arguments par les paramtres positionnels ($0, $1, ...). Elles peuvent galement consulter les variables automatiques ($#, $*, ...).
$ dir ( ) { > ls $* >} $ dir /

Il est possible de rediriger les entres/sorties dune fonction, ou encore de les combiner par des pipes. Il est galement possible de les excuter dans des structures de contrle.
$ dir / > /tmp/out $ dir / | wc 3 15 198 $

Une fonction sutilise de la mme faon que les commandes internes et externes du shell. Dans lexemple suivant, la commande interne exit est excute dans le shell courant :
$ export info sh : cannot export functions $ essai ( ) { > date > exit 0 >} $ essai Fri Sep 16 16:55:34 MET 2000 Login :
247

Chaque commande shell de la fonction est excute en squence. Si une commande retourne un statut faux, la commande suivante est excute quand mme. La fonction retourne le statut de la dernire commande lance. return n permet de quitter la fonction en retournant n comme statut. Il est possible de sauvegarder les fonctions dans des fichiers de commandes. Dans ce cas les fonctions dfinies lintrieur ne seront connues que dans le fichier de commandes luimme, cestdire que le shell courant ne connatra pas les fonctions dfinies.
248

4. Fonctions Afin que le shell courant prennent en compte les fonctions dfinies dans un fichier, il suffit de les lancer en utilisant le "." :
$ cat fichfonc d(){ date } $ chmod u+x fichfonc $ . fichfonc Lun 19 Sep 10:45:33 MET 2000 $

32emp#e
factorielle() { if [ $# -ne 1 ] || [ $1 -lt 0 ] ; then echo "Usage: factorielle n (avec n >= 0)" 1>&2 else resultat=1 n=$1 while [ $n -gt 1 ] ; do let $[ resultat *= n] On peut utiliser cette fonction dans un script comme suit: n=0 until [ $n -eq 14 ] do resultat=$(factorielle resultat=$( factorielle $n) $n) echo "$n! = $resultat" let $(n += 1) done

32emp#e :
stat() { if [-d "$1" ] then echo $1 est un rpertoire return 0 else echo $1 n'est pas un rpertoire return 1 fi }

stat /tmp retourne 1 stat $dir dpend de la valeur de $dir stat $1 $1 est ici le paramtre du shell

let $(n -= 1) done echo "$resultat" fi }

249

250

Vous aimerez peut-être aussi