63
Cours: Linux1: Configuration et programmation système avancées Université de Gabes Faculté de sciences de Gabes Département Informatique Préparé par l’assistante: Mdme Imen SFAIHI ZOUARI Cours désigné au MPSSRI Année universitaire 2011-1012 1 1.1 Historique des systèmes UNIX 1.1 Historique des systèmes UNIX 1.1 Historique des systèmes UNIX 1.1 Historique des systèmes UNIX Présentation générale d’UNIX UNICS Multics Unix TSS V1 Unix TSS V2 V3 Unix TSS V4 V5 Unix TSS V6 Unix TSS V7 Unix system V AIX HP-UX IRIX UNIX Unix Ware XENIX Linux Solaris 2 Figure2: L’évolution historique du système Unix ( réf: site comment ça marche) 1965 1969 1972 1973 1973 1976 1974 1974 Unix BSD Solaris Free BSD Net BSD Open BSD MacOSX TSS: Time Sharing System 1.1 Historique des systèmes UNIX 1969 - 1979 : les premiers pas universitaires En 1969 : Ken Thompson, aux BELL Laboratories, "Multics" (Multiplexed Information and Computing System): C’est un système mono-utilisateur et multi-tâche écrit en assembleur. En 1972, Dennis Ritchie implémente le langage C 3 En 1973 : réécriture du noyau et des utilitaires d’UNIX en C UNICS (UNiplexed Information and Computing Service), rapidement contractée en Unix. En 1974 distribution d’UNIX aux Universités (Berkeley et Columbia notamment). 1979 - 1984 : les premiers pas commerciaux En 1979, avec la version 7, UNIX se développe commercialement : Par des sociétés privées comme Microport (1985), Xénix- Microsoft (1980) … qui achetèrent les sources et le droit de diffuser des binaires. 1.1 Historique des systèmes UNIX 4 Des Unix like apparaissent ; le noyau est entièrement réécrit. L’université de Berkley fait un portage su VAX (UNIX 32 V). AT&T vend la version 7 sur les ordinateurs de la gamme PDP 11.

Cours système d'exploitation

Embed Size (px)

Citation preview

Page 1: Cours système d'exploitation

Cours: Linux1: Configuration et programmation système avancées

Université de Gabes

Faculté de sciences de Gabes

Département Informatique

programmation système avancées

Préparé par l’assistante:Mdme Imen SFAIHI ZOUARI

Cours désigné au MPSSRI

Année universitaire 2011-10121

1.1 Historique des systèmes UNIX1.1 Historique des systèmes UNIX1.1 Historique des systèmes UNIX1.1 Historique des systèmes UNIX

Présentation générale d’UNIX

UNICS MulticsUnix TSS

V1Unix TSSV2 V3

Unix TSSV4 V5

Unix TSSV6

Unix TSSV7

Unix systemV

AIXHP-UXIRIXUNIXUnix WareXENIX

LinuxSolaris

2

Figure2: L’évolution historique du système Unix ( réf: site comment ça marche)

1965 1969 1972 19731973 197619741974

Unix BSD

Solaris

Free BSDNet BSD

Open BSDMacOSX

TSS: Time Sharing System

1.1 Historique des systèmes UNIX

1969 − 1979 : les premiers pas universitaires

– En 1969 :Ken Thompson, aux BELL Laboratories,

• "Multics" (Multiplexed Information and Computing System):

C’est un système mono−utilisateur et multi−tâcheécrit en assembleur.

– En 1972,Dennis Ritchie implémente le langage C

3

– En 1973 :réécriture du noyau et des utilitaires d’UNIX en C

• UNICS (UNiplexed Information and Computing Service), rapidement contractée en Unix.

– En 1974distribution d’UNIX aux Universités (Berkeley et Columbia notamment).

1979 − 1984 : les premiers pas commerciaux

– En 1979, avec la version 7, UNIX se développe commercialement :

• Par des sociétés privéescomme Microport (1985), Xénix-Microsoft (1980)… qui achetèrent les sources et le droit de

diffuser des binaires.

1.1 Historique des systèmes UNIX

4

• Des Unix like apparaissent ; le noyau est entièrement réécrit.

• L’université de Berkley fait un portage su VAX (UNIX 32 V).

• AT&T vend la version 7 sur les ordinateurs de la gamme PDP 11.

Page 2: Cours système d'exploitation

1984 − 1993 ... : la standardisation

– En 1984,le Système V.2 est adopté comme standard.

– En 1984, X/Openest chargée d’organiser la portabilité d’UNIX.

– En 1985, AT&T publie SVID (System V Interface Definition) qui définit

l’interface d’application du Système V.2 et non pas son implémentation.

– En 1985,un professeur hollandais, nommé Andrew Tannenbaum,

développa un système d'exploitation minimal, appelé « Minix ».

1.1 Historique des systèmes UNIX

5

développa un système d'exploitation minimal, appelé « Minix ».

– En 1986,le Système V.3 apporte les Streams, les librairies partagées et

RFS (Remote File Sharing).

– En 1993, X/Openlance le COSE (Common Open Software Environment).

Il s’agit d’accords entre constructeurs pour le développement d’applications

dans un environnement commun.

– L’authentification d’UNIX appartient désormais à un consortium de

constructeurs (USL, HP, IBM, SUN ...).

1991 − 2000 : LINUX, le renouveau d’UNIX

LINUX est une implantation libre des spécifications POSIX avec des

extensions System V (AT&T) et BSD (Berkeley).

– En 1991,Linus B. Torvalds(Helsinki) utilise MINIX. La 1ère version

de LINUX 0.01. C’est une réécriture de MINIX, avec des ajouts de

1.1 Historique des systèmes UNIX

6

nouvelles fonctionnalités et la diffusion des sources sur « Internet »

−> une version instable

– En 1994 : 1ère version stable

– De nos jours:Les versions 2.0 etc... Respectent la norme POSIX (code

source portable) et le code source est gratuit.

1.2 Caractéristiques du système UNIX1.2 Caractéristiques du système UNIX1.2 Caractéristiques du système UNIX1.2 Caractéristiques du système UNIX

• Multi-utilisteurs

Plusieurs utilisateurs peuvent se connecter et travailler en même temps.

Chaque utilisateur a son environnement personnel.

• Multi-tâches

Un même utilisateur peut lancer plusieurs travaux simultanément.

Présentation générale d’UNIX

7

Un même utilisateur peut lancer plusieurs travaux simultanément.

• Interactif

Il est possible de dialoguer avec l'ordinateur. Possibilité aussi de lancer des processus (tâches) en arrière plan et en mode différé (batch).

• Portabilité

Il est écrit en C donc fonctionnement sur de nombreux plates-formes matériels.

• Système de fichiers hiérarchisé; Organisation en arborescence

1.2 Caractéristiques du système UNIX

/

8

usr etc home var dev

passwdbin lib C1 C2

…..…..….

Page 3: Cours système d'exploitation

Chacun des répertoires a un nom standardisé et un contenu précis:

1.2 Caractéristiques du système UNIX

/ Racine du système, contient les répertoires principaux

/bin Commandes essentielles communes à tous les utilisateurs

/boot Fichers de démarrage du système, contient le noyau

/dev Points d’entrée des périphériques

/etc Fichiers de configuration

9

/etc Fichiers de configuration

/home Répertoires personnels des utilisateurs

/root Répertoire personnel de l’administrateur

/usr Hiérarchie secondaire, applications, bibliothèques partagées

/var Fichiers traces du système (logs)

/proc Système de fichiers virtuel, informations en temps réel

• Un mécanisme de protection

• identification des utilisateurs par mot de passe

• protection des fichiers

• Un super-utilisateur

• Une vision simplifiée par l'utilisateur des entrées-sorties

1.2 Caractéristiques du système UNIX

10

• Une vision simplifiée par l'utilisateur des entrées-sortiesLes périphériques sont représentés par des noms de fichier, et

peuvent être utilisés comme des fichiers ordinaires)

• Le choix d’un langage de commandes: Les shells.

1.3 Structure du système UNIX1.3 Structure du système UNIX1.3 Structure du système UNIX1.3 Structure du système UNIX

Présentation générale d’UNIX

Noyau

Interprètes

de commande

Les applications

Matériel

11

Shell: sh, csh, ksh Utilitaires

Les utilisateurs

Figure3: Structuration du système UNIX

• Le noyaugère les tâches de base du système :

-L'initialisation du système

-La gestion des ressources

-La gestion des processus

-La gestion des fichiers

-La gestion des Entrées/Sorties

• L’utilisateurcommunique avec le noyau par l'intermédiaire d'un SHELL.

1.3 Structure du système UNIX

12

• L’utilisateurcommunique avec le noyau par l'intermédiaire d'un SHELL.

Les shells sont aussi des langages de commandes et de programmation.

• Les shellsles plus connus sont :

BOURNE SHELL (sh) KORN-SHELL (ksh)

C-SHELL (csh) TC-SHELL (csh)

• Les utilitairessont des outils d'interfaçage avec le système, de programmation et de communication.

Page 4: Cours système d'exploitation

Partie1: certification LPI101

1. Matériel & Architecture

2. Installation de Linux & Gestion des Packages

3. GNU & commandes Unix

4. Systèmes de fichiers

5. X Window

13

Chap1:Matériel & Architecture

1 Configurer les bases du BIOS

2 Configurer un modem et une carte son

3 Installer des périphériques SCSI

4 Paramétrer différentes cartes d'extension PC

5 Configurer les périphériques de communication

6 Configurer des périphériques USB

14

1. Configurer les bases du BIOS

Objectifs

=> Configurer le matériel système de base en modifiant correctement le BIOS

système. Cet objectif inclut une compréhension appropriée 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 désactivant des périphériques intégrés,plus de 1024 cylindres, en activant ou désactivant des périphériques intégrés,

aussi bien qu'en configurant des systèmes avec ou sans périphériques

externes tels que des claviers. Cela inclut également le paramétrage correct

des adresses d'IRQ, de DMA et d'I/O pour tous les ports administrés par le

BIOS et la gestion des arrêts sur erreur.

Fichiers, termes et commandes principaux inclus :

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

15

1.1BIOS

C’est un petit programme qui réside en mémoire morte.

Quand vous allumez l'ordinateur, les instructions du BIOS (Basic InputOutput System) sont chargées en RAM depuis un composant ROMsitué sur la carte mère et dans lequel elles sont disponibles de façonpermanente.

Ces instructions indiquent au processeur où est situé le systèmed'exploitation et comment le charger en RAM. Pour permettre ausystème d'exploitation et aux applications de fonctionner sur un PC, leBIOS fournit un niveau standard de services que le systèmed'exploitation peut utiliser pour dialoguer avec le matériel.

À son tour, le système d'exploitation fournit des services standards auxapplications qui leur permettent de fonctionner.

16

Page 5: Cours système d'exploitation

1.2 Accès à des disques-durs de

grande capacité

LBA (Logic Block Addressing) est la méthode la plus courante pour dépasser la

limite des 528 Mo imposée par les lecteurs de disques IDE. La limite des 528 Mo

est imposée par le plus petit dénominateur commun (ppcm) entre les interfaces

IDE et le BIOS (INT13H).

Elements INT13H IDE Limitation

Max Sector/Track 63 255 63

Number of heads 255 16 16

Number of cylindes 1024 65536 1024

Max Capacity 8.4G 136.9G 528M

17

Avec LBA, chaque bloc a un numéro unique et le niveauphysique du disque n'est pas visible par le systèmed'exploitation.

Par exemple, un disque de 2048 cylindres, 16 têtes et 63secteurs sera détecté avec 1024 cylindres, 32 têtes et 63secteurs.

Dans la traduction, si le numéro de secteur est inférieur à1024*16*63, le disque dur fait moins de 528M. Lorsque lenuméro de secteur est supérieur à 1024*16*63, le nombre detêtes est fixé à 32.

Pour que tout fonctionne correctement, ce mécanisme doitêtre supporté par le BIOS, l'OS et le disque IDE.

18

1.3 Obtenir des informations sur les

disques-dursPour obtenir des informations sur la géométrie d'un disque IDE, utilisez hdparm.

hdparm [options] [devices]

Options courantes :

-g: Fournit la géométrie du disque.

-C: Affiche le mode de puissance du disque dur.-C: Affiche le mode de puissance du disque dur.

active/idle: operation normale,

Standby: Mode puissance réduite,

Or sleeping: Mode puissance minimum.

-v: Affiche tous les paramètres du disque dur.

19

Exemples :

hdparm -g /dev/hda

/dev/hda:

geometry = 3648/255/63, sectors = 58605120, start = 0

hdparm -C /dev/hda

/dev/hda:/dev/hda:

drive state is: active/idle

20

Page 6: Cours système d'exploitation

1.4 Obtenir des informations sur le

noyau/proc est un pseudo-système de fichiers qui est utilisé comme interface vers lesstructures de données du noyau. La plupart de ses fichiers sont en lecture seule,mais certains permettent de modifier les variables du noyau.

Exemples de répertoires disponibles:

/proc/uptime Depuis quand le système a démarré et fonctionne./proc/uptime Depuis quand le système a démarré et fonctionne.

/proc/sys/kernel Informations sur le noyau.

/proc/sys/net Informations réseau. /proc/partitions Informations sur les partitionsdu/des disque(s) dur(s).

/proc/scsi Informations SCSI.

/proc/mount Informations sur les systèmes de fichiers montés.

/proc/devices Liste les pilotes chargés.

/proc/bus Informations sur les bus.

/proc/version Version Linux.21

2. Configurer un modem et une carte

son

Objectifs

Assurez-vous des conditions de compatibilité de raccordement des

périphériques (en particulier pour les modems qui ne sont pas

"Windows"), vérifiez que le modem et la carte son emploient des"Windows"), vérifiez 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 démarrez sndconfig et isapnp, configurez le

modem pour un "dial-up" clavier, configurez le modem pour le

protocole PPP | SLIP | CSLIP connection, paramétrez le port série

pour 115.2 Kbps.

22

2.1 Modem

Un modem est un périphérique qui permet d'envoyer des donnée snumériques sur une ligne téléphonique. Il existe quatre types de modems :

– Externe : connecté par le port série.– USB : connecté par un port USB.– Interne : carte ISA ou PCI.– Intégré : directement intégré à la carte mère.

La plupart des nouveaux modems sont Plug and Play et vous avez différentsLa plupart des nouveaux modems sont Plug and Play et vous avez différentsmoyens de les configurer :

– Le pilote série le fait pour vous.– Utiliser le programme isapnp.– Laisser le BIOS PnP faire la configuration.

Pour afficher les informations sur un périphérique ISA, utilisez pnpdump. Cetutilitaire peut afficher les informations d'une carte PnP (ports d'entrée/sortie,interruptions et canaux DMA) que la carte souhaite ou doit utiliser. Pourconfigurer un périphérique ISA, utilisez isapnp. Pour plus d'informations, lisez lapage de manuel du fichier isapnp.conf.

23

2.2 Ports série

Un modem externe peut être configuré avec setserial.setserial [options] device [parameters]

Les différents ports série disponibles sont :/dev/ttys0 (COM1), port 0x3f8, irq 4/dev/ttys1 (COM2), port 0x2f8, irq 3/dev/ttys1 (COM2), port 0x2f8, irq 3/dev/ttys2 (COM3), port 0x3e8, irq 4/dev/ttys3 (COM4), port 0x2e8, irq 3Options habituelles :

-a: rapporte toutes les informations disponibles surun périphérique connecté.

24

Page 7: Cours système d'exploitation

Paramètres habituels :-port: numéro de port.-irq: numéro 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 déterminer l'UART, le numéroIRQ,...-baud_rate: Bande passante de communication (maximum : 115200octets/sec).

Exemple :Pour obtenir des information sur les périphériques connectés

setserial -a /dev/ttyS*Pour définir la vitesse du port série:

setserial speed optionOption:

spd_hi (56ko), spd_vhi (115ko), spd_shi(230ko), …

25

2.3 Appels entrants et sortants

Pour émettre un appel avec un modem, vous pouvez utiliser les applicationssetserial ou minicom. Un fichier de configuration peut être créé avec l'option -s.

minicom -sPour recevoir un appel, le système a besoin de lancer un processus getty pourgérer 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 reçoit un caratère 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 Carte son

Les cartes son sont en général internes, c-à-d connectées directementsur un bus de la carte mère.

Leurs configurations dépendent donc des ressources allouées: IRQ etadresse d’I/O. Ces ressources peuvent tjrs être consultées par lescommande dmesg, lspci ou dans les fichier /var/log/dmesg oucommande dmesg, lspci ou dans les fichier /var/log/dmesg ou/proc/pci.

L’outil sndconfig permet d’installer ou de détecter la carte son et deproposer une configuration par défaut, ou un mode manuel où l’onchoisit la carte son.

Les modifications aux fichiers /etc/isapnp.conf et /etc/conf.modules (ou/etc/modules.conf) sont automatiques.

27

3. Installer des périphériques SCSI

ObjectifsConfigurer les périphériques SCSI en utilisant le "BIOS SCSI" aussi bienque les outils Linux nécessaires. Ils devraient également faire la différenceentre les divers types de SCSI. Cet objectif inclut la manipulation du BIOSSCSI pour détecter les identifications SCSI utilisées et disponibles et saisirla valeur correcte d'identification pour différents périphériques,particulièrement le périphérique de démarrage (boot). Cela comprendparticulièrement le périphérique de démarrage (boot). Cela comprendégalement la gestion du paramétrage du BIOS de l'ordinateur pourdéterminer la séquence de démarrage (boot) si des périphérique SCSI etIDE sont présents.

Fichiers , termes et commandes principaux inclus :SCSI ID/proc/scsi/scsi_info

28

Page 8: Cours système d'exploitation

• D.D IDE: /dev/hdxySCSI: /dev/sdxy

Où x présente (a maitre, b esclave, c maitre, d esclave)(chacun possède au max 4 partitions primaires de 1 à 4et 12 partitions logiques de 5 à 16 )

Exemple:La deuxième partition logique: /dev/hda2

/dev/hda5/dev/hda5/dev/hda6

Il existe 3 grands types d’interface SCSI:1. SCSI-1: Interface 8 bits, 8 périphériques (en réalité 7),

f=4,77Mhz2. SCSI-2: 16 bits, 16 périphériques (15 en réalité)3. SCSI-3: 32 périphériques.

29

3.1 Périphériques SCSI

On peut accéder au BIOS SCSI lors du boot avecune séquence particulière de touches, ce quipermet de modifier certains paramètres, de définirle SCSI comme bootable ou d'autres. Pouraccéder aux informations du SCSI, utiliseraccéder aux informations du SCSI, utiliserscsi_info ou hdparm.

Exemples :scsi_info /dev/sdahdparm -gv /dev/sda

30

4. Paramétrer différentes cartes

d'extension PCObjectifs

Etre en mesure de configurer de nombreuses cartes pour différents slotsd'extension. Ils devraient connaitre la différence entre les cartes ISA et PCIen respectant les données de configuration. Cet objectif comprend leparamétrage correct des IRQs, DMA et ports I/O des cartes, notammmentpour éviter les conflits entre les périphériques. Cela inclut l'usage de isapnp sila carte est un periphérique PnP.la carte est un periphérique PnP.

Fichiers , termes et commandes principaux inclus :/proc/dma/proc/interrupts/proc/ioports/proc/pcipnpdump (8)isapnp (8)lspci (8)

31

4.1 Cartes PCIToutes les cartes PCI sont normalement détectées par leBIOS. Lors du boot, le BIOS vérifie l'espace de configurationPCI et détecte tous les périphériques et les bridges. Pourêtre sûr que le BIOS a détecté tous les périphériques PCI,utiliser lspci. Vérifier les bridges, les fonctions et lespériphériques spéciaux.

4.2 Cartes ISAToutes les cartes ISA sont aussi normalement détectées parToutes les cartes ISA sont aussi normalement détectées parleur pilote respectif. Les utilitaires qui permettent deconfigurer manuellement les cartes ISA sont pnpdump,pnpisa et le fichier /etc/isapnp.conf. Le programme pnpdumppermet d'afficher les informations sur les cartes ISAdétectées. Le programme pnpisa utilise un fichier deconfiguration /etc/isapnp.conf qui a la même syntaxe que lasortie de pnpdump et qui permet de configurer n'importequel paramètre d'une carte ISA

32

Page 9: Cours système d'exploitation

5. Configurer les périphériques de

communicationObjectifs

Installer et configurer différents périphériques internes ou externes decommunication comme un modem, un adaptateur ISDN, et commutateurs(switches) DSL. L'objectif inclut la vérification de la compatibilité requise(importante en particulier si le modem est compatible Windows), et de lanécessité de charger et de paramétrer les pilotes adéquats despériphériques, ainsi que les paramètres matériels (IRQs, DMAs, I/O ports)périphériques, ainsi que les paramètres matériels (IRQs, DMAs, I/O ports)des périphériques. Cela comprend également les périphériques decommunication et les outils de configuration d'interfaces, comme le portsérie pour 115.2 kbps, et l'installation correcte du modem pour la limite deconnexions PPP en sortie.

Fichiers , termes et commandes principaux inclus :/proc/dma/proc/interrupts/proc/ioportssetserial(8)

33

5.1 I/O PortsPour obtenir la liste des ports d'entrée/sortie utilisés dans lesystème, vous pouvez afficher le contenu du fichier /proc/ioports.

$ cat /proc/ioports0000-001f : dma10020-003f : pic10040-005f : timer0060-006f : keyboard0070-007f : rtc0070-007f : rtc0080-008f : dma page reg00a0-00bf : pic200c0-00df : dma200f0-00ff : fpu0170-0177 : PCI device 8086:248a0170-0177 : ide1…..

34

5.2 InterruptionsAfin d'obtenir la liste de toutes les interruptions de tous les périphériques, onpeut afficher le contenu du fichier /proc/interrupts à l'écran.$ cat /proc/interruptsCPU00: 397517 XT-PIC timer1: 7544 XT-PIC keyboard2: 0 XT-PIC cascade5: 0 XT-PIC usb-uhci, usb-uhci8: 2 XT-PIC rtc8: 2 XT-PIC rtc10: 2024 XT-PIC eth0, usb-uhci, PCI device12: 19502 XT-PIC PS/2 Mouse

…..5.3 DMA

Pour obtenir la liste de tous les canaux DMA (Direct Memory Access) ISAutilisés, afficher le contenu du fichier /proc/dma.$ cat /proc/dma4: cascade

35

5.4 PCI

Pour obtenir la liste de tous les périphériques sur le bus PCI, afficher lecontenu du fichier /proc/pci.$ cat /proc/pciPCI devices found:

Bus 0, device 0, function 0:Class 0600: PCI device 8086:3575 (rev 2).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

Page 10: Cours système d'exploitation

6. Configurer des périphériques USB

ObjectifsActiver le support USB, utiliser et configurer des périphériques USBdifférents. Cet objectif inclut la sélection du chipset USB approprié et dumodule correspondant. Cela inclut aussi la connaissance des bases del'architecture de couche modèle (layer model) de l'USB ainsi que lesdifférents modules utilisés dans les différentes couches (layer).

Fichiers , termes et commandes principaux inclus :Fichiers , termes et commandes principaux inclus :lspci (8)usb-uhci.ousb-ohci.o/etc/usbmgr/usbmodules/etc/hotplug

37

6.1 Détection automatique de

nouveaux périphériques USB

Le programme exécuté lorsqu'un nouveau périphérique estconnecté est hotplug

hotplug nomNoms courants :

pci: périphérique PCI.usb: périphérique USB.usb: périphérique USB.

Le répertoire /etc/hotplug contient les scripts qui ont besoin d'êtreexécutés chaque fois qu'un périphérique est inséré ou enlevé.

/etc/hotplug/pci.agent: Pour installer le pilote PCI adéquat./etc/hotplug/usb.agent: Pour installer le pilote USB adéquat.

Le programme hotplug est également lancé au démarrage dusystème pour initialiser tous les périphériques connectés./etc/init.d/hotplug

38

6.2 Lister les périphériques USB

Pour vérifier que tous les périphériques ont bien été détectés, utilisezlsusb.lsusb [options]Exemple:$ lsusbBus 001 Device 004: ID 04a9:3045 Canon Inc. PowerShot S100 DeviceDescriptor:Descriptor:bLength 18bDescriptorType 1bcdUSB 1.00idVendor 0x04a9 Canon Inc.idProduct 0x3045 PowerShot S100 ...Pour afficher une vue graphique des périphériques USB connectés,utilisez usbview.

39

6.3 Pilotes USB

Chaque périphérique USB détecté sera monté dans le système de fichiers/proc/bus/usb. L'application appropriée pourra y accéder.Chaque périphérique USB sera vu au travers d'un système de fichiers./proc/bus/usb/001/005Pour vérifier que le pilote approprié a bien été chargé pour un périphérique USB,utilisez usbmodules.usbmodules [options]usbmodules [options]Exemples:$ usbmodules –device /proc/bus/usb/001/001$ usbcore$ usbmodules –device /proc/bus/usb/001/005 –mapfile /etc/hotplug/usb.handmanLes modules à charger par défaut sont /lib/modules/<version-noyau>/modules.usbmap.La table de correspondance est stockée dans le fichier /lib/modules/<version-noyau>/modules.usbmap.Tous les pilotes sont stockés dans le répertoire /lib/modules/<version-noyau>/kernel/drivers/usb/. 40

Page 11: Cours système d'exploitation

6.4 Applications USBBeaucoup d'applications existent pour beaucoup de périphériquesdifférents. Il faut parfois du temps pour arriver à toutes les fairemarcher. gphoto2 est une application qui peut-être utilisée pour unappareil photo numérique.options courrantes: --debug : Pour voir quel est le problème decommunication avec l'appareil photo. --print-usb-usermap : stocke lasortie dans /etc/hotplug/usb.usermap de façon à ce que l'applicationsortie dans /etc/hotplug/usb.usermap de façon à ce que l'applicationsupporte votre appareil photo. -P : Télécharger les photos.

Exemple:gphoto2 --summaryDétection du 'Canon PowerShot S100'.Résumé de l'appareil :Indentification de l'appareil :Modèle : Canon PowerShot S100Propriétaire :

41

Exemple de questions

1. Quelle commande permet d’afficher les messages de démarrage du système?A. messB. dmesgC. bootmsgD. lsmsg

2. Comment afficher les cartes connectées sur le bus PCI?A. less /proc/pciB. pcidumpB. pcidumpC. lesspci

3. La commande permet de lister les périphériques USB présents sur lamachine.

4. Combien de périphériques peut on théoriquement connecter sur une interfaceSCSI-2?

A. 32B. 8C. 15

42

5. Quelle commande permet de détecter les périphériques présents sur les portssérie?

A. lsserialB. setserialC. scantty

6. Quelle(s) commande(s) permet(ent) de détecter les cartes son présentes survotre machine?

A. lspciB. less /var/log/dmesgC. sndconfigD. less /etc/modules.confD. less /etc/modules.conf

7. Comment est représenté le périphérique IDE esclave du deuxième controleur?A. hdaB. sdcC. hdc1D. hdd

8. Le choix du périphérique de démarrage de votre machine se faitA. dans le biosB. avec une option du chargeur de demarrage (boot loader)C. automatiquement 43

Chap2: Installation de Linux & Gestion

des Packages

1.Conception de plan de partitionnement de disque dur

2. Installer un gestionnaire d'amorçage (boot manager)

3 Compiler et installer des programmes à partir des sources3 Compiler et installer des programmes à partir des sources

4 Gérer les bibliothèques partagées

5 Utilisation du système de gestion des paquets de Debian

6 Utilisation du système de gestion des paquets de Red Hat

44

Page 12: Cours système d'exploitation

1. Conception de plan de partitionnement de disque dur

ObjectifConcevoir le plan de partitionnement des disques d'un système Linux. Cetobjectif inclut l'allocation de systèmes de fichiers ou d'espaces de swap enpartitions ou disques, et l'adaptation de ce plan aux besoins auquels lesystème devra répondre. Cela inclut également de placer /boot sur unepartition compatible avec les contraintes du BIOS pour pouvoir démarrer.

Fichiers clés, termes et utilitaires:/ (système de fichiers racine)/var (système de fichiers)/home (système de fichiers)espace de swappoints de montagepartitions cylindre 1024

45

1.1 PartitionsLorsque l'on fait une installation, il est nécessaire de créer au minimum deuxpartitions :– / (système 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 prévoir également despartitions séparées pour les répertoires /usr et /home. Chaque partitionpartitions séparées pour les répertoires /usr et /home. Chaque partitioncontiendra un type de système de fichiers (éventuellement tous différents) etpourra être montée sur le système actif dans l'arbre global des fichiers.Pour afficher la liste des systèmes de fichiers actifs, utilisez la commandemount.$ mountproc 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 système de fichiers. Le noyau pourra yaccéder en mode brut.

46

1.2 Problèmes relatifs à la vitesse des disques.

Avant de décider votre plan de partitionnement, vous devezconnaitre exactement les types d'applications qui tourneront survotre système.– Serveur de mails– Serveur Web– Applications graphiques s'appuyant sur X-Window– et plus encore– et plus encore

Si votre système possède plusieurs disques, utilisez le plus rapidepour conserver la majorité de vos données.– / Contient la plupart des utilitaires systèmes qui ne sont pas souvent

utilisés. Ils peuvent donc être envoyés 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 séparée. Néanmoins, la prévision

d'utiliser de nombreux clients démarrant de nombreuses applicationsgraphiques pousse souvent à mettre cette partition sur un disquerapide.

47

1.3 Mémoire virtuelleLes informations sur la partition de swap peuvent être obtenuespar la commande swaponswapon -s # montre la partition active.Pour obtenir des informations sur l'utilisation de la mémoirevirtuelle, utilisez la commande vmstat.$ vmstat -n 1$ vmstat -n 1

procs memory swap io system cpur b w swpd free buff cache si so bi bo in cs us sy id5 0 1 184 3228 37684 92828 0 0 37 19 124 228 3 0 971 0 0 184 3476 37684 92596 0 0 0 0 102 368 0 0 1002 0 0 184 3476 37684 92596 0 0 0 0 101 328 0 0 100

48

Page 13: Cours système d'exploitation

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).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'amorçage (boot manager)

ObjectifSélectionner, installer et configurer un gestionnaire d'amorçage. Cet objectif inclut la mise à disposition d'emplacements de démarrage alternatifs et d'options de démarrage pour backup (par exemple en utilisant une disquette).

fichiers clés termes et utilitaires :/etc /lilo.conf/etc /lilo.conf/boot/grub/grub.conf(à verifier : ne serait-ce pas plutôt /boot/grub/menu.lst ?) lilogrub-installMBRsuperblockfirst stage boot loader

50

2.1 Gestionnaire d'amorçageUn gestionnaire d'amorçage est installé sur le MBR (Master Boot Record). Quand unsystème est démarré, il charge dans la RAM ce qui est sur le MBR. Les deux gestionairesd'amorçage les plus courants sous Linux sont :

– Lilo: LInux LOader.

– Grub: Grand Unified Boot Loader.

Un gestionnaire d'amorçage permet de sélectionner l'image à partir de laquelle on désiredémarrer, et éventuellement de passer des paramètres, de manière prédéfinie oudémarrer, et éventuellement de passer des paramètres, de manière prédéfinie ouinteractivement. Pour Linux, il s'agit de déterminer le noyau sur lequel on veut démarrer etde lui passer des paramètres (comme la partition à utiliser comme racine), etéventuellement un initrd (initial Ram Disk) à charger après le noyau.

De nombreux systèmes d'exploitations (notamment propriétaires) ont tendance à installerleur propre gestionnaire de démarrage sans se préoccuper de l'existence préalable d'ungestionnaire de démarrage dans le MBR. Ainsi, il est préférable de garder cela à l'espritquand on veut installer plusieurs systèmes d'exploitations : si on veut faire cohabiter linuxavec d'autres systèmes, il est plus sûr de l'installer en dernier, Grub et Lilo permettant decharger plusieurs systèmes d'exploitation.

GRUB est le gestionnaire par défaut de nombreuses distributions linux actuelles. 51

2.2 LILO vs. GRUBLes deux sont utilisés pour charger une image d'un disque vers la RAM. GRUBpossède les avantages suivants sur LILO:– Plus de commandes pré-OS.– Peut charger des images placées au-dela de la limitation BIOS du cylindre

1024.– Peut accéder à son fichier de configuration via le système de fichiers.

Si vous utilisez LILO, à chaque fois que vous ajoutez une nouvelle image ouSi vous utilisez LILO, à chaque fois que vous ajoutez une nouvelle image ouque vous changez une image, un nouveau LILO doit être installé sur le MBR.– LILO conserve ses informations de démarrage dans le MBR.– GRUB conserve ses informations de démarrage dans le filesystem

(menu.lst).– LILO possède aussi un fichier de configuration: /etc/lilo.conf.

Pour installer GRUB sur le MBR, utilisez grub. Cette commande va écraser leMBR.Pour installer LILO sur le MBR, utilisez lilo. Lilo va utiliser le fichier /etc/lilo.confpour savoir quoi écrire sur le MBR.

52

Page 14: Cours système d'exploitation

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 système de fichiers en lecture seule

# LILO Linux section image=/boot/vmlinuz # Image à charger label=linux # Nom de l'entrée du menu root=/dev/hda1 # Partition racine pour le noyau 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.binlabel=memtest86

53

Exemple de menu.lst (fichier de configuration de GRUB):# GRUB default values

timeout 10 # Démarer le noyau par défaut apres 10 secondes. default 0 # Noyau par défaut.

# Grub for Linux section 0 title GNU/Linux # Titre root (hd0,1) # /dev/hda2 système de fichiers racine

# Noyau et paramètres à passer au noyau. # Noyau et paramètres à passer au noyau. kernel /boot/vmlinuz root=/dev/hda2 read-onlyinitrd /boot/initrdboot

# Grub for DOS/Windows section title Windows root (hd0,2) # /dev/hda3 makeactivechainloader+1

54

3. Compiler et installer des

programmes à partir des sources

ObjectifCompiler et installer un programme exécutable à partir de ses sources. Cet objectif inclus des adaptations simples au Makefile, par exemple modifier des chemins ou ajouter un répertoire d'inclusions supplémentaire.

fichiers clés termes et utilitaires:gunzipgzipgzipbzip2tarconfiguremake

55

3.1 Fichiers source

On appelle archive un ensemble de fichiers qui ont une relation et stockés dansun fichier unique (pour faciliter la copie, par exemple). La commande permettantde rassembler fichiers et sous-répertoires dans une archive est tar. C'estpourquoi il est courant de dire qu'un fichier tar est une archive.tar fonction & options fichiers

Fonctions courantes:-c: Crée une nouvelle archive.-t: liste les fichiers rassemblés dans un fichier tar.-x: Extrait le contenu d'un fichier tar.-x: Extrait le contenu d'un fichier tar.

Options courantes:-f file: Spécifie le nom du fichier tar.

Exemples:tar cvf monbackup.tar ~tar cvf usr.tar /usrtar tvf monbackup.tartar xvf monbackup.tar

On utilise généralement l'extension .tar pour toutes archives créées par l'utilitairetar.

56

Page 15: Cours système d'exploitation

3.2 Compression de fichiers

La compression permet d'économiser l'espace de stockage et les besoins inhérentsau transfert de fichiers. Il existe de nombreux utilitaires de compression defichiers:

– compress, uncompress # vieil algorithme Unix de compression– gzip, gunzip # Le plus utilisé– bzip2, bunzip2 # l'algorithme donnant la meilleur compression (au coût de la vitesse...)

Une fois qu'une archive a été créée, elle peut être compressée.Exemples:Exemples:

$ ls -l backup.tar-rw-r--r-- 1 rarrigon users 22773760 nov 10 11:07 backup.tar$ gzip -v backup.tarbackup.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.tarbackup.tar: 2.260:1, 3.540 bits/byte, 55.75% saved, 22773760 in, 10077846 out.

57

3.3 Archivage de fichiers et

compressionIl est possible de rassembler des fichiers et de compresser l'archiveobtenue en une seule commande.

Exemples:tar cvzf backup.tgz ~ # Backup du répertoire utilisateur avec gziptar cvjf backup.tbz ~ # Backup du répertoire utilisateur avec with bzip2tar xvzf backup.tgz # décompression et extraction de backup.tgz avectar xvzf backup.tgz # décompression et extraction de backup.tgz avecgunziptar xvjf backup.tbz # décompression et extraction de backup.tbz avecbunzip2

Par défaut, tar utilise des chemins relatifs, mais il est possible de sauverdes fichiers en chemin absolu en utilisant l'option -P. Dans ce mode, lesfichiers seront toujours extraits au même endroit.

58

3.4 Chaîne d'outils GNU

Sous Linux, toutes les sources peuvent être compilées avec la chaine d'outilsstandard de GNU.

– L'utilitaire make permet de construire un programme à partir de plusieurs fichiers sources. Ilutilise les règles définies dans le Makefile.

– gcc est un compilateur C compatible ANSI.– g++ est un compilateur C++.

Beaucoup d'archives contiennent des fichiers d'information (README, INTALL) quiexpliquent comment le programme doit être compilé et installé.expliquent comment le programme doit être compilé et installé.Les fichiers Makefile.in et configure.in sont les fichiers de base servant à produire leMakefile final. Le fichier configure est généralement un script qui va explorer lesystème et produire un Makefile final. C'est pourquoi il est courant que l'installationd'un programme à partir des sources se résume à la suite de commandes :$ ./configure$ make$ make installLa dernière commande demande généralement les droits super-utilisateur (root)pour s'exécuter avec succès.

59

4. Gérer les bibliothèques partagées

ObjectifDéterminer de quelles bibliothèques partagées un programme exécutable dépend, et de les installer si nécessaire. Trouver à quel endroit les bibliothèques du système sont conservées.

fichiers clés termes et utilitaires:lddlddldconfig/etc/ld.so.confLD_LIBRARY_PATH

Imprimer les dépendances en bibliothèques partagéesInstaller de nouvelles bibliothèquesConstruire les dépendances.

60

Page 16: Cours système d'exploitation

4.1 Bibliothèques partagéesUne bibliothèque est un ensemble de fonctions que les programmespeuvent réutiliser pour implémenter leurs fonctionnalités. Lorsque l'onconstruit un exécutable, ces bibliothèques sont "liées" au programme.Ce lien peut être statique ou dynamique. Un lien statique signifie quel'exécutable final contiendra les fonctions de la bibliothèque dans sespropres fichiers. Sous Linux, la bibliothèque prend alors l'extension .a(comme dans lib.a). Un lien dynamique signifie que la bibliothèquedevra être chargée en mémoire RAM quand le programme aura besoind'exécuter les fonctions qu'elle contient. Sous Linux, la bibliothèqued'exécuter les fonctions qu'elle contient. Sous Linux, la bibliothèqueprend alors l'extension .so (comme dans lib.so).

Les répertoires par défaut des bibliothèques standards sont:– /lib: utilisé principalement par les programmes de /bin.

– /usr/lib: utilisé principalement par les programmes de /usr/bin.

Le fichier /etc/ld.so.conf est utilisé par le système pour indiquer leséventuelles autres localisations des bibliothèques. Pour créer un fichiercache utilisé par le chargeur de liens, utilisez ldconfig. Le fichier/etc/ld.so.cache sera géneré. Ce fichier contient en fait la liste desbibliothèques trouvées par le système dans les répertoires mentionnéspar le fichier /etc/ld.so.conf.

61

4.2 Dépendance de bibliothèques.

Pour afficher la liste des dépendances d'un programme (ou d'une bibliothèque) en termes de bibliothèques partagées, utilisez ldd.

ldd [-vdr] programme|bibliothèque

Exemple:

$ ldd -d -v /bin/cp

libc.so.6 => /lib/libc.so.6 (0x40027000)

/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

4.3 Chargeur de liens

Le chargeur de liens ld.so cherche la bibliothèque dont un programme a besoin et la charge en mémoire RAM. L'ordre de recherche de ld.so est :– LD_LIBRARY_PATH

– Le fichier cache /etc/ld.so.cache

– Les répertoires par défaut /lib et /usr/lib.62

5. Utilisation du système de gestion

des paquets de DebianObjectif

Utiliser le système de gestion des paquets de Debian. Cet objectif inclut lacapacité à utiliser des outils tant graphiques qu'en ligne de commandes pourinstaller, mettre à jour ou désinstaller des paquets, ainsi que pour trouver lespaquets contenant des fichiers ou des logiciels (qu'ils puissent ou non êtreinstallés). Cet objectif inclut également la capacité à obtenir des informations surle paquet, tels que la version, le contenu, les dépendances, l'intégrité du paquetet le statut d'installation (le paquet a-t-il déjà été installé).et le statut d'installation (le paquet a-t-il déjà été installé).

Fichiers clés, termes et utilitaires : unpack configure /etc/dpkg/dpkg.cfg/var/lib/dpkg/* /etc/apt/apt.conf /etc/apt/sources.list dpkg dselect dpkg-reconfigure apt-get alien

Debian est une organisation de bénévoles dédiée au dévelopement de logicielslibres et à la promotion des idéaux de la Free Software Foundation. Le projetDebian a été fondé en 1993. Il compte plus de 900 développeurs. Debiansupporte de nombreux processeurs: Alpha, ARM, HP PA-RISC, Intel x86, IntelIA-64, Motorola 680x0, MIPS, MIPS (DEC), PowerPC, IBM S/390, SPARC.

63

5.1 Dselect

L'utilitaire vous permettant d'ajouter ou retirer facilement des paquets sous Debian est dselect. Il permet de :

– Choisir la méthode d'accès aux paquets,

– Mettre à jour la liste des paquets disponibles,

– Sélectionner les paquets que vous voulez sur votre système,

– Installer et mettre à jour les paquets désirés,

– Configurer n'importe quel paquet non encore configuré,

– Désinstaller les logiciels non désirés.

Le menu interactif de dselect permet l'ajout et la supression de paquets. Soyez très prudents lors de l'utilisation de ce programme, vous risqueriez d'endommager votre système.

64

Page 17: Cours système d'exploitation

5.2 Apt-get

Si vous conaissez le nom du paquet que vous voulez installer, utilisez apt-get. Vous devez au préalable configurer le fichier sources.list. Ce même fichier est utilisé lorsque vous choisissez la méthode d'accès aptde dselect. Il se trouve dans /etc/apt.

Exemple de fichier sources.list :

cdrom:/cdrom

cdrom:/mnt/cdrom cdrom:/mnt/cdrom

file:/mnt

file:/debian

Pour mettre à jour l'information sur les paquets disponibles :

$ apt-get update

Pour installer un paquet :

$ apt-get install paquet

Pour remettre à jour automatiquement tous les paquets installés :

$ apt-get upgrade 65

5.3 Apt-cache

Pour trouver le nom d'un paquet que vous voulez installer, utilisez apt-cache. Ses options principales sont :– add - ajoute un fichier paquet au cache source

– showpkg - Montre quelques informations générales relatives à un paquet

– stats - Montre quelques statistiques basiques

– search - Fait une recherche dans la liste des paquets à partir d'une regexregex

– show - Montre un enregistrement lisible du paquet

– depends – Montre les informations de dépendances d'un paquet

$ apt-cache search gimp

babygimp - An icon editor in Perl-Tk

blackbook - GTK+ Address Book Applet

cupsys-driver-gimpprint - Gimp-Print printer drivers for CUPS

escputil - A maintenance utility for Epson Stylus printers

filmgimp - A motion picture editing and retouching tool 66

6. Utilisation du système de gestion

des paquets de Red HatObjectif

Gérer 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, dépendance, intégrité et signature. Les candidats seront capable de déterminer quels fichiers un paquet contient, et quel paquet contient un fichier spécifique.fichier spécifique.

Fichiers termes et utilitaires clés:/etc/rpmrc/usr/lib/rpm/*rpmgrep

67

6.1 Gestionaire de paquets de Red

HatCertaines distributions Linux utilisent RPM (pour "Red hat PackageManager) pour la gestion de la distribution des logiciels qui lescomposent. RPM tient à jour une base de données détaillée de tous leslogiciels installés sur le système.

Pour installer un paquet, jouez la commande:rpm -i [paquet].rpm

Le paquet ne sera installé que si toutes les dépendances sont rencontréesLe paquet ne sera installé que si toutes les dépendances sont rencontréeset qu'aucun conflit avec un autre paquet n'est détecté.

Pour mettre un paquet à jour, jouez la commande:rpm -U [paquet].rpm

Les fichiers de l'ancien paquet seront enlevé du système et remplacés parles nouveaux fichiers.

Pour enlever un paquet, jouez la commande:rpm -e [paquet]

Le paquet ne sera enlevé que si ca ne crée pas de problème dedépendance.

68

Page 18: Cours système d'exploitation

6.2 Requêtes RPMIl est possible d'interroger la base de donnée RPM avec l'option -q.

$ rpm -q -i apache L'option -i sert à obtenir les informations sur les paquetsL'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 installés.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 installés, utilisez rpmqpack.$ rpmqpack

69

6.4 Installation de SourcesLes fichiers RPM sources ont généralement le format paquet.src.rpm et peuvent être installés de la même façon que les binaires. Les répertoires à partir desquels ils seront installés dans /usr/src/packages/ sont:– SOURCES: Pour les sources originales.

– SPECS: Pour le fichier .spec qui contrôle le processus de construction du rpm.

– BUILD: Toutes les sources sont construites dans ce répertoire.– BUILD: Toutes les sources sont construites dans ce répertoire.

– RPMS: Où le paquet binaire sera stocké.

– SRPMS: Les sources.

Pour installer les sources d'un paquet, jouez la commande:

$ rpm -i monpaquet.src.rpm

Les fichiers sources seront placés dans /usr/src/packages dans les répertoires SPEC et SOURCES. Pour compiler les sources, jouez la commande:

$ rpm -ba /usr/src/packages/SPECS/monpaquet.spec

Le résultat de la compilation sera placé dans le répertoire BUILD.

70

Exemple de questions

1. Quelle fichier contient la liste des partitions qui seront montées au démarrage?A. /etc/inittabB. /etc/fstabC. /etc/mtab

2. Quelle commande permet de voir toutes les partitions montées?A. mount -aB. dfC. show mountC. show mountD. du -m

3. Quelle variable contient les chemins d’accès aux librairies du système?A. PATHB. LD_LIBRARY_PATHC. LIBPATHD. USRLIB

4. Linux utilise une zone spécifique lorsque la mémoire est saturée, cet espaces’appelle le .

71

5. A quoi sert la commande ldconfig?A. a prendre en compte les nouvelles librairies dont le chemin estcontenu dans le fichier /etc/ld.so.confB. a configurer les chemins des librairies de systèmeC. a préparer la compilation d’un programme

6. Lorsque vous installez un programme à partir de ces sources , l’étape finaleaprès avoir décompressé les sources, lancé le ./configure et compilé leprogramme est

7. Quelles sont les extensions des fichiers qui sont compressés de différentesmanières?

A. .tarA. .tarB. .gC. .gzD. .tgzE. .Z

8. Quelles commandes peuvent décompresser un fichier .tgz?A. gunzipB. guntarC. tarD. gzipE. tar –xvf

72

Page 19: Cours système d'exploitation

9. Quelle commande qui permet de désinstaller lilo ?A. lilo -uB. remove liloC. uninstall liloD. lilo –r

10. Quelle commande qui permet d’attendre 30 seconde avant le démarrage dusystème?

A. lilo -t 30B. lilo -d 30C. lilo delay 30C. lilo delay 30D. lilo 30

11. Quelle option avec la commande lilo qui permet le reboot du système?A. -RB. -SC. -TD. –L

73

12. Quelle est la la commande qui permet de désinstaller le fichier testking dusystème Debian ainsi que ses fichiers de configuration?

A. dpkg -r testkingB. dpkg --remove testkingC. dpkg --kill testkingD. dpkg -R testkingE. dpkg --purge testking

13. Quelle est le rôle de la commande suivante : rpm -Uvh fileA. le fichier rpm sera vérifierB. le paquetage installé sera mise à jour dans le fichier file avecB. le paquetage installé sera mise à jour dans le fichier file avecune sortie verbose.C. le paquetage installé sera mise à jour avec le fichier filedonnant une sortie verbose et ajoute l’état d’avancement.D. Erreur

14. Quelle commande affiche le changelog du paquetage installé “postfix”?A. rpm –Vc postfixB. rpm –qpil postfixC. rpm --changelog postfixD. rpm –q --changelog postfixE. rpm –qa --changelog postfix 74

Chap3: Périphériques & Systèmes de

fichiers Linux

1 Créer des partitions et des systèmes de fichiers

2 Maintenir l'intégrité d'un système de fichiers

3 Contrôler le montage et démontage d'un système de fichiers

4 Gérer les quotas disque

5 Permissions d'accès aux fichiers

6 Propriété des fichiers

7 Liens réels et symboliques

8 Trouver les fichiers système et maîtriser leur positionnement75

1. Créer des partitions et des

systèmes de fichiers

Objectifs

Configurer les partitions disque et créer 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 variés, incluant ext2, ext3, reiserfs, vfat, et xfs.

Key files terms and utilities include:

fdisk

mkfs

76

Page 20: Cours système d'exploitation

1.1 Partitions

Un support peut être divisé en plusieurs partitions. Les partitions sont

habituellement créées lors de l'installation, mais elles peuvent aussi être

créées avec le programme fdisk ou d'autres utilitaires. Ceci permet de

diviser le support en plusieurs partitions avec des systèmes de fichiers

séparés et où des systèmes d'opérations peuvent être installés.

Voir diapos 32

77

1.2 Systèmes de fichiers

Les systèmes de fichiers permettent d'enregistrer, re lire et de manipulerdes données sur un support. Les systèmes de fichiers maintiennent unestructure de données interne (meta-données) qui gardent les donnéesorganisées et accessibles. La structure de ces meta-donnéescaractérise un système de fichiers. On peut accéder à un système defichiers grâce à un pilote à la structure organisée des meta-données.Quand Linux démarre, il lit dans le fichier /etc/fstab la liste des systèmesde fichiers qui doivent être montés et vérifiés s'ils sont dans un étatde fichiers qui doivent être montés et vérifiés s'ils sont dans un étatinstable.Si une panne de courant survientm Linux se pourra pas démonterproprement le système de fichiers et certaines meta-données du cachene seront pas synchronisées avec le support. Les meta-donnéespeuvent être corrompues.Quand vous redémarrez le système, il détectera cela et fera avec fsckune vérification complète de la consistence de la structure des meta-données. Cela peut prendre du temps, de quelques minutes à quelquesheures, selon la taille du support.

78

1.3 Système de fichiers journalisé

Journaliser un système de fichiers ajoute une nouvelle structurede données appelée un journal. Ce journal se trouve sur ledisque, et avant chaque modification des meta-données faite parle pilote, elle est d'abord inscrite dans le journal. Avant chaquemodification des meta-données, le journal maintient un rapport(log) de la prochaine opération.Maintenant, si une panne de courant survient, il est seulementnécessaire de vérifier le journal. Un système de fichiersjournalisé est très rapide. Il a seulement besoin de lire lesrapports et de corriger la dernière opération. La récupération d'unsystème de fichiers ne prend que quelques secondes.Sur un système de cluster, la journalisation permet de récupérerrapidement une partition partagée d'un node qui s'est arrêté.

79

1.4 Systèmes de fichiers de Linux

• ext2: Ancien système de fichiers de Linux, très stable. Efficace pour lesfichiers de plus de 2 ou 3 Ko.

• ext3: Extension journalisé pour ext2. Il est possible de passer d'unsytème de fichier ext2 à ext3 et vice-versa.

• Reiserfs: Système de fichiers journalisé. De 8 à 15 fois plus rapide queext2 pour manipuler de petits fichiers.

• XFS: Un système de fichiers journalisé très puissant avec des quotas et• XFS: Un système de fichiers journalisé très puissant avec des quotas etdes ACL.

• Msdos: Système de fichiers FAT de MS-Windows.• NTFS (en lecture seulement): Système de fichiers journalisé de MS-

Windows• SMBFS: Un système de fichiers permettant de monter les partages

Windows ou Samba depuis Linux.• NFS: Network File System, système de fichiers en réseau.• ...

80

Page 21: Cours système d'exploitation

1.5 Arbre du système de fichiers

Un système de fichiers Linux a un répertoire au sommet de la

hiérarchie appelé root (/) où sont stockés tous les sous-

répertoires du système de fichiers. Les sous-répertoiresrépertoires du système de fichiers. Les sous-répertoires

peuvent être une autre partition, un répertoire distant, ou un

répertoire distant accessible par le protocole NFS.

Voir diapos 10 et 11

81

1.6 Création d'un système de fichiers

Pour créer un système de fichiers sur une partition, utilisez la commande

mkfs.

mkfs [options] -t [fstype] device [blocksize]

Options courantes :

-t [fstype] : Type de système de fichiers.

-c : Vérification de blocks défectueux sur le périfiérique avant la construction

du système de fichiers.du système de fichiers.

La partition complète sera effacée et organisée avec le type de système de

fichiers demandé. Il est possible de revenir en arrière.

Les types de systèmes de fichiers possibles sont : msdos, ext2, ext3,

reiserfs,minix, xfs

Le paramètre [blocksize] permet d'adapter la taille des blocks à vos besoins.

Exemples :

mkfs -t msdos /dev/fd0

mkfs -t reiserfs /dev/hdd1 409682

1.7 Création de systèmes de fichiers

étenduPour créer un système de fichiers étendu (ext2, ext3) sur une partition, utilisezmke2fs.mke2fs [options] device [blocksize]

Options courantes :-b : Specifie la taille des blocks-c : Vérification de blocks défectueux sur le périfiérique avant la construction dusystème de fichiers.système de fichiers.-j : Création du système de fichier avec un journal ext3-L : Définie une étiquette pour le volume du système de fichiers.

Avec mke2fs, il est possible de stocker le superblock du journal sur un autrepériférique.

Exemples:mkefs -b 2048 /dev/fd0 -L floppymkfs -Vmke2fs 1.26 (3-Feb-2002) Using EXT2FS Library version 1.263

83

1.8 Surveillance de l'utilisation du

disquePour afficher l'utilisation du disque, utilisez du.du [options] [files...]

Options courantes :-a : Tous les fichiers, pas seulement les répertoires.-b : Afficher la taille en octets.-c : Total-h : Format lisible par un être humain (1K, 20M,...).-h : Format lisible par un être humain (1K, 20M,...).

Exemples:$ du -ch Documents

112k Documents/Cours/LPI1014.0k Documents/Cours/LPI1024.0k Documents/Cours/LPI2014.0k Documents/Cours/LPI202124k total

du -sk ~ # Affiche la taille totale en kilo-octetsdu -ak ~ | sort -n more # Affiche tous les fichiers et leur taille par ordre

croissant.84

Page 22: Cours système d'exploitation

1.9 Espace disque du système de

fichiersUn système de fichiers est composé d'une structure de meta-donnéeset 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 systèmes de fichiers avec 0 blocks.-t: Limiter la liste à un type de système de fichiers.-t: Limiter la liste à un type de système 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 -hFilesystem Size Used Avail Use% Mounted on/dev/hda1 15M 3.8M 10M 27% /boot

85

2. Maintenir l'intégrité d'un système

de fichiersObjectifs

Verifier l'intégrité des "filesystems", gerer l'espace libre et les inodes, et reparerdes problémes simples sur le systeme de fichier. Cet objectif requier l'utilisation des commandes necessaires pour maintenir filesystem standard, ainsi que les données suplementaires associées avec la tenue d'un journal filesystemjournaling.

Key files terms and utilities include:Key files terms and utilities include:dudffscke2fsckmke2fsdebugfsdumpe2fstune2fs

86

2.1 Vérification des systèmes de

fichiers

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 checkall file systems. Typically used at boot time from a script. -t fslist:Specify the type of file system to be checked. With -A, onlyfilesystems that match fslist are checked -C: Displayfilesystems that match fslist are checked -C: Displaycompletion/progression bar.

Common fsck-options: -a: Automatically repair. -r: Interactivelyrepair.

Examples:fsck -t msdos /dev/fd0 -afsck -t reiserfs /dev/hda2 -r

87

Checking extended filesystems To check extended filesystemsconsistency, use e2fsck.e2fsck [options] device

Common options: -b: Use an alternate super block filename. -c:This option makes badblocks program to run and marks allThis option makes badblocks program to run and marks allthe bad blocks. -f: Force checking even if the filesystemseems clean. -a or -p: Automatically repair. -y: non-interactivemode

Examples:e2fsck -ay /dev/fd0e2fsck -f /dev/hda2

88

Page 23: Cours système d'exploitation

2.2 Déboguer les systèmes de fichiers

étendusThe debugfs program is an interactive file system debugger. It can be used to examine and

change the state of an ext2 file system.

debugfs device

Common command: Help: Give an help on all the command available. Stats: Give a statitstics of the media. Stat file: Give a statistic of the file on the media. logdump: Dump the journal's media into a file

Example:

stat haut.gif stat haut.gif

Inode: 14 Type: regular Mode: 0644 Flags: 0x0 Generation: 67558

User: 0 Group: 0 Size: 3786

File ACL: 0 Directory ACL: 0

Links: 1 Blockcount: 8

Fragment: Address: 0 Number: 0 Size: 0

ctime: 0x3ddf3840 -- Sat Nov 23 09:11:44 2002

atime: 0x3ddf3840 -- Sat Nov 23 09:11:44 2002

mtime: 0x3ddf3840 -- Sat Nov 23 09:11:44 2002

BLOCKS:

(0-3):55-58

TOTAL: 4 89

2.3 Afficher les informations d'un

système de fichiers étenduTo 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:Example:dumpe2fs -h /dev/fd0dumpe2fs 1.26 (3-Feb-2002)Filesystem volume name: floppyLast mounted on: <not available>Filesystem state: cleanErrors behavior: ContinueFilesystem OS type: LinuxInode count: 184...

90

2.4 Optimiser les systèmes de fichiers

étendusTo tune an extended filesystem, use tune2fs.

tune2fs [options] deviceCommon 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/fd0tune2fs -l /dev/fd0(Same output as dumpe2fs -h /dev/fd0)tune2fs 1.26 (3-Feb-2002)Filesystem volume name: floppyBlock count: 1440Reserved block count: 72...

91

3. Contrôler le montage et démontage

d'un système de fichiers

Objectifs

Configurer le montage d'un systeme de fichier( mounting of a filesystem).

Cet objectif inclu la capacité à manuellement monter et démonter des

systemes de fichiers, configurer le filesystem monté au démarage, 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

Page 24: Cours système d'exploitation

3.1 Monter un système de fichiersThe 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./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 modewithout updating /etc/mtab.mount /media/cdrom mount /dev/cdrom # Allow a user to mount the CDROM ifthe following line is in /etc/fstab:/dev/cdrom /media/cdrom iso9660 ro,user,noauto,unhidemount -o sync /dev/sdb1 /mnt/usb # Sync in realtime

93

3.2 Démonter un système de fichiers

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.– 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 theCDROM if the following line is in /etc/fstab:/dev/cdrom /media/cdrom iso9660 ro,user,noauto,unhide

94

3.3 Informations sur un système de

fichiers

The file /etc/fstab contains all the file sytems and related information thatwill be used when doing a mount -a. (Boot time)

The file /etc/mtab is maintained by the kernel and keeps track on what is ornot mounted. The /etc/fstab format is:#device dir destination fs options 1 2/dev/hda3 / reiserfs defaults 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 0usbdevfs /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: Alloperations will be done asynchronously. default: rw, suid, dev, exec,auto, nouser, and async.

95

4. Gérer les quotas disque

ObjectifsGérer les quotas disque pour les utilisateurs. Cet objectif inclut la mise en place d'un quota disque pour un système de fichiers pour éditer, vérifier et produire des rapports sur les quotas utilisateurs.

Key files terms and utilities include:quotaedquotaedquotarepquotaquotaon

– Managing quotas for filesystems– Printing quota reports– Managing disk quota

96

Page 25: Cours système d'exploitation

4.1 Quotas

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 =)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.

97

4.2 Créer des quotas pour les

utilisateurs

1) The keyword usrquota or/and grpquota must be added in file /etc/fstab for thepartition 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.usertouch /home/aquota.usertouch /home/aquota.groupchmod 600 /mnt/aquota.userchmod 600 /home/aquota.userchmod 600 /home/aquota.group

Only root can do the quota administration and once the empty files have beencreated 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.

98

3) Check the settingquotacheck -v mntquotacheck: Scanning /dev/fd0 [/home/yann/mnt] donequotacheck: Checked 6 directories and 1 files

4) Enable quota on the diskquotaon -av/dev/fd0 [/home/yann/mnt]: user quotas turned on

5) Customize the disk quota limits:$ edquota -u yannDisk quotas for user yann (uid 500):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 -tGrace period before enforcing soft limits for users:Time units may be: days, hours, minutes, or secondsFilesystem Block grace period Inode grace period/dev/fd0 7days 7days

99

4.3 Afficher les quotasTo 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 whereusage is over quota.

Example:quota -u yann

Display a quota report To display a quota report, use repquota.repquota [options] [user|group]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: 7daysBlock limits File limits

User used soft hard grace used soft hard grace----------------------------------------------------------------------------------------------------------------------------root -- 8 0 0 2 0 0yann -- 15 0 0 4 0 0 100

Page 26: Cours système d'exploitation

5. Permissions d'accès aux fichiers

ObjectifsContrôler les accés aux fichiers à travers les permissions. Cet objectifinclut les permissions d'accés pour les fichiers ordinaires ou spéciauxainsi que les répertoires. Est aussi compris les modes d'accés tel quesuid, sgid, et le sticky bit, l'utilisation du champ group pour autoriserl'accés de groupes de travail à un fichier, le immutable flag, et mode decréation de fichier par défaut.création de fichier par défaut.Unix File Security File and Directory Permissions Default PermissionsChanging File Permissions Changing File Owner and Group MorePrivileges Unix file security The biggest security problem may be you.You own any directory or files you created. You are responsible foraccessibility of your files. You decide who can access which files anddirectories.In your home directory you will be able to grant different levels ofpermission to yourself, users in your group and the all other users.

101

5.1 Permissions des fichiers et des

répertoires

The permission of a file or of a directory can be viewed with ls -l.

File permissions

Examples of file permissions:

ls -l readme

-rwxrw---- 1 toto users 14 Jul 5 10:00 readme

This means read,write, and execution permissions for user toto, read andThis means read,write, and execution permissions for user toto, read and

write permissions for members of group users. No permissions for

others. (0760)

ls -l /etc/hosts

-rw-r--r-- 1 root root 14 Jul 5 10:00 /etc/hosts

This means read and write permissions for user root, read permissions for

members of group root and all others. (0644)

102

Examples of directory permissions:

ls -ld /bin

drwxr-xr-x 2 root root 4096 Jul 5 10:00 /bin

This means read,write, and execution permissions for user root, read

and execution permissions for members of group root and others.

(0755)(0755)

ls -l /home/toto

drwxr-xr-x 10 toto users 4096 Jul 5 1:00 /home/toto

This means read, write, and execution permissions for user toto, read

and execution permissions for members of group users and others.

(0755)

103

5.2 Permissions par défautThe default permissions when creating a file are 0666 and when

creating a directory are 0777. Most of the systems overwrite thisat boot time with the program umask. Generally the mask value is022. It means the write for group and other will be blocked. Tocheck or change the mask value, do:umaskumask 066umask 066

Examples for file:default: rw- rw- rw- (0666)umask: 0 2 2 (0022) Blockresult: rw- r-- r-- (0644)

Examples for directory:default: rwx rwx rwx (0777)umask: 0 2 2 (0022) Blockresult: rwx r-x r-x (0755)

104

Page 27: Cours système d'exploitation

5.3 Changer les permissions des

fichiers

To change permissions on a file or directory, use chmod. To overwrite theexisting permissions, do:chmod 0755 /tmp #rwx for user, rx for group and others

To change add or cancel some permissions without overwriting all theexisting permissions, do:chmod u+w readme # Add write permission for userchmod u+w readme # Add write permission for userchmod +r readme # Add read permission for everybodychmod -r readme # Remove read permission for everybodychmod u+x,g=r readme # Add execution for user and set read for groupchmod 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

6.Propriété des fichiers

Objectifs

Contrôler les droits des utilisateurs et et des groupes sur les fichiers.

Cet objectif inclut la capacité à modifier la propriété utilisateur et

groupe sur un fichier aussi bien que le propriétaire par defaut de groupe sur un fichier aussi bien que le propriétaire par defaut de

fichiers nouvellement créés.

Key files terms and utilities include:

chmod

chown

chgrp

106

6.1 Changer le propriétaire et le

groupe d'un fichier

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.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 groupgpasswd -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 privilèges

It is possible to give more privileges to an user when it executes aparticular 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 ownerof the file not the permissions of the user. To set the effective uidor 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 textsegment resident in RAM. chmod 1640 [file] (1) The file programstays in RAM.

108

Page 28: Cours système d'exploitation

7. Liens réels et symboliques

Objectifs

Créer et gérer des liens symboliques ou réels vers un fichier. Cet

objectif inclut la capacité à créer et identifier des liens, à copier des

fichiers à travers ces liens, et à utiliser les liens vers des fichiersfichiers à travers ces liens, et à utiliser les liens vers des fichiers

dans les tâches d'administration système.

Key files terms and utilities include:

ln

109

7.1 Liens

Use link when: You want to create a pathname to a file Set a shorter or fixedpathname to a file To link one file to another, use ln.

ln [options] filename linknameln [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 hardlink can only be created to an existing file on the same physical deviceand no visible association can be displayed between a link name and afile name. A symbolic link can be created on a file that doesn’t exist yetand can be viewed with the ls command.

110

7.2 Lier un fichier

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/midilrwxrwxrwx 1 root root 6 Jul 4 21:50 /dev/midi -> midi00

Hard link are indicated with the number of link.

$ ls/readmelrwxrwxrwx 3 yann users 677 Jul 4 21:50 readme

When removing a link name, use rm. Only the link will be removednot the linked file.

111

8. Trouver les fichiers système et

maîtriser leur positionnement

Objectifs

Familiarisés avec la Hierarchie Standard du système de

fichiers, incluant la localisation habituelle des fichiers et lesfichiers, incluant la localisation habituelle des fichiers et les

classifications de répertoires. Cet objectif inclut la capacité de

trouver les fichiers et les commandes sur un systeme Linux.

112

Page 29: Cours système d'exploitation

Exemple de questions

1. Pour formater une partition, vous utilisezA. disk druidB. fdiskC. mkfsD. fsck

2. Quelles commandes permettent de tester un système de fichiers formaté enext3?

A. fsck.ext3A. fsck.ext3B. fsck –t ext3C. tune2fs –jD. e3fsck

3. Quelle commande montre l’occupation d’un répertoire /usr/xxx?A. du –s /usr/xxxB. df –h /usr/xxxC. ls –iR /usr/xxx

4. La commande permet de vérifier les quotas d’un utilisateur.

113

5. La commande locateA. fonctionne comme find mais avec des options différentesB. est plus efficace que find car elle utilise un indexC. permet de changer la langue par défaut de linux

6. Pour rechercher un fichier texte d’un utilisateur sur votre disque, vousutilisez

A. locateB. whereisC. who

114

D. find6. Comment obtenir de l’information sur une commande et effectuer une

recherche par mots-clefs?A. whoamiB. whatisC. aproposD. which

7. Quels droits devrait avoir le fichier /usr/bin/passwd?A. 4511B. 6400C. 4222

8. Quelle commande est lancée au démarrage du systèmesur toutes les partitions contenues dans /etc/fstab

A. mkfsB. fsck

115

B. fsckC. chksumD. verify

9. La commande ln –s permetA. de créer un lien symboliqueB. de mettre à jour les librairies du systèmeC. de faire une sauvegarde d’un fichier

Exercice1 :

Déterminer les types et les droits d’accès de chaque utilisateur pour chaque entrée :

– rwx – – – – – – essai

– rw – r – – r – – resume.txt

d rwx r – x – – – achats

d rwx r – x – – x bilan

l rwx rw – rw – raccourci

p rw – rw – rw – communication

Exercice2 :

$ whoami$ whoami

ali

$ ls -l

-rwx --- --- l med etudiants 120 Oct 10 10 :13 codage

-r-x r-- r-- l ali etudiants 210 Oct 10 11 :13 pgcd

dr-- --- --- l ali etudiants 212 Oct 10 12 :30 reserve

-rwx r-- r-- l ali etudiants 120 Oct 10 13 :13 resume.txt

- --- --- --- l ali etudiants 120 Oct 10 14 :13 secret.txt

d--- --- --- l ali etudiants 120 Oct 10 15 :13 vide

drwx --x –x l med etudiants 120 Oct 10 16 :13 bilan116

Page 30: Cours système d'exploitation

Que font les commandes suivantes? Fonctionnent – ell es ? 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 :Créer un répertoire « Inter » sous votre répertoire personnel. Quels sont les droits d’accès de Créer un répertoire « Inter » sous votre répertoire personnel. Quels sont les droits d’accès de

« Inter » ?Modifier les permissions d’accès sur « Inter » de façon qu’il soit accessible pour tout le monde.Utilisez la notation symbolique pour permettre tous les droits au propriétaire (concernant le répertoire

« inter ») et les refuser à tous les autres.Créer un fichier « Essai » et modifier ses droits de la façon suivante :rw – rw – r – –rw – – – – – – –– w x – – x – – x r – xr – – – – –r – – r – – r – –

117

Vérifier l’état après chaque modification en utilisant la commande « ls -l »Créer un répertoire « RepTest » et un fichier « FileTest » dans ce répertoire.

Modifier les droits d’accès du répertoire RepTest selon les droits proposés etessayer après chaque modification de passer dans le répertoire (cd), lancer lacommande ls dans RepTest , lire le contenu de FileTest et essayer de créer unrépertoire dans RepTest.

Les droits de l’utilisateur seront les suivants :rwxrw –r – x– wx– wxTrouver le masque positionné.Modifier le de façon à avoir les droits suivants pour les fichiers nouvellement créer :

r – – r – – – – –Quels seront alors les droits aux répertoires ?Exercice4 :Créer un répertoire dont le droit d’accès est 611.Créer un fichier dont le droit d’accès est 644.Créer un répertoire dont le droit d’accès est 755.Créer un répertoire dont le droit d’accès est r –x – – – – – – 118

Chap4: GNU et commandes Unix

1 Unix et Linux2 Travailler en ligne de commande3 Exécution de flux de textes en utilisant des filtres4 Gestion de base des fichiers5 Utiliser les streams, pipes, et redirections5 Utiliser les streams, pipes, et redirections6 Créer, surveiller et terminer des processus7 Modifier les priorités d'exécution des processus8 Expressions régulières9 Effectuer les modifications de base des fichiers avec vi

119

1. Unix et Linux

ObjectifsUnix est l'OS original d'Internet. NFS, TCP/IP, RPC, ... ont été développés sur et

pour Unix. Unix est en fait une spécification de ce que doit être ce genre d'OS. Ilen existe plusieurs implémentations. Citons pour l'exemple AIX d'IBM, HP-UXd'HP, Solaris de Sun, ou les *BSD. Linux est une implémentation Unixentièrement réécrit par Linus Torvalds et son équipe de développeursvolontaires répartis sur l'ensemble de la planète et mis en contact grâce àInternet. Unix comme Linux sont : Portable, multi-utilisateurs, multi-tâches,Internet. Unix comme Linux sont : Portable, multi-utilisateurs, multi-tâches,rendu indépendants des périphériques d'entrées et de sorties, capables degérer les ressources matérielles, d'une grande performance, sécurisés, équipéd'une ligne de commande puissante et d'une interface graphique.

Linux est compatible avec la norme POSIX et supporte d'autres API standardcomme BSD ou SVR4 Linux possède toutes les fonctionalités que l'on peutattendre d'un Unix moderne, dont le multi-tâche, multi-utilisateurs, mémoirevirtuelle, librairies partagées, chargement à la demande, shared copy-on-writeexecutables, gestion propre de la mémoire et utilisation de TCP/IP pour leréseau.

De plus en plus d'entreprises sélectionnent Linux pour ses performances, son coutfaible et l'absence de royalties. 120

Page 31: Cours système d'exploitation

1.1 Unix et Linux

Unix est l'OS d'origine d'Internet. Il a été développé en 1970 auxlaboratoires A&T Bell Labs. Il a ensuite été distribué gratuitementnotament aux gouvernements et aux universités. Divers organismes ensupporte différentes distributions :– System V– BSD– SCO– SCO

La plupart des Unix sont soumis à des licences de copyright.Linux a été diffusé pour la première fois par Linux Torvalds en 1991.Son modèle de développement est libréré du droit d'auteur. Il adopte lalicence GPL créée par Richard Stallman quelques années auparavant.Richard Stallman est également à l'origine du projet GNU, sans lequelLinux ne servirait pas à grand chose. Certaines personnes préfèrentainsi parler de système GNU/Linux. Linux implémente la plupart descommandes system V, BSD et Unix.

121

1.2 Se logger et se délogger

Entrer dans une session est le premier pas pour accéder à un système Linux.Vous avez besoin d'un identifiant (ID) et d'un mot de passe pour pouvoircommencer à utiliser le système. L'identifiant "root" est l'identifiant du super-utilisateur qui a tous les privillèges et n'est normalement assigné qu'àl'administrateur du système. Lorsque l'on a réussi à entrer dans le système,quelques variables d'environement vont être initialisées et le shell assigné aucompte correspondant à l'identifiant sera lancé.Exemples de variables initialisées au loggin: $HOME, $SHELL, $PATH, etExemples de variables initialisées au loggin: $HOME, $SHELL, $PATH, etd'autres. En modifiant le fichier /etc/login.defs, l'administrateur peut réglerquelques paramètres du logging et les variables pour tous les utilisateurs.Comme par exemple:UID_MIN 500UID_MAX 60000UMASK 022ENV_PATH /usr/local/bin:/usr/bin:/binPour sortir, utilisez les commandes exit ou logout.

122

1.3 Mot de passe

Personne ne peut voir votre mot de passe, même l'administrateur. Pourchanger votre mot de passe d'utilisateur ou de groupe, utilisez passwd.passwd [options]

Options courantes: -l, -u : bloque et débloque un compte. -g [| r]: Utilisépour les groupes. -g défini un mot de passe pour le groupe, et -r leremplace. -x|n : Nombre de jours maximum et minimum pendant lequelremplace. -x|n : Nombre de jours maximum et minimum pendant lequelun mot de passe reste valide.

En règle générale, un mot de passe doit:– avoir une longueur minimale.– ne contenir aucun mot du langage courant.– Contenir des caratères alphanumériques– Contenir un mélange de lettres majuscules et minuscules.

123

1.4 Information sur les utilisateurs

Une ligne est définie 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/bashbin:x:1:1:bin:/bin:/bin/bashdaemon:x:2:2:Daemon:/sbin:/bin/bashyann:x:500:100:Yann Forget:/home/yann:/bin/bashyann:x:500:100:Yann Forget:/home/yann:/bin/bashLe 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édéfini. Le ! devant le mot de passe crypté veux dire que le compte est bloqué.

124

Page 32: Cours système d'exploitation

1.5 Information sur les groupes

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:rootbin:x:1:root,bin,daemondaemon:x:2:video:x:33:yannvideo:x:33:yann

Le format de /etc/gshadow est:root:*:root:rootbin:*:root:rootdaemon:*:root:rootvideo:*:root:root,yann

Les mots de passe pour les groupes ne sont pas souvent implémentés caril faut passer un membre du groupe pour en changer ...

125

1.6 Commandes variées

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 quel'identifiant de l'utilisateur.

Exemple:$ iduid=0(root) gid=0(root) groupes=0(root), 1(bin), 14(uucp), 15(shadow),16(dialout)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 totopasswd:

126

1.7 ShellUn shell est un interpréteur de lignes de commandes qui :

– attends les commandes (en affichant ce qu'on appelle l'invite)– Les interprète (ceci inclus les redirections d'entrée-sortie, les tuyaux, la génération de nom

de fichiers, etc...)– les exécute– exécute des langages de script

IL y a plusieurs shells populaires :– sh: Bourn shell, le shell de scripts standart.– csh: Berkley shell, permet le contrôle de tâches, l'historique des commandes, les alias ...– csh: Berkley shell, permet le contrôle de tâches, l'historique des commandes, les alias ...– ksh: Korn shell, Les syntaxes du Bourn avec les fonctionalités 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 sonenvironement.

Pour le bash, la variable du prompt est PS1Pour le bash, les fichiers utilisés pour la personnalisation de l'environnement sont:.bashrc exécuté à chaque nouvelle session bash..bash_profile exécuté à la connextion au shell..bash_logout exécuté à la sortie du shell. 127

2. Travailler en ligne de commande

ObjectifsIntéragir avec les shells et les commandes en utilisant la ligne de commandes. Cet objectifinclus l'introduction de commandes et de séquences de commandes valides, la définition, laréférence et l'exportation de variables d'environement, l'utilisation de l'historique et des facilitésd'édition, l'invoquation de programmes dans et en dehors du chemin, l'utilisation descommandes de substitution, l'application récursive des commandes dans l'arbre desrépertoires, et l'utilisation de la commande man pour trouver des informations sur lescommandes.

fichiers clés , termes et utilitaires :. / source. / sourcebashechoenvexecexportmanpwdsetunset~/.bash_history~/.profile 128

Page 33: Cours système d'exploitation

2.1 Ligne de commande

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 > savecat ../readme helpme > save

more /etc/passwd /etc/hosts /etc/group

find . -name *.[ch] -print

date "+day is %a"

On peut mettre des lignes de commandes dans un fichier, de manière à obtenir un script.

Pour afficher une chaine de caractères 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

2.2 Shells et Bash

L'ordre de précédence des différentes sources lorsque vous entrez une commande dans le shell sont :– Les alias.– Les mots clés comme if, for et more.– Les Fonctions.– Les "Built-ins" comme cd, type, et kill.– Les scripts et les programmes exécutables présents dans les chemins listés – Les scripts et les programmes exécutables présents dans les chemins listés

dans la variable d'environement PATH.Pour connaitre la source exacte d'une commande, utiliser :

$ type killkill is a shell builtin

Ce qui est différent de :/bin/kill

Pour lister l'ensemble des commandes "built-in", utilisez l'aide.

130

/bin/bash peut-être invoqué à l'ouverture d'une session ou explicitement par un

utilisateur. A l'ouverture, les fichiers scripts suivants sont utilisés :

– /etc/profile fichier du système par défaut.

– $HOME/.profile s'il existe.

– $HOME/.bash_profile s'il existe

– /etc/bash.bashrc s'il existe

– $HOME/.bashrc s'il existe– $HOME/.bashrc s'il existe

Lorsqu'un utilisateur invoque explicitement le shell bash, les fichiers suivants sont

exécutés : /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'opérations exécutées 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 Découvrir /bin/bash

Chaque fois que vous exécutez un nouveau programme, une nouvelle tâche est

créée. Quand le programme se termine, la tâche se termine aussi et vous

retrouvez le prompt en retour. Vous pouvez faire tourner le programme en

arrière plan en ajoutant le caractère "&" apres la commande :

monscript &

Dans certaines situations, il est également possible d'utiliser le contexte de la tâche

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

réutilisation de la tâche Bash dans laquelle il est démarré.

exec login

132

Page 34: Cours système d'exploitation

2.4 Variables du ShellToutes 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é déclarée.

Pour déclarer 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 déclarer une variable qui sera vue par les autres shells, utilisez export.$ export MAVARIABLE=SAVALEUR

ou,$ MAVARIABLE=SAVALEUR$ export MAVARIABLE

Quelques varaibles importantes :HOME : répertoire utilisateur de celui qui s'est connecté.PATH : chemin de recherche des commandes.

133

2.5 Man pages

Les manuels en ligne décrivent la majorité des commandes disponibles sur

votre système.

$ man mkdir

$ man cal

Si vous cherchez un mot clé dans toutes les man pages, utiliser l'option -k, ou

la commande apropos.la commande apropos.

$ man -k compress

$ apropos compress

La variable MANPATH contient les répertoires où les man pages sont stockées.

$ echo $MANPATH

/usr/local/man:/usr/share/man:/usr/X11R6/man:/opt/gnome/man

134

3. Exécution de flux de textes en

utilisant des filtres

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….

135

3.1 Correspondance de chaîne et

jokers

Le joker est un mécanisme de correspondance de chaîne pour la génération denoms de fichiers. L'objectif du joker est d'accroître la productivité : Localiser lesfichiers dont vous ne vous souvenez pas. Localiser les fichiers qui ont quelquechose en commun. Travailler avec un groupe de fichiers plutôtqu'individuellement.

Le shell interprête ces caractères spéciaux :Le shell interprête ces caractères spéciaux :! @ # $ % ^ & * ( ) { } [ ] | \ ; ~ ' " ` ?

Les caractères utilisés pour les jokers sont :? * [ ] ~

Si vous utilisez un caractère joker, le shell va essayer de générer un fichier.Essayez la commande suivante :

echo all files *

136

Page 35: Cours système d'exploitation

3.2 Caractères joker speciaux? correspond à n'importe quel caractère (une et une seule fois).

* n'importe quel caractère (zéro ou plusieurs fois)

[abcfghz] un caractère parmi le jeu indiqué

[a-z] Un caractère dans une série

[!x-z] Pas dans cette série

~ Répertoire personnel

~utilisateur Répertoire personnel de "utilisateur"

Exemples:Exemples:

? Seulement un caractère

[aA]??? Quatre caractères, en commençant par a ou A.

~toto chemin du répertoire personnel de toto

[!0-9]* Toute chaîne qui ne commence pas par un chiffre.

Que font ces commandes?

ls [a-z][A-Z]??.[uk]

ls big*

ls a???a

ls ??*137

2.3 Shell et jokersUne commande shell peut être une commande simple ou complexe.

ls -l [fF]*ls *.c | morels -l [a-s]* | mail `users`

La première activité du shell est d'interprêter les jokers. Seulement le shell interprête les jokers sansguillemets.

2.4 Guillemets et commentaires2.4.1 GuillemetsUtiliser des guillemets pour que le shell n'interprête pas les caractères spéciaux et ne transforme

plusieurs mots en commandes shell.'chaîne' Presque tout dans les guillements est litéral :echo 'Il le fait, "Pourquoi ?"'echo 'Il le fait, "Pourquoi ?"'echo 'Parce que "#@&^:-)"'echo '$VAR='Moi"chaîne" Comme 'chaîne' mais interprête $, \, !echo "Que s'est-il passé ?"echo "Je ne sais pas mais lisez cette $REPONSE"

L'antislash \ traîte le caractère suivant comme litéral :echo \$VAR=Moiecho Que s\'est-il passé \?

Comment afficher l'antislash ?echo \\

138

2.4.2 CommentairesVous pouvez ajouter des commentaires sur une ligne de commande ou dans un

script. Utiliser le caractère #. Un espace doit immédiatement précéder #.Exemples:

echo $HOME # Print my Home directoryecho "### PASSED ###" # Only this part is a commentecho The key h#, not g was pressed.

Commandes• cat, tac: Concatene des fichiers et affiche le résultat sur la sortie standard.• head, tail: Renvoie sur la sortie standard la première (respectivement) la• head, tail: Renvoie sur la sortie standard la première (respectivement) la

dernière partie des fichiers passés en argument.• nl: Renvoie le nombre de lignes des fichiers passés 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 filesTo concatenate files, use cat.

cat [options] [files...]tac [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 afile

140

Page 36: Cours système d'exploitation

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 newdata 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:rightjustified, 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 zero-completed 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: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 filesTo 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 theend of the line for each line of file.cut -f 1,3 -d: /etc/passwd # Extract the username and ID of each linein /etc/passwd.

The default delimiter is TAB but can be specified with -d.

143

2.5 Characters convesionTo translate the stdin to stdout, use tr.

tr [options] SET1 SET2Common options: -d: delete character in SET1. -s: replace sequence of character in

SET1 by one.Examples:

tr ‘a‘ 'A' # Translate lower a with Atr ‘[A-Z]’ ‘[a-z]’ # Translate uppercase to lowercasetr -d ‘ ‘ # Delete all spaces from file

To convert tabs to spaces, use expand and to convert spaces to tabs, useTo convert tabs to spaces, use expand and to convert spaces to tabs, useunexpand.

expand fileunexpand file2.6 Lines manipulationTo 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

Page 37: Cours système d'exploitation

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 filesuniq -cd file # Display the number of duplicated line. Splitting filesTo split big files, use split.

split [options] fileCommon 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.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 -rsort file -ro result

Binary file dumpTo dump a binary file, use od.

od [options] fileThe 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.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 01010001 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 00280000060 032 \0 031 \0 006 \0 \0 \0 4 \0 \0 \0 4 200 004 \b 001a 0019 00060000 0034 0000 8034 0804

147

4. Gestion de base des fichiers

ObjectifsEtre en mesure d'utiliser les commandes de base UNIX pou copier, déplacer, et retirer des fichiers et des directory. Ces taches regroupent les opérations avancées de gestion de fichier tel que la copie recursivede fichiers multiples, retirer des directory recursivement, et deplacerdes fichiers qui rencontre " a wildcard pattern". Cela inclus d'utiliser les spécifications simples et avancés de "wildcard" pour se referer aux spécifications simples et avancés 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, touchfile globbingcp: Copy files and directories. ls: List directory contents.

148

Page 38: Cours système d'exploitation

4.1 Créer et supprimer des répertoiresTo 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 binmkdir -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 Copier des fichiers et des

répertoiresPour copier une fichier en un autre, ou vers un répertoire, utiliser la commande cp.

cp [options] source targetSource et target peuvent être un fichier ou un répertoire.

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] /tmpcp readme readme.origcp ls /bincp -ri bin/* /bin

150

4.3 Déplacer et renommer des fichiersPour renommer un fichier, un répertoire ou pour déplacer un fichier ou un répertoire

vers un autre endroit, utilisez mv.mv [options] source target

Source et target peuvent être un fichier ou un répertoire.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 informationsThe 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, includinghidden; -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 fichiersThe long format means:

ls -l /etc/hosts #List a long format of the file hosts-rw-r—r-- 1 root root 677 Jul 5 22:18 /etc/hosts

4.6 Contenu des fichiers et emplacementLinux/Unix does not distinguish file by filename extension, like Windows. To

determine the file content use file.file /etc .bashrc /bin/ls /dev/cdromfile /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, usetype, and use which to find its location

152

Page 39: Cours système d'exploitation

4.7 Créer et utiliser des fichiersLes noms de fichiers peuvent être créé avec les redirections I/O :

cat chapter1 chapter2 > bookUn éditeur comme vi :

vi mynewfilePlein d'utilitaires UNIX :

cp file newfileUne application

netscapeLa commande touch, qui créée des fichiers videsLa commande touch, qui créée des fichiers vides

touch memoUn nom de fichier valide :

a maximum 255 caractèresdoit respecter la casse (majuscules, minuscules,...)peut comporter tous les caractères sauf l'anti-slash '\'

Recommended alphanumeric characters as well as plus, minus, and underscorecharacters.

153

4.8 Supprimer des fichiers et des répertoires

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 * .*

154

4.9 Trouver des fichiers dans le sous-répertoire d'une arbo rescence

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 thesubtree.

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)-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 ndays -n means been accessed the last ndays.

-mtime [+-]# # Modified days ago

-perm nnn # Has permision flags nnn

155

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 \;

156

Page 40: Cours système d'exploitation

4.10 whereis and whichTo 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 hostwhereis hosthost: /usr/bin/host /etc/host.conf /usr/share/man/man1/host.1.gzwhereis -m hosthost: /usr/share/man/man1/host.1.gz

To locate a file located somewhere defined by the PATH variable, use which.which -a ls/bin/lsThe -a will look for all possible matches in PATH, not just for the first one.

157

5. Utiliser les streams, pipes, et

redirectionsObjectifs

Etre en mesure de rediriger les flux(streams) et de les connecter de façon à effectuer avec efficience des données 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'entrée 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 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:teexargs<<<>>>|` `

158

5.1 Entrée et sortie standardFor each command executed in a terminal, there are: a standard input value 0.

(default keyboard) a standard output value 1.(default terminal) and a standardoutput 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 readsstandard input from file. [n]> file: Default value is 1 and it sends standard outputto file. (clobber) [n]>>file: Default value is 1 and it appends standard output tofile. <<word: Read standard input until word is reached. `command`: Substitutethe 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 isredirected to list.cat `ls /etc/*.conf` > conffile 2>>/tmp/errors 159

Concatenate all the configuration files from /etc dir in conffile and append errors infile /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 ofcommand2. The standard error is not piped.

Examples:ls -l /dev | morels -l /etc/*.conf | grep user | grep 500ls -l /etc/*.conf | grep user | grep 500ls -l /bin | mail `users`

To redirect the standard output to a file and to the terminal at the same time, usetee.ls -l /dev | tee filels -l /etc | tee -a file # Append to the file Building arguments

160

Page 41: Cours système d'exploitation

The xargs utility constructs an argument list for a command usingstandard input.xargs [options] [command]

The xargs command creates an argument list for command fromstandard input. It is typically used with a pipe.

Common options: -p: prompt the user before executing eachcommand.

Examples:ls f* | xargs cat # Print to standard output the content of all filesstarting with f.find ~ -name 'proj1*' print | xargs cat

Search in the Home directory for files starting with proj1 and sendit 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/nullgrep try /etc/* > /dev/null 2> /dev/null

161

6. Créer, surveiller et terminer des

processusObjectifs

Gerer les processus. Cela comprend la compréhension de la façon d'executerun 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 aprés le logout. Les taches comprennent aussi la gestion des processus actifs, en selectionnant et triant les processus pour visualisation, en 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 arretés alors que la session X est close.

Key files terms and utilities include:&bgfgjobskillnohuppstop

162

6.1 Créer des processus

A running application is a process. Every processes have: A process ID. A parentprocess ID. A current directory PWD. A file descriptor table. A program which it isexecuting. 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 youexecute a command in a shell a new process is created. Except for the buil-inshell command. They run in the shell context. Use type to check if a commandis a built-in shell command.

Example type cp ls which type Monitor processes Once the system is up andrunning from a terminal it is possible to see which processes are running withthe 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 TIME CMD

004 S 0 1 0 0 80 0 - 112 do_sel ? 00:00:04 init

044 R 0 1524 1222 0 79 0 - 761 - pts/3 00:00:00 ps163

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 free120488K cached

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND

1517 rarrigon 0 0 40816 39M 17372 R 15.0 16.0 2:59 mozilla-bin

1727 rarrigon 19 0 988 988 768 R 0.3 0.3 0:00 top1727 rarrigon 19 0 988 988 768 R 0.3 0.3 0:00 top

1 Root 20 0 220 220 188 S 0.0 0.0 0:04 init

2 root 20 0 0 0 0 SW 0.0 0.0 0:00 keventd

RSS: The total amount of physical memory used by the task. SHARE: The amountof 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 alsopossible to execute interactive commands: Type N to sort tasks by pid. Type Ato sort tasks by age (newest first). Type P to sort tasks by CPU usage. Type Mto sort tasks by memory usage. Type k to kill a process (prompted for pid).

164

Page 42: Cours système d'exploitation

6.3 Terminer des processusThe 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 tocontinue 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. UseCTRL+Z to suspend it.

To start a process in backgroud use the &.bash &xeyes &

Job controlJob controlIn a bash process it is possible to start multiple jobs. The command to manipulate jobs are:

jobs # List all the active jobsbg %job # Resume job in backgroundfg %job # Resume job in foregroundkill %job # Kill background job

When bash is terminated all processes that have been started from the session will receive theSIGHUP 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

165

7. Modifier les priorités d'exécution

des processus

Objectifs

Gerer les priorités d'execution des processus. Ces taches incluent de lancer un programme avec une priorité haute ou basse, de déterminer la priorité d'un processus et le changement de priorité d'un processus en cours.

Key files terms and utilities include :nicenicepsrenicetop

166

7.1 PrioritésPour démarrer une commande avec une priorité donnée, utilisez la

commande nice .• nice -n +2 [command]• nice -n -19 [command]

The program nice changes the base time quantum of the scheduler. Les 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 défaut est 0. Seul le superutilisateur root peut donner une priorité négative (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. Expressions régulières

ObjectifsManipuler des fichiers et des données textes en utilisant les expressions réguliéres. Cet objectif inclu la création simple d'expression réguliérescontenant plusieurs éléments d'écriture. Ceci inclu aussi l'utilisation réguliére d'outils pour réaliser des recherches à travers un filesystem ou le contenu d'un fichier.

Key files terms and utilities include:Key files terms and utilities include:grepregexpsed

168

Page 43: Cours système d'exploitation

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 grepTo 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 linenumber -v: Must not match.

Examples:grep host /etc/*.confgrep host /etc/*.confgrep -l '\<mai' /usr/include/*.hgrep -n toto /etc/groupgrep -vc root /etc/passwdgrep '^user' /etc/passwdgrep '[rR].*' /etc/passwdgrep '\<[rR].*' /etc/passwd

170

8.3 sedTo 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 areregular expressions. The sed program is a noninteractiveediting tool.

Examples:sed '1,3s/aa/bb/g' file # Replace in file from line 1 to 3 aa bybb.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 wordsmaison by house excluding lines from ll to ff.

171

9. Effectuer les modifications de base

des fichiers avec viObjectifs

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,lG, H, Li, c, d, dd, p, o, aZZ, :w!, :q!, :e!:!

172

Page 44: Cours système d'exploitation

9.1 viWhen using X-Windows, you can use mouse oriented editors such as xedit. In

a cross-development environment, users use their favorite editor. On a non-windowing system, you only need a keyboard editor such as vi. The vi editoron 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 fileTransition 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 startingmode is the Command mode The file configuration .exrc can be created inyour HOME directory to setup some vi behavior.set ignorecase # No case-sensitiveset tabs=3 # 3 space for tab character Perform basic file editing using vi

173

Enter Input Mode• i before cursor• a after cursor• o open line belowDelete• dw delete word• dd delete line• D delete to end of line• x delete char at cursorMove cursorMove 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

Exercices

1. Quelle est la commande qui permet d’afficher la liste des processus associésà votre terminal. Quelle est la commande qui permet d’afficher la liste desprocessus dont vous êtes propriétaire. Quelle est le rôle des options -l et -f. Àquoi correspondent les colonnes PID et PPID ?

2. Lancez une commande longue en arrière plan. Quel est le comportement duprocessus associé lorsqu'il reçoit les signaux suivants :

1. sigkill (9)2. sigstop (23)2. sigstop (23)3. sigcont (25)

3. Utilisez la commande nice pour lancer des commandes ayant une faiblepriorité.

4. Interprétez la hiérarchie des processus qui vous appartiennent.5. La commande ps | wc compte deux processus en plus de ceux qui existent

réellement lorsqu'on lance la commande. Pourquoi ?6. Donner deux commandes pour reprendre l'exécution d'une instruction

interrompue par un ^Z.

175

Chap5:X Window

1 Installer et Configurer XFree86

2 Installer un gestionnaire d'affichage

3 Installer & configurer un gestionnaire

d'environnement graphique

4 X en réseau

176

Page 45: Cours système d'exploitation

1. Installer et Configurer XFree86Objectifs

Configurer et installer un serveur X et un serveur de polices. Cet objectifregroupe la vérification du support de la carte video et du moniteur par leserveur X, ainsi que l'adaptation des réglages de X pour la carte et lemoniteur. Cela inclut aussi l'installation des polices, d'un serveur de polices etde configurer X pour l'utilisation du serveur de polices (ce qui demande demodifier manuellement /etc/X11/XF86Config dans la section "Files").modifier manuellement /etc/X11/XF86Config dans la section "Files").

Fichiers , termes et commandes principaux inclus :

XF86Setup xf86config xvidtune /etc/X11/XF86Config .Xresources X est unsystème de fenêtrage qui fournit les fonctions graphiques de base pour Linux.Conçu pour fournir une GUI (Graphic User Interface) à n'importe quel autresystème à travers un réseau, quel que soit le Système d'Exploitation. Reposesur le modèle client/serveur. X n'est pas un module de l'OS. C'est uneapplication. Le serveur X standard de Linux est Xfree86. Le fichier de tracesdu 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 matériel et générerautomatiquement un fichier de configuration correspondant à votre matériel. Cependant,pour les souris PS/2, on a souvent besoin de modifier ce fichier de configurationmanuellement, de ""Device" "/dev/mouse"" jusqu'à ""Device" "/dev/psaux""

1.2 Démarrer et arrêter X

Pour démarrer X, on peut utiliser la commande : xdm Démarrage automatique de startx lors dudémarrage de Linux au niveau 5 startx Lors de l'authentification au niveau 3 xinit Lorsquele fichier .xinitrc n'existe pas. init Démarrage de X-Windows au niveau 5 de Linux

Pour arrêter X, on peut utiliser: <CTRL>+<ALT>+<BACKSPACE> init A un niveau inférieur àLinux 5, arrête X-Windows. Configuration de X Pour configurer X sur un système, on peutLinux 5, arrête X-Windows. Configuration de X Pour configurer X sur un système, on peututiliser XF86Setup. Le programme va générer un fichier de configuration qui sera utilisépar le serveur XFree86. Pour régler l'écran sous X, utilisez Xfine2.

Sous X, l'utilisateur peut configurer chaque paramètre convenable de l'affichage graphique.Polices d'affichage à l'écran, styles Comportement du dispositif de pointage Couleursd'affichage Gestionnaire de fenêtre

Le réglage peut être effectué par stratégie de groupe ou par utilisateur. .xinitrc est legestionnaire de fenêtres et de style par défaut à utiliser avec la commande startx..Xdefaults est utilisé pour configurer les paramètres du pointeur, les couleurs, polices,etc...

178

2. Installer un gestionnaire d'affichage

Objectifs

Installer et configurer un gestionnaire d'affichage. Cet objectif inclut ledémarrage ou l'arrêt du gestionnaire d'affichage et le changement despréférences d'affichage, ainsi que le changement de le nombre de couleurs(pixel/bit) par défaut du gestionnaire d'affichage. Cela inclut aussi laconfiguration 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 fenêtres pour manipuler toutes les applicationsgraphiques. Déplacer, redimensionner. Ouvrir et fermer. Agrandir, réduire,mettre en icône. Barres de titres L'apparence des fenêtres est inclus dans legestionnaire de fenêtres.shouldn't this be in Widget sets not WMs? Fournirdes bureaux virtuels.

Les distributions Linux disposent d'un grand nombre de gestionnaire defenêtres:

• Fvwm2 Motif-like look, highly customizable• WindowMaker Next Step look, fast and lean• 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

Page 46: Cours système d'exploitation

3. Installer & configurer un gestionnaire

d'environnement graphique

ObjectifsParamétrer le bureau et le gestionnaire de fenêtres globalement pour démontrer leur maîtrise des procédures de configuration des menus du gestionnaire de fenêtres et/ou des menus panel du bureau (desktop panel). Cet objectif inclut la sélection et la configuration du terminal X choisi (xterm, rxvt, aterm, etc.), la vérification et le respect des dépendances des librairies nécessaires aux applications X, l'exportation d'un affichage X vers une station de travail externe.

Fichiers , termes et commandes principaux inclus :.xinitrc.Xdefaultsxhostvariable d'environnement DISPLAY

181

4. X en réseau

ObjectifsX travaille en environnement client/serveur, où l'application est le client et leserveur est l'application qui sait de quelle manière fournir les services. Dans unsystème autonome, les deux applications sont situées sur la même machine.Dans un système en réseau, l'utilisateur peut executer une application Xinstallée sur une machine distante et effectuer l'affichage sur un ordinateurlocal. L'avantage de disposer d'un serveur X d'applications est : L'installationlocal. L'avantage de disposer d'un serveur X d'applications est : L'installationd'applications locales n'est pas nécessaire. Le système local n'a pas besoind'être performant. L'accès aux données ne se fait pas localement.

4.1 X en réseauExport d'une application simple : Pour effectuer cette manipulation, faire : startx sur

le serveur. xhost + Autoriser l'absence d'authentification sur le serveur. telnetserveur à partir du client et paramétrer la variable DISPLAY pour le client.Export DISPLAY=clienthost:0.0

Export du gestionnaire de fenêtres : Pour effectuer cette manipulation, faire :Activer xdmcp avec gdmsetup sur le serveur Utiliser Xnest pour connecter leclient au serveur en diffusion

182

Exemple de questions

1. A quoi sert un ficier Xressources?A. à contrôler l’apparence des clients X;B. à affecter des ressources pour le serveur XC. à définir les droits d’accès au serveur X en réseau

2. Pour démarrer un serveur X ?A. vous utiliser un logiciel XDMB. vous lancez le script ‘startx’B. vous lancez le script ‘startx’C. vous utiliser la commande XressourceD. vous utiliser la commande Xserved

3. Dans la liste suivante, quels sont les ‘window manager’A. WindowMaker

B. KDMC. XwindowD. twm

183

4. Que contient le fichier XF86Config?A. La résolution de l’écranB. Le(s) chemin(s) pour trouver les polices de caractère.C. La taille du moniteurD. Le nom du Window Manager à lancer

5. Quel est l’entrée ddu fichier XF86Config qui spécifie qu’on est en machinelocale? Choisi 2.

A. unix/:-1B. unix/:7100C. tcp/:45D. udp/:80E. font/:-1

6. Quel est le fichier qui est utilisé pour la configuration du XDM daemon?A. xdm-configB. xdm.confC. xdmcfgD. xdaemon.confE. None of the above

184

Page 47: Cours système d'exploitation

Partie2: La programmation ShellPartie2: La programmation ShellPartie2: La programmation ShellPartie2: La programmation Shell

Chapitre1: Définition et utilisation de variable

1. Introduction

2. Les scripts Shell

3. Les variablesChapitre2: Définition d’une expression

1. La procédure

185

2. La commande test

3. La commande exprChapitre3: Structure de contrôle

1. La structure conditionnelle

2. Le choix multiples

3. Les structures itératives

4. La fonction

Un script bash est un fichier de type texte contenant une suite

de commande shell, exécutable par l’interpréteur comme une

commande unique.

1. Introduction

La programmation shellLa programmation shellLa programmation shellLa programmation shell

186

Un script peut être lancé en ligne de commande, comme dans un

autre script. Mais il s’agit bien plus qu’un simple enchaînement de

commande: on peut définir des variables et utiliser des structures de

contrôle, ce qui lui confère le statut de langage de programmation

interprété et complet.

Le langage bashbashgère notamment:

� La gestion des entrées-sorties et de leur redirection

� Des variables définies par le programmeur et des variables

1. Introduction

(suite)(suite)(suite)(suite)

187

� Des variables définies par le programmeur et des variables

systèmes

� Le passage de paramètres

� Des structures conditionnelles et itératives

� Des fonctions internes

Saisie du scriptSaisie du scriptSaisie du scriptSaisie du script

Utiliser vi de préférence

Les lignes commençant par le caractère dièse # sont des commentaires.

2. Les scripts Shell

188

Le script doit débuter par l’indication de son interpréteur écrite sur la première ligne: #!/bin/bash

En fait si le shell par défaut est bash, cette ligne est inutile.

Page 48: Cours système d'exploitation

Saisie du scriptSaisie du scriptSaisie du scriptSaisie du script

Exemple:

#!/bin/bash

#script bonjour

#affiche un salut à l’utilisateur qui l’a lancé

#la variable d’environnement $USER contient le nom de login

echo ----Bonjour $USER -----

2. Les scripts Shell

189

#l’option –n empêche le passage à la ligne

#le ; sert de séparateur des commandes sur la ligne

echo –n “Nous sommes le“; date

#recherche de $USER en début de ligne dans le fichier passwd

#puis extraction de l’uid au 3ièmechamp, et affichage

echo “Ton numéro d’utilisateur est “

(grep “^$USER“ /etc/passwd | cut -d: -f3)

3.13.13.13.1---- Les variables prédéfiniesLes variables prédéfiniesLes variables prédéfiniesLes variables prédéfinies

Voici les principales variables utilisées par le shell

Variable Signification

HOME Répertoire personnel

3. Les variables

190

PATH Répertoire de recherche des commandes

TERM Nom du type de terminal utilisé

PS1 La valeur de la première prompt

PS2 La valeur de la deuxième prompt

Exécution du script

Il est indispensable que le fichier script ait la permission x (soit exécutable).

Lui accorder cette permission pour tous ses utilisateurs avec chmod:

Chmod a+x bonjour

2. Les scripts Shell

191

Pour lancer l’exécution du script, taper ./bonjour, ./ indiquant le chemin, ici le

répertoire courant. Ou bien indiquer le chemin absolu à partir de la racine.

Ceci dans le cas où le répertoire contenant le script n’est pas listé dans le PATH

3.23.23.23.2---- L’affectationL’affectationL’affectationL’affectation

Il s’agit de donner une valeur à une variable.

Le nom de la variable est formé d’une chaîne de caractères ne contenant pas de caractères spéciaux.

L’usage des majuscule est plutôt réservé pour les variables systèmes; na pas utiliser de caractères spéciaux, en se limitant aux lettre, chiffres et caractères ‘_’ et ’.’

3. Les variables

192

et ’.’

L’affectation représente un mot pour le shell, le caractère d’affectation est le ‘=‘

Ne pas mettre de séparateur entre le ‘=‘ et le nom et la valeur

Le shell associe du texte au nom de la variable, sans présumer de sa signification.

Page 49: Cours système d'exploitation

Par exemple, i=2, i=0002, i=deux n’ont pas la moindre signification de

valeur pour le shell, et sont donc pour lui des affectations différentes.

Le shell a donc besoin d’utilitaires pour manipuler les nombres (tester,

additionner…) ainsi que les chaînes de caractères: Les variables shell ne sont

pas typées.

3.2- L’affectation

193

$variable=valeur

$a=truc

$monrep=/usr/c1

$d=date

$j=‘mot1 mot2’

$

3.33.33.33.3---- Le contenuLe contenuLe contenuLe contenu

Il s’agit de la récupération du contenu de la variable

Pour accéder au contenu d’une variable, on utilise le caractère ‘$’ devant le nom de la variable.

C’est le shell qui fait la substitution.

$variable=valeur

$echo variable

variable

3. Les variables

194

variable

$echo $variable

valeur

$

Le shell interprète d’abord les variables, puis la commande qu’il trouve en première position sur la

ligne.

3.43.43.43.4---- Variable non définieVariable non définieVariable non définieVariable non définie

Une variable non définie a une valeur nulle. Cela permet d’utiliser une variable alors qu’on ne l’a jamais affectée.

$echo rienRien$echo $rien$echo A$rienA

3. Les variables

195

$echo A$rienAA$echo A${rien}AAA$

Pour bien limiter le nom de la variable de son contenu, on l’encadre entre accolade ({}).

***3.5---- Réévaluation de variablesRéévaluation de variablesRéévaluation de variablesRéévaluation de variables

Il n’est pas possible de réévaluer les variables utilisateurs. C’est-à-dire que le shell ne change la valeur d’une variable QUE lors de l’affectation.

$A=1$B=A$echo $BA$B=$A

3. Les variables

196

$B=$A$echo $B1$A=2$echo $B1$

On affecte toujours une variable à une chaîne de caractère, soit le nom de la variable (B=A), soit son contenu (B=$A).

Page 50: Cours système d'exploitation

3.63.63.63.6---- Interprétation des métaInterprétation des métaInterprétation des métaInterprétation des méta----caractèrescaractèrescaractèrescaractères

Les méta-caractères du shell sont substituées parmi les noms de fichiers du répertoire courant. L’interprétation des méta-caratères est faite après l’interprétation des variables.

$ls -x f*f1 f2 fic1 fic2 fic3 fichier$t=fic$ls -x $t*

3. Les variables

197

$ls -x $t*fic1 fic2 fic3 fichier$

On liste les fichiers commençant par f. après affectation de t, on substitue $t* par l’interprétation de $t puis de *. Soit fic*, donc tous les fichiers commençant par fic.

$l=ls$ $l -x $t?fic1 fic2 fic3$

3.73.73.73.7---- Substitution de commandeSubstitution de commandeSubstitution de commandeSubstitution de commande

Il est possible de faire exécuter une commande et d’en récupérer le résultat 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; c’est-à-dire que l’on exécute la commande se trouvant entre ``, puis le shell interprète la ligne de commande.

$echo la date est: `date`la date est: Wed May 18 15:56:30 MET 1994

3. Les variables

198

la date est: Wed May 18 15:56:30 MET 1994$lognamec1$grep `logname` /etc/passwdc1:x:106:104:Eleve 1:/usr/c1:/bin/ksh$dateWed May 18 15:57:30 MET 1994$ `date`ksh: Wed command not found$

Une commande à exécuter entre ‘‘(guillemet inverse):

– Ne doit pas faire de lecture au clavier (ex: ni vi, ni pg)

– S’exécute dans un sous-shell, donc peut être composée de plusieurs commandes séparées par des ‘;‘ voire même s’exécuter dans un autre répertoire.

$var= `cd /etc ; grep fun passwd`$echo $var

3.7- Substitution de commande

199

$echo $varfun:x:208:55:Guy Thienot:/tech/u2/fun:/bin/ksh$

La substitution de commande permet l’exécution d’une commande ou même d’un fichier de commandes.

Caractères spéciaux se trouvant dans les scriptsCaractères spéciaux se trouvant dans les scriptsCaractères spéciaux se trouvant dans les scriptsCaractères spéciaux se trouvant dans les scripts

# Commentaire:

Les lignes commençant avec # (à l’exécution de #!) sont des commentaires.

# Cette ligne est un commentaire.

Les commentaires peuvent apparaître en fin de ligne.

$echo “Un commentaire va suivre.“ # Un commentaire ici.

200

$echo “Un commentaire va suivre.“ # Un commentaire ici.

Les commentaires peuvent aussi suivre un blanc au début d’une ligne.

# Une tabulation précède ce commentaire.

-> Un commentaire ne peut pas être suivi d’une commande sur la même ligne. Il n’existe pas de façon de terminer le commentaire, pour que le “vrai code” commence dans la même ligne. Utilisez une nouvelle ligne pour la commande suivante

Page 51: Cours système d'exploitation

Remarque:Remarque:Remarque:Remarque:

Bien sûr, un # échappé dans une instruction echo ne commence pas un commentaire.

De la même manière, un # apparaît dans certaines constructions de substitution de

paramètres et dans les expressions numériques constantes.

Exemples:Exemples:Exemples:Exemples:

echo " Le # ici ne commence pas un commentaire.“

# Commentaire:

201

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 paramètres, pas un commentaire.

echo $((2#101011)) # conversion de base, pas un commentaire.

Les caractères standard de guillemet et d’échappement (“ ,’,\) échappent le #.

; [point-virgule]

Séparateur de commande :Permet de placer deux commandes ou plus sur la même

ligne.

echo bonjour; echo ici Notez que le « ; » a parfois besoin d’être échappé

;; [double point-virgule]

Terminateur dans une sélection par cas (case).On va le voir plus précisément dans la

partie choix multiple.

Caractères spéciaux se trouvant dans les scripts

202

partie choix multiple.

. [point]

Commande « point »:Equivalent à source. C’est une commande intégrée de Bash.

“ [guillemet double]

“CHAÎNE“ empêche l’interprétation de la plupart des caractères spéciaux présents dans

la CHAÎNE.

‘ [guillemet simple]

‘CHAÎNE‘ empêche l’interprétation de tous les caractères spéciaux présents

dans la CHAÎNE. Ces guillemets sont plus puissant que “.

, [virgule].

relie une suite d’opérations arithmétiques. Toutes sont évaluées, mais seul le

résultat de la dernière est renvoyé.

Caractères spéciaux se trouvant dans les scripts

203

résultat de la dernière est renvoyé.

let “t2 = ((a = 9, 15/3)) “ # Initialise “a” et calcule “t2“.

\ [anti-slash]

\X «échappe » le caractère 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 littérale.

/ [barre oblique].

Sépare les composants d’un nom de fichier (comme dans /home/bozo/projets).

C’est aussi l’opérateur arithmétique de division.

`[guillemet inversé].

`commande` rend la sortie de commande disponible pour initialiser une

variable. Connu sous le nom de guillemets inversés ou bien quottes.

**Caractères spéciaux se trouvant dans les scripts

204

: [deux point].

Il s’agit de l’équivalent shell d’un « NOP » (no operation).

Elle peut être considérée comme un synonyme pour la commande intégrée true.

La commande « : » est elle-même une commande intégrée Bash, et son état de

sortie est « vrai » (0).

: echo $? # 0

Page 52: Cours système d'exploitation

! [point d’exclamation].– Il inverse l’état de sortie de la commande à la quelle il est appliqué.

– Il inverse aussi la conclusion d’un opérateur de test. Cela peut, par

exemple, changer le sens d’un « égal » (=) en un « différent » (!=).

– L’opérateur ! Est un mot-clé Bash.

• Dans un autre contexte, le ! Apparaît aussi dans les références indirectes de

variable.

Caractères spéciaux se trouvant dans les scripts

205

variable.

• Dans un contexte encore différent, à partir de la ligne de commande, le !

Appelle le mécanisme d’historique de Bash.

* [l’étoile].

– Dans le contexte des opérations arithmétique, * est une multiplication.

– La double astérisque ** est l’opérateur exponentiel.

? [point d’interrogation].– A l’intérieur de certaines expressions, le ? Indique un test pour une

condition.– Dans une construction entre parenthèses doubles, ? Sert d’opérateur à trois

arguments dans le style du C.– Dans une expression de substitution de paramètres, le ? Teste si une variable

a été initialisée.? Joker (caractère irrégulier).Le caractère ? Sert de joker pour un seul caractère pour l’expansion d’un nom de fichier dans un remplacement, et également représente un caractère dans une

Caractères spéciaux se trouvant dans les scripts

206

de fichier dans un remplacement, et également représente un caractère dans une expression régulière étendue.

$ [dollar].var1=5 var2=23skdooecho $var1 # 5echo $var2 # 23skidooUn $ préfixant un nom de variable donne la valeur que contient cette variable

() [parenthèses].

(a=bonjour; echo $a)

Une liste de commandes entre parenthèses lance un sous shell.

Les variables comprises dans ces parenthèses, à l’intérieur du sous-shell, ne sont pas

visibles par le reste du script. Le processus parent, le script, ne peut pas lire les variables

créées dans le processus fils, le sous-shell.

a=123 (a=123;)

echo “a = $a“ # a = 123

Caractères spéciaux se trouvant dans les scripts

207

# “a“ à l’intérieur des parenthèses s’agit comme une variable locale.

Initialisation de tableaux.

Array=(element1 element2 element3 …)

[ ] élément d’un tableau.

Accolés au nom d’un tableau, les crochets indiquent l’indice d’un élément.

Tableau[]=slot_1

echo ${Tableau[1]}

|| [double barre]Opérateur OU logique:Dans une structure de test, l’opérateur || a comme valeur de retour 0 (succès) si l’un des deux est vrai.

&& [double et]Opérateur ET logique: Dans une structure de test, l’opérateur && renvoie 0 (succès) si et seulement si les deux conditions sont vraies.

- [moins]Le signe moins est une opération arithmétique.

= [égal].Opérateur d’affectation.

Caractères spéciaux se trouvant dans les scripts

208

Opérateur d’affectation.a=28echo $a # 28+ [Plus].Opérateur arithmétique d’addition

% [Modulo].Opérateur arithmétique modulo (reste d’une division entière).

~ [tilde]Le ~ correspond à la variable interne $HOME : Répertoire de l’utilisateur.

Page 53: Cours système d'exploitation

3.83.83.83.8---- Ordre d’interprétationOrdre d’interprétationOrdre d’interprétationOrdre d’interprétation

Voici l’ordre et ce qu’interprète le shell:

1. gestion des redirections (<, >, >>, <<, |)

2. Interprétation des “ dans un sous-shell (substitution de commande)

3. Interprétation des variables

4. Interprétation des méta caractères

3. Les variables

209

4. Interprétation des méta caractères

5. Affectation ou exécution du premier mot rencontré sur la ligne avec

comme arguments les substitutions précédentes

$j=`date`

$d=date

$echo $j

Wed May 18 16:28:16 MET 1994

$echo $d

date

$

j vaut la date au moment de l’affectation.

d vaut la chaîne de caractères date

$ $d

Wed May 18 16:39:11 MET 1994

$echo $j

3.8- Ordre d’interprétation

210

$echo $j

Wed May 18 16:28:16 MET 1994

$

Le contenu de la variable sera substitué puis on exécute la commande.

Dans le premier cas on exécute date, alors que dans le second on affiche la date au

moment de l’affectation dans j (valeur statique).

3.93.93.93.9---- l’affectation interactivel’affectation interactivel’affectation interactivel’affectation interactive

– La commande interne read permet d’assigner une valeur à une variable, à

partir d’une lecture sur l’entrée standard (par défaut).

– La commande se met en attente du clavier et affecte les valeurs que vous

tapez aux noms de variables qui lui sont passés en arguments.

3. Les variables

211

• Si plus de valeurs sont entrées qu’il n’y a d’arguments, alors la dernière

variable vaudra tous les derniers mots.

• S’il y a moins de valeurs entrées que de variables, celles non affectées

sont mises à vide.

Exemples:Exemples:Exemples:Exemples:

$read a33

$echo $a33

$read b c d

$echo $aet

$echo $bvoici

$echo $cquatre mots

$read d e f

3.9- l’affectation interactive

212

$read b c dvoici trois mots

$echo $d $c $bmots trois voici

$read a b cet voici quatre mots

$read d e f blups

$echo $dblups

$echo $e$echo $f

Page 54: Cours système d'exploitation

1. Procédure

Une procédure (shell script – fichier de commandes shell) est un fichier contenant une suite de lignes exécutables par l’interpréteur de commande shell.

Exemple:Exemple:Exemple:Exemple:

$cat p1

Chapitre1: Définition et utilisation de variable

213

$cat p1# ceci est une procéduredatewhotty$

1.11.11.11.1---- Exécution d’une procédureExécution d’une procédureExécution d’une procédureExécution d’une procédure

Il y a plusieurs manières d’exécuter une procédure shell:

– Utiliser la commande interne ’.’, qui permet de lire et d’exécuter les commandes se trouvant dans le fichier procédure, sans créer de sous-processus.

Exemple:Exemple:Exemple:Exemple:$ .p1

wed Jul 6 11:07:45 MET 1994

1. Procédure

214

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 n’est créé pour lire et lancer ces commandes, mais de toutes façons trois processus sont créés par ce script.

– Lancer le programme shell en redirigeant son entrée standard sur le fichier contenant

la procédure.ainsi le shell lit les commandes sur ce fichier au lieu de les lire sur le

terminal.

Exemple:Exemple:Exemple:Exemple:

$bash p1

wed Jul 6 11:07:45 MET 1994

philip term/c0 Jul 6 10:30

1.1- Exécution d’une procédure

215

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 père est mis en attente et ne sera réveillé que

lorsque le sous-processus sera terminé.

– Modifier les droits du fichier p1, pour le rendre exécutable pour l’utilisateur, puis

lancer la procédure comme s’il s’agissait d’une commande standard.

Exemple:Exemple:Exemple:Exemple:

$ 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

1.1- Exécution d’une procédure

216

fun term/c5 Jul 6 09:14

c1 term/c4 Jul 6 09:14

/dev/term/c4

$

Dans ce cas, le système se rend compte qu’il s’agit d’un fichier exécutable particulier, en

effet, celui-ci ne contient pas de code machine, mais des lignes de texte. Il suppose qu’il

s’agit d’une procédure shell, donc crée un processus, qui exécute le programme shell, et les

commandes sont lues depuis ce fichier.

Page 55: Cours système d'exploitation

1.21.21.21.2---- Paramètres positionnelsParamètres positionnelsParamètres positionnelsParamètres positionnels

Si une procédure est exécutable, on peut l’appeler comme les autres commandes

externes, c’est-à-dire mettre le nom de cette procédure au début de ligne et la

faire suivre d’arguments:

$p1 arg1 arg2 arg3

1. Procédure

217

La procédure trouve les arguments d’appel dans des pseudo-variables, appelées

paramètres 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 procédure ne peut jamais initialiser le contenu de ces variables, mais peut le consulter

en utilisant la syntaxe $0, $1, $2,…$9. Chaque paramètre positionnel contient un mot de

la ligne de commande.

Exemple:Exemple:Exemple:Exemple:

$ P1 X Y Z

1.2- Paramètres positionnels

218

Attention:Attention:Attention:Attention:

Si la ligne contient des méta-caractères, le shell les substitue avant d’effectuer le

découpage en mots, et d’affecter ces mots aux paramètres positionnels.

$0 P1

$1 X

Z $3

Y $2

1.31.31.31.3---- Variable automatiquesVariable automatiquesVariable automatiquesVariable automatiques

Lorsqu’une procédure commence, d’autres variables spéciales, en plus des paramètres positionnels, sont initialisées. Celles-ci peuvent être consultées, mais pas modifiées. On les appelle les variables automatiques ou prédéfinies.

Nom de la variable Valeur de la variable

_ (underscore) Le dernier mot de la dernière commande exécutée

# Le nombre de variables de position définies

* La liste des variables de position vu comme une seule variable

1. Procédure

219

* 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 numéro du processus courant

! Le numéro du dernier processus lancé en arrière plan

PPID Le numéro du processus père

PWD La référence absolue du répertoire de travail

RANDOM Un nombre aléatoire

SECONDS Le nombre de secondes écoulées depuis le lancement du processus shell

2. La commande test2. La commande test2. La commande test2. La commande test

GénéralitésGénéralitésGénéralitésGénéralités

– Comme son nom l’indique, elle sert à vérifier des conditions.

– Ces conditions portent sur des fichiers (le plus souvent), ou des chaînes ou une expression numérique.

– Cette commande courante sert donc à prendre des (bonnes) décisions, d’où son utilisation comme condition dans les structures conditionnelles if .. then .. else, en quelque sorte à la place de variables booléennes … qui n’existent

Chapitre1: Définition et utilisation de variable

220

.. else, en quelque sorte à la place de variables booléennes … qui n’existent pas.

SyntaxeSyntaxeSyntaxeSyntaxe

Testexpression

[expression]

Valeur de retourValeur de retourValeur de retourValeur de retour

La commande test, retourne 0 si la condition est considérée comme vraie, une valeur différentes de 0 sinon pour signifier qu’elle est fausse.

Page 56: Cours système d'exploitation

Tester un fichierTester un fichierTester un fichierTester un fichierElle admet 2 syntaxes (la seconde est la plus utilisée):

test option fichier

[ option fichier ]

Exemples des options:Exemples des options:Exemples des options:Exemples des options:

-e il existe

-f c’est un fichier normal

2. La commande test

221

-f c’est un fichier normal

-d c’est un répertoire

-r | -w | -x il est lisible modifiable exécutable

-s il n’est pas vide

Exemples:Exemples:Exemples:Exemples:

[-w fichier] le fichier est il modifiable?[-r “/etc/passwd“] X peut-il lire le fichier /etc/passwd?

Tester une chaineTester une chaineTester une chaineTester une chaine

[ option chaîne ]

Option significatif:Option significatif:Option significatif:Option significatif:

-z | -n la chaine est vide / n’est pas vide

= | != les chaines comparées sont identiques | différentes.

2. La commande test

222

Exemple:Exemple:Exemple:Exemple:

[-n " toto"]

echo $?

Affiche la valeur renvoyée 0

Tester un nombreTester un nombreTester un nombreTester un nombre

[ nb1 option nb2 ]

Il y a d’abord un transtypage automatique de la chaîne de

caractères en nombre

Option SignificatifOption SignificatifOption SignificatifOption Significatif

-eq | -ne égal | différent

2. La commande test

223

-eq | -ne égal | différent

-lt | -gt strict.inf | strict.sup

-le | -ge inf ou égal | sup ou égal

Exemples:Exemples:Exemples:Exemples:

a=15; [" $a " –lt 15]; echo $?

Opérations dans une commande testOpérations dans une commande testOpérations dans une commande testOpérations dans une commande test

• [expr1 –a expr2]

(and) 0 si les 2 expr sont vraies

• [expr1 –o expr2]

(or) 0 si l’une des 2 expr est vraie

• [!expr1]

2. La commande test

224

négation

Exemple:Exemple:Exemple:Exemple:

note=9;

[$note –lt 8 –o $note –ge 10] && echo “tu n’est pas convoqué(e) à l’oral"

Page 57: Cours système d'exploitation

3.La commande expr3.La commande expr3.La commande expr3.La commande expr

Définition:Définition:Définition:Définition:

Évaluateur d’expression: concatène et évalue les arguments suivant l’opération souhaitée (les arguments doivent être séparés par des espaces). Les opérations peuvent être arithmétiques, comparatives, chaîne de caractères ou logiques.

Chapitre1: Définition et utilisation de variable

225

comparatives, chaîne de caractères ou logiques.

expr 3+5 #renvoie 8expr 5 % 3 #renvoie 2expr 5 \* 3 #renvoie 15

L’opérateur de multiplication doit être échappé lorsqu’il est utilisé dans une expression arithmétique avec expr.

#Démonstration des possibilités de ‘expr’

# Opérations arithmétiques

echo a=`expr 5 + 3`

echo “5 + 3 = $a “

a=`expr $a +1`

echo “a + 1 = $a “

echo “(incrémentation d’une variable de la même manière que let y=y+1 et y=$(($y+1)).)”

3.La commande expr

226

y=$(($y+1)).)”

a=‘expr 5 % 3’ #modulo

echo “5 mod 3 = $a”

# Opérations Logiques retourne 1 si vrai, 0 si faux,

echo x=24 y=25

b=‘expr $x = $y’

# Test d’égalité

echo “b = $b“ # 0 [ $x –ne $y ]

# Opérateur de chaîne de caractères

echo “Opérateur de chaînes de caractères“

echo a=1234zipper43231

echo “Voici $a“

# length: longueur de la chaîne

b=‘expr length $a’

echo “la taille de $a est $b“

3.La commande expr

227

# Index: position du premier caractère dans une sous-chaine qui correspond à un

# caractère dans la chaine

b=‘expr index $a 23’

echo “la position du premier 23 dans $a est $b“

# substr: extrait une sous-chaine, en spécifiant la position de départ et la taille

b=‘expr substr $a 2 6’

La différence entre ‘ et La différence entre ‘ et La différence entre ‘ et La différence entre ‘ et """"

# la commande VAR=toto stocke la chaîne de caractères toto dans la

# variable VAR

VAR=toto

echo “Le contenu de la variable VAR est $VAR“

# la commande LS1=‘$(ls)’ stocke la chaîne ‘$(ls)’:

LS1=‘$(ls)’

228

LS1=‘$(ls)’

echo “Le contenu de la variable LS1est ‘${LS1}’.“

# la commande LS2=“$(ls)“ stocke le résultat de la commande ls :

LS2=“ $(ls)“

echo“Le contenu de la variable LS2 est ‘${LS2}’.“

#Noter bien la différence entre ‘..’ et “..“

Page 58: Cours système d'exploitation

1. La structures conditionnelles

Syntaxe:if condition

theninstruction(s)

fi

Syntaxe:

Syntaxe:if condition

theninstruction(s)

elif condition

Chapitre3: Structure de contrôle

229

Syntaxe:if condition

theninstruction(s)

elseinstruction(s)

fi

elif conditionthen

instruction(s)fi

if suite-de-conditions

then # séquence exécutée si suite-de-conditions rend une

# valeur 0

else# séquence exécutée sinon

bloc-instruction2

fi

1. Structures conditionnelles

230

fi

Attention: ! Si bien est placé sur la 1ère ligne, séparer avec un ;

if condition ; then …

L’exemple suivant teste l’existence d’un fichierif [-e “/etc/shadow"]

thenecho “fichier existe“

elseecho “Erreur fichier inexistant“

fiPour vérifier que 2 arguments ont été passés au script

if [$# -ne 2]then

1. Structures conditionnelles

231

thenecho “il faut 2 arguments vous en avez $#“

fiTest numérique permet d’afficher si l’argument passé en paramètre est compris entre 5

et 10:if [$1 –gt 5 –a $1 –lt 10]

then echo “5<$1<10“

fi

Test numérique permet d’afficher si l’argument passé en paramètre est un nombre positif, négatif ou nul:

if [$1 -gt 0]

then

echo “$1 est positive“

elif [$1 -lt 0]

then

echo “$1 est négative“

1. Structures conditionnelles

232

elif [$1 -eq 0]

then

echo “$1 est zero“

else

echo “Opps! $1 n’est pas nbre, donner un nombre“

fi

Page 59: Cours système d'exploitation

Supposons que le script exige la présence d’au moins un paramètre, 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]

1. Structures conditionnelles

233

then

echo “Donner le second argument:“

read arg2

fi

Un script shell qui fait le test sur l’existence d’un utilisateur

$ cat exist_user

if grep “$1“ /etc/passwd > /dev/null

then

echo “L’utilisateur $1 a un compte“

else

1. Structures conditionnelles

234

echo “l’utilisateur $1 n’existe pas“

fi

$ chmod u+x exist_user

$exist_user c1

L’utilisateur c1 a un compte

$

2. Choix multiples2. Choix multiples2. Choix multiples2. Choix multiplesSyntaxe:

casevaleur in

expr1) commandes;;

expr2) commandes;;

esac

;; indique la fin du choix (cas).

Chapitre3: Structure de contrôle

235

Exemple:Exemple:Exemple:Exemple:

Le script attent une langue de l’utilisateur

read langue

case$langue in

français)echo bonjour;;

anglais)echo hello;;

espagnol)echo buenos Dias;;

esac

Exemple1:Exemple1:Exemple1:Exemple1:

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 prévu;;

esac

2. Choix multiples

236

Exemple2:Exemple2:Exemple2:Exemple2:

case$1 in

one)X=un;;

two) X=deux;;

three)X=trois;;

*) X=$1;;

esac

Page 60: Cours système d'exploitation

3.1 Boucle for3.1 Boucle for3.1 Boucle for3.1 Boucle for

Syntaxe:for variable in liste

do Commandes (utilisant $variable)

done

Pour chaque valeur de la variable dans la liste de valeurs, exécuter le ou la suite de commande.

3. Structure itérative

237

Exemples:Exemples:Exemples:Exemples: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 renommés $I.oldecho “$I-> $I.old“mv $I $I.old#on finit notre boucle

done

Supposons que nous voulions parcourir tous les sous-répertoires du répertoire courant pour faire cette même manipulation. Nous pourrons taper:for REP in `find . -type d`

dofor FICH in $REP/*.tar.gz

doif [-f $FICH]

thenmv $FICH $FICH.old

elseecho On ne renomme pas $FICH car ce n\’est pas un fichier

3.1 Boucle for

238

echo On ne renomme pas $FICH car ce n\’est pas un fichierfi

donedone

#Une boucle for avec une [liste] générée 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

3.2 La boucle while3.2 La boucle while3.2 La boucle while3.2 La boucle while

<tant que> le résultat commande est vraie. La commande while consiste en

l’exécution d’une commande en fonction de la valeur de retour d’une autre

commande. Si la valeur de retour est différente de zéro, l’exécution de la boucle

est interrompue.

3. Structure itérative

239

Syntaxe:

while suite de commande

do

Commandes

done

Exemples:Exemples:Exemples:Exemples:Supposons, par exemples que vous souhaitiez afficher les 100 premiers nombres

(pour une obscure raison), alors vous taperez:i=0while [$i –lt 100]

doecho $ii=$(($i+1))

doneSupposons, par exemples que vous souhaitiez lire un nom à partir du clavier , alors

vous taperez:

3.2 La boucle while

240

vous taperez:echo –e “Entrez un nom de fichier“read fichwhile [-z “$fich“]

doecho –e “Saisie à recommencer “read fich

done

Page 61: Cours système d'exploitation

Supposons, par exemples que vous souhaitiez afficher les 10 premiers nombre, alors vous taperez:var0=0LIMITE=10while [“$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 paramètre donné est « fin », alors vous taperez:

3.2 La boucle while

241

fin », alors vous taperez:while [“$var1“!=“fin"]

do

echo “Variable d’entrée #1 (quitte avec fin)“

read var1

echo “variable #1 = $var1“

done

3.3 La boucle until3.3 La boucle until3.3 La boucle until3.3 La boucle until<jusqu’à ce que>le résultat de la commande soit vrai.

La commande until est exécutée jusqu’à ce que la dernière commande de la liste de commandes placée derrière until renvoie une valeur vraie soit 0.

Syntaxe:until suite de commandes

doCommandes

done

3. Structure itérative

242

done

Exemple:Exemple:Exemple:Exemple:

until [“$var1“=fin] # condition du test ici, en haut de la boucle.

do

echo "variable d’entrée #1“

echo “(fin pour sortir)"

read var1

echo “variable #1 =$var1”

done

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

3.4 Interruption & reprise d’une boucle

243

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"

$cat deconnecte Tand quel’utilisateur passé en argument

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

do who (donc est connecté),on boucle après

sleep 180 avoir attendu 180 secondes et affiché une

echo “,\c“ virgule.

done Puis on signale qu’il n’est plus connecté.

echo “$1 n’est plus connecté“ Les commandes testées dans le while sont

$chmod u+x deconnecte exécutées, donc leur affichage se fait

244

$chmod u+x deconnecte exécutées, donc leur affichage se fait

$deconnecte c1 à l’écran (sortie standard), afin d’éviter de

’’’ recevoir l’affichage parasite (seul le statut

c1 n’est plus connecté nous intéresse), on redirige la sortie standard

$ de la dernière commande dans le pseudo-

périphérique /dev/null.

Page 62: Cours système d'exploitation

4. Fonctions4. Fonctions4. Fonctions4. Fonctions

Le shell permet la déclaration de fonctions qui pourront être appelées au sein d’une

procédure ou en direct sur l’interprète.

L’appel à une fonction est plus rapide que l’appel à un script.

Une fonction regroupe des commandes qui seront lancées à l’appel à cette fonction.

Contrairement aux procédures, une fonction peut modifier l’environnement d’un

Chapitre3: Structure de contrôle

245

shell.

nom_de_fonction ( )

{

commande1

commande2

commande3

}

Les commandes contenues dans une fonction pourront utiliser :�les paramètre positionnels ($0, $1, $2, ..., $9),�les variables automatiques (?, #, *, $, −, @, !),�les structures de contrôle (if, for, case, while, until),�les redirections d’entrées/sorties,�les tubes (pipe "|").

Exemple :Exemple :Exemple :Exemple :$ info ( ){

4. Fonctions

246

{datetty}$ infoFri Sep 16 16:05:06 MET 2000/dev/tty3$

Les fonctions sont considérées comme des commandes mais ne font pas partie del’environnement puisqu’elles ne peuvent être exportées. La commandesetpermet de visualiserles variables et les fonctions définies dans le shell courant.

$ setHOME=/usr/c1PATH=:/bin:/usr/bin:/usr/local/bin:/usr/c1/bin:.info( ) {datetty}$

Une fonction s’utilise de la même façon que les commandes internes et externes du shell. Dans

4. Fonctions

247

Une fonction s’utilise de la même façon que les commandes internes et externes du shell. Dans l’exemple suivant, la commande interne exit est exécutée dans le shell courant :

$ export infosh : cannot export functions$ essai ( ) {> date> exit 0>}$ essaiFri Sep 16 16:55:34 MET 2000Login :

Les fonctions accèdent à leurs arguments par les paramètres positionnels ($0, $1, ...). Elles

peuvent également consulter les variables automatiques ($#, $*, ...).$ dir ( ) {

> ls $*

> }

$ dir /

Il est possible de rediriger les entrées/sorties d’une fonction, ou encore de les combiner par

des pipes. Il est également possible de les exécuter dans des structures de contrôle.$ dir / > /tmp/out

$ dir / | wc

3 15 198

4. Fonctions

248

3 15 198

$

Chaque commande shell de la fonction est exécutée en séquence. Si une commande retourne

un statut à faux, la commande suivante est exécutée quand même. La fonction retourne le

statut de la dernière commande lancée.

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 définies à l’intérieur ne seront connues que dans le fichier de commandes

lui−même, c’est−à−dire que le shell courant ne connaîtra pas les fonctions définies.

Page 63: Cours système d'exploitation

Afin que le shell courant prennent en compte les fonctions définies dans un fichier,il suffit deles lancer en utilisant le "." :

$ cat fichfoncd ( ) {date}$ chmod u+x fichfonc$ . fichfoncLun 19 Sep 10:45:33 MET 2000$

Exemple :Exemple :Exemple :Exemple :

4. Fonctions

249

Exemple :Exemple :Exemple :Exemple :stat(){if [-d "$1" ]thenecho $1 est un répertoirereturn 0elseecho $1 n'est pas un répertoirereturn 1fi}

stat /tmpretourne 1stat $dirdépend de la valeur de $dirstat $1$1 est ici le paramètre du shell

factorielle()factorielle()

{{

ifif [ $# [ $# --ne 1 ] || [ $1 ne 1 ] || [ $1 --lt 0 ] lt 0 ] ; then; then

echo "Usage: factorielle n (avec n >= 0)" echo "Usage: factorielle n (avec n >= 0)"

1>&2 1>&2

else else

resultat=1 resultat=1

n=$1 n=$1

On peut utiliser cette fonction dans On peut utiliser cette fonction dans un script comme suit:un script comme suit:

n=0 n=0

until until [ $n [ $n --eq 14 ]eq 14 ]

do do

ExempleExempleExempleExemple

250

n=$1 n=$1

whilewhile [ $n [ $n --gt 1 ] gt 1 ] ; do; do

let $[ resultat *= n] let $[ resultat *= n]

let $(n let $(n --= 1) = 1)

donedone

echo "$resultat" echo "$resultat"

fifi

}

do do

resultat=$(resultat=$(factorielle $nfactorielle $n))

echo "$n! = $resultat" echo "$n! = $resultat"

let $(n += 1) let $(n += 1)

donedone