Cours Unix Emsi 2009
Cours Unix Emsi 2009
Cours Unix Emsi 2009
EMSI-CASABLANCA
A.AHMADI
2009/2010
A. AHMADI Unix
Chap 1
I- Introduction
Prsentation dUNIX
2
Le systme dexploitation UNIX est issu du milieu universitaire ; Il sest impos dans le milieu industriel : tous les constructeurs informatiques le proposent leur catalogue, parfois en alternative leur propre SE ; UNIX est le seul SE disponible sur : Les micro-ordinateurs ; Les stations de travail ; Les mini-ordinateurs ; Les mainframes ; Les supercalculateurs. Le succs dUNIX est justifi par : Portabilit du savoir ; Portabilit des programmes ;
A. AHMADI
Unix
II- Historique
3
1969 : naissance dUNIX, dans les Bell Laboratories (AT&T) par Ken Thompson et Dennis Ritchie ; Objectif : fournir un environnement de dveloppement aux programmeurs maison ; 1973 : nouvelle version dUNIX a t rcrite, en grande partie (90%) en C et en assembleur (10%) ; 1974 : Dveloppement de la version IV dUNIX par luniversit Berkeley (Californie) ; Dbut dune divergence entre les 2 versions dUNIX : AT&T et BSD Grand succs dUNIX dans les universits amricaines : adopt par les dpartements Computer Sciences pour la formation des tudiants en Informatique Systme ; Le nombre dexperts UNIX crot une grande vitesse ! 1977-1979 : Thompson et Ritchie rcrivent UNIX pour le rendre rellement portable ;
1980 :1res licences de distribution dUNIX dAT&T dlivres aux constructeurs ;
Unix
A. AHMADI
II- Historique
4
1984 : Cration du groupe X/Open. But : Normaliser les diffrentes versions ; Cration de la norme X-Window (systme de fentrage graphique) par MIT 1987 : Alliance entre AT&T et SUN visant la convergence entre les 2 systmes ; 1988 : Cration des consortiums : OSF (Open Software Foundation) et UNIX International : OSF : DEC, HP, IBM, Normalisation dun nouvel UNIX : OSF1 ; UNIX International : AT&T, SUN, UNIX System V ; 1992 : DEC/OSF1 : 1re version commerciale dOSF propose par DEC ; SystemV+BSD : 1re version commerciale propose par SUN ;
II- Historique
5
Le grand succs dUNIX est d aux facteurs suivants : Son adoption par les universits amricaines formation de plus dexperts Besoin dun standard exprim par les utilisateurs finals et les dveloppeurs : systme ouvert permettant une volution en douceur ; UNIX est le seul SE multiutilisateurs disponible faible cot. Il existe de nombreuses versions drives dUNIX qui peuvent tre classes en 2 groupes : Les UNIX Based : drives des sources AT&T et/ou Berkeley, comme : Ultrix (DEC), HP-UX (HP), AX (IBM), SOLARIS (SUN), LINUX ; Les UNIX Like : Systmes UNIX mais contenant un noyau totalement rcrit visant des applications bien prcises (temps rel, transactionnelles, etc) ;
UNIX-Based tendent faire disparatre les UNIX-Like.
Remarque :
A. AHMADI
Unix
II- Historique
6
Cration de groupes dutilisateurs afin dexprimer une indpendance vis--vis des constructeurs : Le groupe X/Open (1984) : Europen au dbut et international aprs ; Le groupe POSIX : fait partie de IEEE. Ses travaux sont plus dterminants.
A. AHMADI
Unix
II- Historique
7
A. AHMADI
Unix
-Dfinition (Wikipedia)
e systme d'exploitation (SE, en anglais Operating System ou OS) est un ensemble de programmes responsables de la liaison entre les ressources matrielles d'un
l fournit aux programmes applicatifs des points d'entre gnriques pour les
priphriques.
A. AHMADI
Unix
Gestion de la mmoire centrale ; Gestion des processeurs : ordonnancement ; Gestion des priphriques : E/S ; Gestion des fichiers : sur les mmoires de masse ; Gestion des ressources : attribution des ressources ncessaires ; Gestion des permissions et privilges ;
A. AHMADI
Unix
1- Caractristiques dUNIX
UNIX est un systme dexploitation : Multiutilisateurs ; Multitches ; possde un systme de gestion de fichiers arborescence unique, mme avec plusieurs priphriques de stockage ; les entres/sorties et la communication interprocessus sont compatibles avec la notion de fichier ;
A. AHMADI
Unix
Unix est un SE, constitu dun noyau, dun interprteur de commandes et dun grand nombre dutilitaires.
a- Noyau
Il assure la gestion des ressources physiques (processeur, mmoire, priphriques) et logicielles (processus, fichiers, etc) ; Il accepte et traite les instructions du shell ; Il gre les permissions daccs dans le systme de fichier ; Il est constitu dun ensemble de procdures et de fonctions crites en C et en Assembleur (entre 10 et 90 Ko) ; La structure du noyau est monolithique (pas de couches comme les autres SE).
A. AHMADI
Unix
a- Noyau
12
A. AHMADI
Unix
13
nix possde plusieurs Shell (Bourne Shell, C-shell, Korn shell, ) : richesse mais aussi une confusion ;
interface utilisateur dUnix est donc constitue : dune bibliothque de programmes excutables : les commandes ; Du shell lui-mme, interprteur de commandes et langage de commandes
permettant de raliser des scripts ;
- Utilitaires
A. AHMADI
Unix
Noyau (Kernel)
Matriel
A. AHMADI
Unix
Richard Stallman (chercheur au MIT, auteur de gcc, Emacs ...) nonce clairement le concept de logiciel libre ( free ) : ... un savoir scientifique doit tre partag en le distribuant, ... les codes sources doivent tre libres d'accs ...
Dmarre le projet GNU (1984). But : recrer un systme d'exploitation complet (Unix-like), compos uniquement de logiciels libres. Cre la FSF (Free Software Fundation, 1985) pour grer le projet GNU.
Remarque : Free dans la culture hacker signifie libre , pas ncessairement gratuit ou non commercial
A. AHMADI
Unix
Laccs libre au code source acclre le progrs en matire d'informatique car l'innovation dpend de la diffusion du code source. Richard Stallman dcrit dans le Manifeste GNU les quatre liberts fondamentales que doit respecter un logiciel pour tre qualifi de logiciel libre (free software en anglais) : libert d'excution : tout le monde a le droit de lancer le programme, quel qu'en soit le but ; ii. libert de modification : tout le monde a le droit d'tudier le programme et de le modifier, ce qui implique un accs au code source ; iii. libert de redistribution : tout le monde a le droit de rediffuser le programme, gratuitement ou non ; iv- libert d'amlioration : tout le monde a le droit de redistribuer une version modifie du programme ;
i.
A. AHMADI
Unix
Autorise l'utilisateur copier et distribuer volont le logiciel qu'elle protge, pourvu qu'il n'interdise pas ses pairs de le faire aussi ; Requiert aussi que tout driv d'un travail plac sous sa protection soit lui aussi protg par elle ;
Quand la GPL voque les logiciels libres, elle traite de libert et non de gratuit (un logiciel GPL peut tre vendu) ;
= gratuit et libert
A. AHMADI
Unix
Garantit les 4 liberts fondamentales pour tous les utilisateurs (artistes, informaticiens, ou quiconque produisant un travail soumis au droit d'auteur) ; vite de mettre les logiciels GNU dans le domaine public (pas de protection) ; Spcifie que quiconque redistribue le logiciel, avec ou sans modifications, doit aussi transmettre la libert de les copier et de les modifier ; Encourage et aide les programmeurs (entreprises, universits) qui veulent ajouter et/ou contribuer des amliorations des logiciels libres ;
Un logiciel copyleft est d'abord dclar sous copyright, puis on ajoute les conditions de distribution et les liberts lgalement indissociables.
A. AHMADI Unix
V- Linux
20
1991 : Linus Torvalds (Finlandais) dveloppe un noyau s'inspirant d'unix : linux. Il le met trs vite sous licence GPL, rejoint par de nombreux dveloppeurs.
Succs : qualit technique du noyau + nombreuses distributions qui facilitent l'installation du systme et des programmes.
A. AHMADI
Unix
Distributions linux
21
Distribution linux un noyau Linux des programmes, en majorit libres (un navigateur Web, un lecteur de Mail, un serveur FTP, etc...) une mthode pour installer et dsinstaller facilement ces programmes un programme d'installation du systme d'exploitation Quelques distributions : Fedora, Redhat, Debian, Mandrake/Mandriva, Knoppix, Gentoo
A. AHMADI
Unix
Distributions linux
22
www.redhat.fr socit amricaine fonde en 1994. clbre pour avoir introduit le systme Red hat Package Manager (RPM), de gestion de paquets logiciels
fedora.redhat.com version grand public gratuite de RedHat utilise le systme de gestion de paquets RPM
A. AHMADI
Unix
Distributions linux
23
www.mandriva.com LA distribution franaise par excellence Trs rpandue dans le milieu ducatif, et en PME/PMI utilise le systme de gestion de paquets RPM
www.novell.com/linux/suse socit allemande fonde Nuremberg en 1993 rachete en 2003 par l'diteur de logiciels amricain Novell utilise le systme de gestion de paquets RPM
A. AHMADI
Unix
Distributions linux
24
www.debian.org distribution issue d'un effort communautaire, le projet Debian , et non d'une entreprise distribution trs soigne et ingnieuse austre installer et administrer (dconseille aux dbutants ?) Utilise le systme de gestion de paquets debian
www.ubuntu-fr.org Distribution populaire base dbian lance en 2004. Son nom provient d'un ancien mot bantou (langue d'Afrique), ubuntu, signifiant Humanit aux autres, ou encore Je suis ce que je suis grce ce que nous sommes tous
A. AHMADI
Unix
Distributions linux
25
www.turbolinux.com La distribution de Linux majeure pour les pays d'Asie(particulirement rpandue en Chine)
A. AHMADI
Unix
VI-Installation de Linux
1- Partitionnement
26
La plupart des systmes d'exploitation (fixes) correctement installs utilisent un disque plusieurs partitions: partition systme (fichiers systmes, fichiers de configuration ...) partition utilisateurs (donnes des utilisateurs) etc.
exploitation plus scurise ; on peut formater une partition indpendamment des autres ; on peut utiliser une partition en lecture seule ; partitionnement statique => planifier le partitionnement ; on ne peut pas modifier simplement un partitionnement statique ; partitionner est une opration low level , risque !!
Pour bnficier des avantages du partitionnement dynamique il faut passer des solutions de type RAID (Redundant Array of Independant Disks) ou LVM (Logical Volume Manager)
Unix
A. AHMADI
VI-Installation de Linux
1- Partitionnement
27
M B R
(/dev/hda)
4 partitions primaires max
M B R
M B R
/dev/hda3
/dev/hda7 Swapp
/dev/hda8 Applications
MBR
TP BL BSPartition 1
BS
Partition 2 bootable
BSPartition 3
<=> <=> /dev/hda1 /dev/hda2
MBR : Master Boot Reccord TP : Table Partition BL : Boot Loader BS : Boot Sector
C: D:
...
VI-Installation de Linux
2- Systmes de fichiers
28
Windows 95 OSR2
Windows 98 Windows NT4 Windows 2000/XP
AT16, FAT32
FAT16, FAT32 FAT, NTFS (version 4) FAT, FAT16, FAT32, NTFS (versions 4 et 5)
Linux
MacOS SGI IRIX
Sun Solaris
IBM AIX
A. AHMADI
Chap 2
Se connecter en tant que root : login : sudo -i, puis le mot de passe du root ou sudo commande suivie du mot de passe du root Quitter la session du root : <Ctrl-d> ou exit Plusieurs terminaux peuvent tre lancs simultanment : graphiquement ou <Ctrl-AltF1>, <Ctrl-Alt-F2>, ... Pour quitter un terminal : exit Pour rebooter lordinateur : sudo shutdown r now (r : reboot) Pour arrter lordinateur : sudo shutdown h now (h : halt) Cration dun compte utilisateur :
Mthode 1
Se connecter en tant que root ; Taper useradd ali pour crer le compte ali (avec les informations par dfaut) ; Taper passwd ali pour affecter un nouveau mot de passe au compte ali, sinon lutlisateur pourra remplacer son mot de passe vide par la commande passwd une fois connect. Remarque : sous certains shells, la commande adduser permet de crer un compte en demandant ses informations de manire interactive.
A. AHMADI Unix
Chap 2
Mthode 2
Se connecter en tant que root ; Editer le fichier /etc/passwd : vi /etc/passwd ; Copier une ligne dun utilisateur, la modifier et sauvegrader le fichier /etc/passwd ; Taper passwd ali pour affecter un nouveau mot de passe au compte ali, sinon lutlisateur pourra remplacer son mot de passe vide par la commande passwd une fois connect. Personne, pas mme le root, ne saurait retrouver le mot de passe en clair dun utilisateur donn.
i le mot de passe est oubli : 2 cas Pour un utilisateur ordinaire : 2 solutions Le root peut effacer le password crypt du fichier /etc/passwd, puis en affecter un nouveau ; Le root peut modifier le password (passwd ali) et le communiquer ali.
A. le AHMADI Unix our root : nouveau chargement du syst. Unix et agir en mode mono-utlisateur.
Chap 2
Suppression dun utilisateur : seul le root pour supprimer un compte : userdel ali Configuration clavier AZERTY (sur Ubunto) : SystmePrfrencesClavierAgencementsAjouterchoisir France et la slctionner par dfaut. Avoir de laide sur une commande : man commande (exple : # man ls). Affichage du nom de la machine, Unix, version, ... : uname -a Afficher un message : echo message (exple 1 : echo salut tout le monde) (exple2 : # echo n il ; echo pleut : -n limine le retour ligne) Changer le shell dans une session : exec nom_shell (exples ; exec sh, exec csh, exec ksh, exec bash,...) pour revenir au shell prcdent : <ctrl-d> ou exit. Pour changer le shell par dfaut (dans /etc/passwd) : # chsh. Il demandera le password root puis la saisie du shell (exple: /bin/csh). Le nouveau shell sera appliqu la nouvelle session ; Le root peut aussi diter le fichier /etc/passwd puis modifier le shell par dfaut dun user.
Unix
A. AHMADI
Chap 2
Affichage du shell par dfaut : # echo $shell ou echo $SHELL Affichage du nom du terminal utlis : # tty Affichage de la liste des infos (liste de commandes de contrle) : # tty -a Modification dune commande : tty commande combinaison (exple : # stty erase ^H) effacement du dernier caractre par <ctrl-H> Affichage du nom de login dune session : logname Affichage du nom dutilistateur actuel du terminal : whoami (login : toto . Su ali ., # logname toto et # whoami ali ) Effacement lcran : clear Affichage des jours du mois actuel (calendrier) : cal Affichage du calendrier complet dune anne donne : cal annee (exple : # cal 2009) Affichage des jours du mois dune anne : cal mois annee (exple : # cal 3 2009) Affichage du jour et de lheure : date Agrmenter le message de retour de la date : # date +Le %d/%m/%y a %H:%M:%S Le 19/10/09 a 10:15:47
A. AHMADI
Unix
Chap 2
# date +Le %d/%m/%y%n a %Hheures %Mminutes %Ssecondes Le 19/10/09 a 17heures 45minutes 17secondes Pour viter de taper chaque fois cette longue commande, C-shell permet de dfinir des alias : # alias flash \ (\ permet de revenir la ligne et de taper la suite de la commande) date +Le %d/%m/%y%n a %Hheures %Mminutes %Ssecondes Si lon tape la commande flash Unix affichera : Le 19/10/09 a 17heures 45minutes 17secondes Rveil : leave hhmm ou leave +hhmm ou leave +mm # leave 1432 rveil met des appels sonores 14h32) # leave +0215 rveil dans 2h et 15 mn # leave + 13 rveil dans 13 mn Un triple signal sonore : 5mn avant linstant prvu, 1mn avant et linstant prvu
Unix
A. AHMADI
Chap 3
Systme de fichiers
34
Comme la majorit des systmes dexploitation, les donnes sous UNIX sont stockes
dans des fichiers. Ces fichiers sont organiss hirarchiquement en rpertoires ; On peut imaginer le systme de fichiers UNIX comme un arbre (renvers). Les rpertoires sont reprsents par les branches, et les fichiers par les feuilles; Le sommet de larbre sappelle le rpertoire racine (root) ( /) Chaque fichier (ou rpertoire) dans larbre est nomm en listant toutes les branches qui ramnent vers la racine, et en les sparant par des /, comme suit: /home/eleve1/documents/rapports/tp.txt
A. AHMADI
Unix
Chap 3
Systme de fichiers
35
bin
boot
dev
etc
home
lib
mnt
proc sbin
sys
tmp
usr
var
Root directory ( / ) : C'est le haut de l'arborescence. Il n'y a qu'une et une seule entre sur
le file system. Le root directory est le seul rpertoire sans pre. Tous les fichiers et chemins d'accs absolus ont le root directory dans le chemin d'accs. /bin et /sbin : contiennent les commandes de base Unix (ls, cp, rm, mv, ln, etc.) utilises entre autres lors du dmarrage du systme. Les fichiers contenus dans ces rpertoires ne sont que des excutables. /dev : contient les fichiers spciaux permettant de communiquer avec tous les priphriques comme les disques, les terminaux, les drouleurs de bandes, les imprimantes, etc.
A. AHMADI Unix
Chap 3
Systme de fichiers
36
systme. /home : contient les rpertoires personnels des utilisateurs du systme. /root : cest le rpertoire personnel de l'administrateur.
/usr : contient un certain nombre de sous-rpertoires. Chacun contient les fichiers
ncessaires au fonctionnement en mode normal du systme. Par exemple : /usr/bin et /usr/sbin contiennent les commandes supplmentaires non contenues dans /bin et /sbin ; /usr/lib contient les bibliothques pour le fonctionnement d'Unix et pour le dveloppement ; /usr/include contient les fichiers de dclaration des fonctions systme pour le dveloppement.
/var : contient les fichiers variables (susceptibles d'tre modifis frquemment) : journaux
Chap 3
Systme de fichiers
37
A. AHMADI
Unix
Chap 3
Systme de fichiers
38
bin
eleve3 documents
home
eleve1 documents rapports
usr
eleve2 email supports tp2.txt tp3.txt
etc
tp2.txt
tp1.txt
A. AHMADI
Unix
Chap 3
Systme de fichiers
39
1- Commandes Unix
Une commande Unix est compose dun code mnmonique (son nom), suivi parfois
doptions et/ou paramtres. Lespace est le caractre sparateur ; Une commande nest interprte que lorsque lutilisateur a tap <Entre> ; exple : ls l /home/toto Il est possible, tout moment (avant <Entre>) de modifier ou deffacer une commande saisie au clavier : <Backspace> efface le dernier caractre (ou <Ctrl-h>) <Ctrl-u> permet dannuler toute la ligne Remarques : C-shell et Korn-shell permettent de modifier des commandes dj excutes et de les relancer ; Lexcution dune commande peut tre interrompue par <Ctrl-C> : exple : # sleep 60 (son excution dure 60 secondes. Pour linterrompre : <Ctrl-C>) Il est formellement dconseill de de redmarrer la machine Unix : Arrt brutal systme de fichiers incohrent
A. AHMADI Unix
Chap 3
Systme de fichiers
40
les fichiers ; Les options les plus utiles pour ls : -l : affiche le type de fichier, les protections, le nombre de liens avec le fichier, le propritaire, le groupe, la taille en octets, la date de dernire modification et le nom du fichier ; -F : ajoute un "/" aprs le nom de chaque rpertoire, un "*" aprs chaque fichier possdant le droit d'excution et un "@" aprs chaque fichier lien -a : liste tous les fichiers y compris les fichiers cachs. -R : liste les fichiers et les rpertoires de faon rcursive. Les arguments de ls (sils existent) sont interprts comme des noms de fichiers ou de rpertoires.
A. AHMADI
Unix
Chap 3
Systme de fichiers
41
partant de la racine (/) : /users/Etudiants/ali/mail/imp.txt (nommage absolu) Mais si notre rpertoire de travail est /users/Etudiants/ali, il suffira de nommer ce fichier: mail/imp.txt (nommage relatif) Et si le rpertoire de travail est /users/Etudiants/ali/mail : imp.txt (nommage relatif) ; pwd (Print Working Directory) : Affiche le chemin d'accs absolu du rpertoire courant ; cd rep (Change Directory) : Change le rpertoire courant et dplace lutilisateur vers rep ; La commande cd sans arguments dplace lutilisateur vers son rpertoire personnel ; more (MORE) : Permet dafficher le contenu dun fichier page par page Espace : affichage page par page <Entre> : affichage ligne par ligne On peut visualiser le % de lecture en bas Quand un rpertoire est cr, le systme gnre automatiquement 2 sous-rpertoires reprsentant des liens vers le rpertoire cr et le rpertoire pre : le rpertoire "." = rpertoire courant, le rpertoire ".." = rpertoire pre.
A. AHMADI Unix
Chap 3
Systme de fichiers
42
A. AHMADI
Unix
Chap 3
Systme de fichiers
43
Exple : # mkdir /users/Etudiants/ali/temporaire mkdir -p permet de crer une suite de rpertoires. Exple : mkdir -p pgmes/java/essais rmdir (remove directory) : permet de supprimer des rpertoires. Les rpertoires supprimer doivent imprativement tre vides. Syntaxe : rmdir rep1 il est impossible de supprimer des rpertoires qui se trouvent entre la racine et le rpertoire courant. Remarque : Dans les 2 commandes, on peut utiliser des chemins d'accs relatifs ou absolus. Exemples : # mkdir monrep # mkdir monrep/sd1 monrep/sd2 monrep/sd1/sd11 # mkdir monrep/sd3/sd31 # rmdir monrep/sd2 # rmdir monrep/sd3/sd31 monrep/sd3 # rmdir monrep/sd1/sd11 monrep/sd1 monrep du (Disk Usage) : donne loccupation disque en blocs (1 bloc =512 Oct ou 1ko) des sousrpertoires du rep. Spcifi ou du rep. Courant (si aucun rep. nest spcifi)
A. AHMADI Unix
Chap 3
Attributs d'un fichier
Systme de fichiers
44
Par dfinition, un fichier est une suite d'octets possdant les attributs suivants : type, nom masque de protection, nombre de liens avec d'autres fichiers, propritaire et groupe, taille, date de cration et de dernire modification.
Types de fichiers
standard rpertoire lien symbolique fichier spcial mode bloc fichier spcial mode caractre fichier spcial mode rseau pipe nomm Type Code d l b c n p
A. AHMADI
Unix
Chap 3
Systme de fichiers
45
autre ; Les types "fichier spcial mode bloc" et "fichier spcial mode caractre" servent communiquer avec les priphriques (disques, terminaux, etc.) ; Le type "fichier spcial mode rseau" sert de canal de communication entre processus sur diffrentes machines. Le type "pipe nomm" sert de canal de communication entre diffrents processus sur une mme machine.
Noms de fichiers
La syntaxe dun nom de fichier nest pas stricte. Il est recommand de :
Limiter le nom 14 caractres Nutiliser que les lettres MAJ et MIN, les chiffres et quelques caractres (. , -,_) Longueur minimale dun nom : 1 caractre ; Caractres proscrire : \ > < $ ? & * + * ! ( ) @ ~ <espace>, caractres accentus
A. AHMADI Unix
Chap 3
Systme de fichiers
46
* : dsigne toute chane de 0 n caractres ; ? : dsigne un caractre quelconque ; *+ : dsigne un caractre parmi ceux entre crochets. Exples : fich.* : dsigne tous les fichiers de nom fich et ayant suffixe ; essai? : dsigne tous les fichiers ayant 6 caractres dont les 5 premiers sont essai ; [a-f] : dsigne une lettre comprise entre a et f ; [a-z]* : dsigne les noms commenant par une lettre minuscule.
A. AHMADI
Unix
Chap 3
Systme de fichiers
47
fichiers : Exple1 : cat /etc/passwd : affiche le contenu du fichier texte /etc/passwd Exple2 : cat -n /home/toto/essai permet de numroter les lignes du fichier affich Exple3 : cat > essai : cre le fichier essai et crit le texte : Bonjour . Bonjour comment vas-tu ? <Ctrl-d> (caractre de fin de saisie)
La commande cp (CoPy) : permet de copier un fichier (ou un rpertoire)
syntaxe : cp [option] fichier_origine fichier_destination ou cp [option] fichier rpertoire exple1 : cp test1 test2 : fait une copie du fichier test1 en un fichier test2 Nous possdons maintenant deux exemplaires de notre fichier dans /root. Remarque : si lon effectue une copie d'un fichier sur un fichier qui existe dj, celui-ci sera effac et remplac par le nouveau fichier.
A. AHMADI Unix
Chap 3
Systme de fichiers
48
cp -i : avertit l'utilisateur de l'existence d'un fichier du mme nom et lui demande s'il peut ou non remplacer son contenu. cp -b : permet comme l'option -i de s'assurer que la copie n'crase pas un fichier existant : le fichier cras est sauvegard, seul le nom du fichier d'origine est modifi et cp ajoute un tilde (~) la fin du nom du fichier. cp -l : permet de faire un lien "dur" entre le fichier source et sa copie. Le fichier copi et sa copie partageront physiquement le mme espace. cp -p : permet lors de la copie de prserver toutes les informations concernant le fichier comme le propritaire, le groupe, la date de cration ; cp -r : permet de copier de manire rcursive l'ensemble d'un rpertoire et de ses sousrpertoires.
A. AHMADI Unix
Chap 3
Systme de fichiers
49
rm -i : permet de demander l'utilisateur s'il souhaite vraiment supprimer le ou les fichiers en question ; rm -d : permet de supprimer un rpertoire qu'il soit plein ou non (attention dangereux ...) rm -r : permet de supprimer un rpertoire et ses sous rpertoires (attention trs dangereux) rm -f : permet de supprimer les fichiers protgs en criture et rpertoires sans que le prompt demande une confirmation de suppression ( utiliser avec prcaution ...) . La commane mv (MoVe) : permet de renommer et de dplacer un fichier ou un rpertoire : = copie+suppression syntaxe : mv fich1 fich2 ou mv fichiers repertoire
A. AHMADI
Unix
Chap 3
Systme de fichiers
50
mv -b : ('b' comme "backup") va effectuer une sauvegarde des fichiers avant de les dplacer : mv -i : ('i' comme interactive) demande pour chaque fichier et chaque rpertoire s'il peut ou non dplacer fichiers et rpertoires. mv -u : ('u' comme update) demande mv de ne pas supprimer le fichier si sa date de modification est la mme ou est plus rcente que son remplaant
A. AHMADI
Unix
Chap 3
Systme de fichiers
51
exple1 : find / -name test1 -print "/" indique que nous voulons chercher partir de la racine notre fichier test1. "-name " est l'option qui indique ici que nous voulons spcifier le nom d'un fichier. "-print" demande find d'afficher le rsultat. exple2 : find . -name .profile -print recherche le fichier cach .profile partir du rpertoire courant . et laffiche lcran. exple3 : find /home/toto/pgmes test*' -print recherche tous les fichiers commenant par test partir du rpertoire /home/toto/pgmes. exple4 : find . -type f -size +400000c -print recherche tous les fichiers de taille >400000 caractres partir du rp. courant . exple5: find /usr -type d -name bin -print recherche et affiche tous les rpertoires de nom bin, partir du rpertoire /usr. exple6 : find . -name core -exec rm {} \ ; recherche partir du rep. courant, tous les fichiers de nom core et les supprime. La diffrence entre -exec et -ok est que la 2me demandera pour chaque fichier trouv si lon souhaite rellement raliser lopration.
A. AHMADI Unix
Chap 3
Systme de fichiers
52
cas ou celui-ci existerait dj. ln d : effectue des liens durs sur des rpertoires . Seuls les utilisateurs possdant les droits adquats pourront le faire.
A. AHMADI
Unix
Chap 3
Systme de fichiers
53
exple : wich ls affiche /bin/ls La commande grep (GREP) : Recherche dans un ou plusieurs fichiers, toutes les lignes contenant
une chane de caractres donne. exple1 : grep bonjour fich : recherche la chane bonjour dans le fichier fich exple2 : grep n recrutement test.html : recherche dans le fichier test.html, la ligne et son numro, contenant la chane recrutement exple3 : grep l bonjour /home/toto/docs/* : permet de n'afficher que les noms des fichiers du rpertoire /home/toto/docs contenant la chane bonjour .
Syntaxe : ln fich_source fich_lien. 2 types de liens : lien dur et lien symbolique Le lien symbolique fait rfrence un fichier dans un rpertoire alors que le lien dur fait rfrence un espace sur le disque dur.
A. AHMADI
Unix
Chap 3
Systme de fichiers
54
dans un fichier. Un mot est dtermin par des espaces, des tabulations ou une nouvelle ligne. Syntaxe : wc lwc fichier (l : ligne (line) w : mot (word) c :cararactre (character) ) exple : wc w essai : Affiche le nombre de mots du fichier essai.
A. AHMADI
Unix
Chap 3
Exercices
Systme de fichiers
55
Exercice 1
Dans votre rpertoire daccueil, crez larborescence suivante, en nutilisant que des chemins rep1 relatifs :
fich11 rep3
fich12
rep2
fich21
fich22
fich31
fich32
Vrifiez la cration.
Exercice 2
Comment dplacer toute larborescence rep3 sous le rpertoire rep2 ? Supprimez tout sauf rep1, fich11 et fich12.
Exercice 3
A laide de la commande id, dterminez votre UID et votre groupe (nom de groupe et GID). Combien y a t-il dutilisateurs dans votre quipe ?
A. AHMADI Unix
Chap 3
Exercices
Systme de fichiers
56
Exercice 4
Copier les fichiers dont l'avant dernier caractre est un 4 ou 1 dans le rpertoire /tmp en une seule commande.
Exercice 5
Listez tous les fichiers : se terminant par 5 commenant par annee4 commenant par annee4 et de 7 lettres maximum commenant par annee avec aucun chiffre numrique contenant la chane ana commenant par a ou A
A. AHMADI
Unix
Chap 4
protger le contenu : droits daccs (permissions) ; Unix dfinit la notion de groupe dutilisateurs pour permettre le partage de fichiers faciliter le travail en quipe. Tout utilisateur appartient au moins 1 groupe; Droits daccs dun fichier : ensemble dindicateurs associs un fichier ; 3 types dutilisateurs pour chaque fichier : Le propritaire du fichier ; Les membres du groupe du propritaire ; Les autres utilisateurs du systme ; 3 modes daccs (par fichier et par type dutilisateur) : Autorisation dcriture (w) ; Autorisation de lecture (r); Autorisation dexcution (x); 10 attributs associs chaque fichier Unix (1 pour le type et 9 pour la protection) : exple : -rw- rw- r-- (- : fich ordinaire, rw- :droits propritaire, rw- : droits groupe, r-- :droits autres utilisateurs)
Unix
A. AHMADI
Chap 4
commande chmod (Change MODE) ; 2 modes dutilisation de la commande chmod : Description des protections par un nombre octal (utilisation ancienne) : exple1: rwx rw- r-x est reprsent par le nombre octal : 765 111 110 101 exple2 : modification de la protection du fichier essai en r-x rw- rwx : chmod 567 essai Description absolue ou relative des droits daccs (mode symbolique) :
syntaxe : chmod [who] op [permission] fichier who : combinaison de lettres u (user=propr), g (group), o(others=autres) ou a (all=tous) op : oprateur : + (ajoute 1 droit), - (supprime 1 droit), = (affecte 1 droit de manire absolue (tous les autres bits sont remis 0) permission : r (read), w( write), x (execute). exple1 : chmod u-w test: supprime le droit dcriture au propritaire sur le fichier test exple2 : chmod g+r test : ajoute le droit de lecture pour le groupe sur le fichier test exple3 : chmod ug=x test : accs uniquement en excution pour le propriataire et le groupe
A. AHMADI Unix
Chap 4
ne peuvent tre modifis que par son propritaire ; umask permet de dfinir un masque de protection des fichiers et rpertoires lors de leur cration ; Le masque est exprim en base 8 ; exple : # umask 022 022 est soustraite de la permission permanente 777 :
111 111 111 000 010 010 111 101 101 = 755
Rques :
umask 022 permet de dfinir la protection des fichiers rpertoires : rwx r-x r-x est souvent lopration par dfaut ; Pour les fichiers ordinaires, umask 022 dfinit la protection : rw- r-- r-- : lexcution nest pas autorise sur les fichiers ordinaires lors de leur cration. Exple : # umask 022; touch fich1 ; ls -l fich1 -rw- r-- r-- 1 abdou amis 60 Nov 10 10:33 fich1
A. AHMADI Unix
Chap 4
Exple : # ls -dl bin drwx r-x r-x 3 abdou amis 1024 Jul 16 12:45 bin Signification de r , w et x pour les rpertoires : r : permet de voir la liste des fichiers qui sont dans le rpertoire ; x : autorise laccs au rpertoire ( laide de la commande cd) w : autorise la cration, la suppression et le changement du nom dun lment du rp. Cette permission est indpendante de laccs aux fichiers dans le rpertoire. Exple1 : seul lutilisateur toto pourra supprimer et modifier son fichier fich1 Exple2 :
seul lutilisateur toto pourra modifier son fichier fich1, mais il ne pourra pas le supprimer car il na pas w sur le rep toto.
A. AHMADI Unix
Chap 4
pour en changer) ; Une fois la commande chown excute, il nest plus possible les droits daccs ce fichier ; chgrp (Change GRouP) : permet de changer le groupe pour le fichier spcifi, si lutilisateur fait partie du nouveau groupe. Exple : # chgrp amis f1 ; chown ali f1 f1 appartiendra ali et fera partie du groupe amis. On change dabord le groupe du fichier puis son propritaire Rques : Ladministrateur peut accder tous les fichiers il peut modifier les droits daccs ; Dernires versions dUnix : seul ladministrateur pourra utiliser la commande chown.
A. AHMADI
Unix
Chap 4
BSD et System V diffrent sur les points suivants : BSD : Permissions de groupe d1 fichier (ou rep) sont applicables tout utilisateur membre du groupe propritaire du fichier. Tout fichier nouvellement cr a pour groupe propritaire le groupe auquel appartient le rpertoire dans lequel il est cr. un utilisateur peut donc crer 1 fichier appartenant 1 groupe dont il nest pas membre System V : Les permissions de groupe dun fichier (ou rep) ne sont applicables 1 utilisateur que si son groupe effectif est le groupe propritaire du fichier ; 1 utilisateur peut changer de groupe effectif (newgrp nouv_grp) condition dtre membre du nouv_grp ; Tout fichier nouvellement cr a pour groupe propritaire le groupe effectif de son crateur.
A. AHMADI Unix
Chap 4
Exercices
Exercice 1
Dans votre rpertoire courant, crez un rpertoire courant essai_rep, par dfaut ce rpertoire est 755 (rwxr-xr-x). Quelles sont les commandes (en notation symbolique et en base 8) pour lui donner les droits suivants (on suppose qu'aprs chaque commande on remet le rpertoire 755:
propritaire
droit en lecture commande 1 commande 2 commande 3 commande 4 oui oui non non droit en criture oui non oui non
groupe
droit d'accs oui non oui oui
les autres
droit en droit en lecture criture non non oui non non non non non droit d'accs oui oui non non
droit droit en droit en d'accs lecture criture oui oui non oui oui non non oui non oui non non
Exercice 2
Crez un fichier test dans le rpertoire essai_rep prcdent. Par dfaut ce fichier est 644 (rwr--r--). En partant du rpertoire courant, pour chaque commande de l'exercice prcdent, essayez d'accder au rpertoire essai_rep (commande cd), de faire un ls dans essai_rep et de modifier le fichier avec un diteur quelconque.
A. AHMADI Unix
Chap 4
Exercices
Exercice 3
Crez dans un nouveau rpertoire reptest, le fichier bienvenue contenant la ligne de commande : echo Bienvenue dans le monde UNIX Excutez ce fichier.
Exercice 4
Crez un fichier que vous pouvez lire, modifier et supprimer.
Exercice 5
Crez un fichier que vous pouvez lire et supprimer mais que vous ne pouvez pas modifier.
Exercice 6
Crez un fichier que vous pouvez lire mais que vous ne pouvez ni modifier ni supprimer .
Exercice 7
Dans quel cas les permissions dun fichier sa cration sont-elles diffrentes des permissions fixes par umask ?
A. AHMADI
Unix
Chap 4
Exercices
Exercice 8
Supposons que vous travaillez avec un collgue appartenant au mme groupe que vous. Modifiez les permissions du fichier cr lexercice Bienvenue ci-dessus de telle faon que votre collgue puisse le lire et lexcuter, mais ne puisse pas le modifier ni le supprimer. Pouvez-vous modifier les permissions de ce fichier de telle sorte que votre collgue puisse le lire, le modifier et lexcuter alors que vous-mme ne pouvez pas le modifier.
Exercice 9
Comment est attribue la permission deffacer un fichier ? Crez un fichier que votre collgue peut modifier mais pas supprimer et un autre quil peut supprimer mais pas modifier. Est-il logique de pouvoir attribuer de tels droits ? Quelles sont les consquences pratiques de cette exprience ?
Exercice 10
Comment savoir trs simplement si votre systme suit la logique BSD ou System V en ce qui concerne le GID des fichiers la cration ?
A. AHMADI Unix
Chap 5
On
A. AHMADI
Unix
Chap 5
prcde a t excute sans erreur ; || : permet dexcuter la commande qui le suit si et seulement si la commande qui le prcde a t excute avec erreur ; Exple1 : # cd rep1 && rm * suppression des fichiers si la commande cd rep1 a t correctement excute Exple2 : # cd rep1 || mkdir rep1 si le rpertoire rep1 nexiste pas alors il sera cr par la commande mkdir
A. AHMADI
Unix
Chap 5
sortie standard (par dfaut lcran) et une sortie derreurs standard (par dfaut lcran).
Processus Clavier Entre standard Ecran
1 0 2
Sortie standard
Erreur standard
priphrique ; La redirection des sorties peut tre ralise par effacement et cration du fichier ou par ajout la fin du fichier ; En cas de redirection dentre, le fichier doit exister ; La syntaxe de redirection dE/S est diffrente dun shell lautre.
A. AHMADI
Unix
Chap 5
Exples : # ls > sortie1 : range la liste des fichiers du rpertoire courant dans le fichier sortie1 # ls >> fich : ajoute au fichier fich la liste des fichiers du rpertoire courant # ls /ali * > sortie2 : range, dans sortie2, la liste des fichiers du rep /ali et les messages derreurs # (ls /ali * > sortie3)>& err3 : rsultat dans sortie3 et erreurs dans err3
e) 2>f : redirection de la sortie derreurs standard vers f d) 2>>f : sortie derreurs standard est ajoute au fichier f f) commande > fs 2> err : sortiefs et erreurserr
Unix
Chap 5
A. AHMADI
Chap 5
1 0 2
1 2
1 2
Sortie standard
P1|P2|P3
Erreur standard
Erreur standard
Erreur standard
Exple1 : # ls l | more Affichage page par page du contenu du rpertoire courant Exple2 : # ls l | grep rwxr-xr-x | more Affichage page par page des fichiers du rep courant dont les protections sont rwxr-xr-x # ls l > temp1; \<return> grep rwxr-xr-x <temp1 > temp2 \<return> Solution longue!! ; more temp2 ; rm temp1 temp2 Rques : - Toutes le commandes lies par un tube sexcutent an parallle. Cest le systme qui ralise la synchonisation entre le processus metteur et le processus rcepteur ; - Il ny pas de taille limite pour le flot de donnes et pas de fichier temporaire.
A. AHMADI Unix
Chap 5
Chap 5
jobs : liste les travaux en arrire plan avec leurs numros (running ou stopped) fg %num_job : ramne le processus de numro num_job en avnant-plan <Ctrl-Z> : suspend un processus en avant-plan si le terminal le permet (# tty isig). On peut dfinir la touche de suspension : # stty susp <Ctrl-Z> bg %num_job : ractive le processus suspendu numro num_job (devient en arrire-plan) fg %num_job : ractive le processus suspendu numro num_job (devient en premier-plan)
A. AHMADI Unix
Chap 5
VII- Backquoting
Permet dutiliser le rsultat dune commande1 comme argument dune autre commande2. # `commande1` accents graves ou # $(commande1) en korn-shell.
Exple1 : # echo `pwd` affiche /home/toto par contre # echo pwd affiche pwd Exple2 : # more `grep l titi *` : paermet de visualiser le contenu des fichiers du rpertoire courant contenant au moins une fois la chane titi. Exple3 : # echo il y a `who | wc -l` utilisateurs connects : indique le nb dutilisateurs connects Exple4 : # grep -n coucou `find . -type f -print` : affiche les lignes avec leurs numros de tous les fichiers ( partir du rep courant) contenant la chane coucou Exple5 : # rm `find . -mtime +20 -print` : permet de supprimer les fichiers nayant t modifis depuis plus de 20 jours. # find . -mtime +20 -exec rm {} \;
A. AHMADI
Unix
Chap 5
comme un ensemble. # (commande1;commande2) # commande1;commande2 La 1re commande est excute par un nouveau processus shell Exple1 : # (cd doss1;rm temp) : le rpertoire courant ne change pas # cd doss1;rm temp) : le rpertoire courant change. Il devient //doss1 Exple2 : # (echo Aujourdhui;date;echo les \<return> personnes suivantes;who;echo sont connectes) > fs Le fichier fs contiendra le texte : Aujourdhui sont connects Exple3 : # echo Aujourdhui;date;echo les \<return> personnes suivantes;who;echo sont connects > fs Le fichier fs contiendra uniquement le texte : sont connectes Exple4 : # (cp fich1 doss1; find . -mtime +20 -exec rm {} \;) & : Lance les 2 commandes en arrire-plan # cp fich1 doss1; find . -mtime +20 -exec rm {} \; & : Lance uniquement la dernire commande en arrire-plan
A. AHMADI Unix
Chap 5
spciaux (< ? * ) par le shell. Exple1: \<return> : permet de neutraliser leffet de <return> qui est la validation dune commande Exple2 : # touch f\*1 : permet de crer un fichier dont le nom est f*1 Attention : # rm f*1 : supprimera tous les fichiers commenant par f et se terminant par 1 Lutilisation du caractre \ nest pas pratique pour neutraliser une chane de caractres. On peut alors dlimiter la chane par 2 quotes. Exple3 : # touch f*?1 : permet de crer un fichier nomm f*?1 La commande : # rm f*?1 permet de supprimer tous les fichiers commenant par f et se terminant par 1.
A. AHMADI
Unix
Chap 6
I- Processus
Les processus
77
excutable ou un fichier texte contenant une procdure shell. La structure physique dun processus est compose des lments principaux suivants : Identificateur de processus (PID : Process Identifier) ; Numro dutilisateur (UID : User IDentifier) ; Numro du groupe de lutilisateur (GID : Group Identifier) ; Segment code contenant les instructions du programme ; Segment des donnes de lutilisateur. Celles initialises par ce dernier ou par le systme UNIX ( zro) ; Pile qui contiendra les donnes locales, les paramtres et les adresses de retour des sous-programmes, etc. Informations concernant le systme (chemin absolu ou relatif du rep courant, descripteurs des fichiers ouverts par le processus, le terminal qui lanc le pgme, priorit du processus, temps dexcution du processus, contenu des registres). Cette structure dtermine ce que lon appelle Environnement du processus ou encore limage du processus.
A. AHMADI Unix
Chap 6
I- Processus
Les processus
78
fonction systme (ou primitive systme) fork ; Lorsquun processus est cr, son numro est enregistr dans une table systme : table des processus. Une fois le processus est termin, son numro sera supprim de cette dernire. Un processus peut tre lanc en avant-plan (foreground) ou en arrire-plan (background) En avant-plan : toutes les commandes vues jusqu prsent ; En arrire plan : On rajoute le symbole & la fin de la commande. Exple : # find / -name test -print & On voit alors apparatre un numro PID du processus qui vient dtre cr. En C-shell, en plus du PID, il y a un autre numro qui est le numro de job. Dans ce cas, le processus sexcute en arrire-plan et le systme donne la main pour excuter dautres processus. Les processus en avant-plan sont traits de manire squentielle (ou synchrone) ; Les processus en arrire-plan sexcutent en parallle, plus prcisment en multitche (ou asynchrone) Rque : plusieurs processus en arrire-plan redirection pour viter la confusion de rsultats.
A. AHMADI Unix
Chap 6
I- Processus
Les processus
79
La commande wait, sans argument, oblige attendre la fin de tous les processus en arrire-
plan. Le prompt dinvite ne rapparat pas tant que tous ces derniers ne seront pas termins # wait Pour supprimer leffet de wait : on tape <DEL> ou <Ctrl-C> et les processus continueront de sexcuter en arrire-plan ; En systme V : # wait 6042 permet au systme dattendre seulement la fin du processus 6042 # kill 6042 permet de dtruire le processus de PID=6042. Parfois on est oblig taper:#kill -9 PID Seuls lutilisateur, qui a lanc le processus, et le root ont le droit de le dtruire ; Lorsquun processus se termine, il retourne une valeur (status). 0 sil se termine correctement et une valeur non nulle sinon. Pour afficher satus : en Bourne-shell ? Et status en C-shell : Exple : Supposons que le fichier fich1 existe dans le rep courant et que fich2 nexiste pas : En Bourne shell : # cat fich1 > sortie1 # echo $? 0 En C-shell : # cat fich1 >& sortie2 # echo $status 1
Unix
A. AHMADI
Chap 6
I- Processus
Les processus
80
diminuant par rapport sa valeur par dfaut ; Le root peut lui augmenter ou diminuer la priorit de ses processus La commande nice permet la modification de cette proprit : En bourne shell, un processus a par dfaut la priorit 10. Un utilisateur ordinaire pourra la diminuer par : # nice -15 test (option n varie entre 0 et 20). Le root pourra laccrotre par : # nice 10 find / -name fich1 print En C-shell, un processus a par dfaut la priorit 4 et peut varier entre -20 et +20. Pour diminuer la priorit : # nice +12 test ; Pour augmenter la priorit (rserv au root) : # nice -15 test La commande ps permet dafficher ltat des processus dun utilisateur : Le premier processus est celui du shell par dfaut. Il est le pre de tous les processus ; Infos dun processus (PID, TERMINAL, STATUS, TIME, COMMAND). Les tats sont : S : endormi = le processus attend la fin de lexcution des sous-processus quil a crs R : excutable =il est dans la file dattente des processus pouvant sexcuter I : repos =il est inactif (il na pas t sollicit depuis un certain temps qui dpend du sys
A. AHMADI Unix
Chap 6
I- Processus
Les processus
81
Z : zombie = le processus est termin mais le pre nest pas en attente (commande wait) T : arrt = le processus est provisoirement arrt mais il pourra rapparatre. ps -a : permet dafficher tous les processus utilisateurs lancs actuellement sur la machine. Rque : si un utilisateur perd le contrle sur son terminal suite un blocage dun processus en mmoire, il pourra se connecter par un autre terminal et tuer dtruire ce processus par la commande : # kill num_processus ou si ncessaire : #kill -9 num_pr La commande : # kill -9 0 : permet de tuer tous les processus dun utilisateur. On obtiendra le mme rsultat si lon tue directement le processus pre. La commande : # ps -l permet dafficher larborescence des processus. On peut tre inform de la fin dun processus en arrire-plan de 2 manires : En tapant : # ps et en vrifiant ltat du processus en question ; A laide de la commande C-shell : # notify %num_job
A. AHMADI
Unix
Chap 6
I- Processus
Les processus
82
La commande : # limit du C-shell permet dobtenir des informations sur les ressources
maximums alloues un processus (cputime,filesize,datasize,stacksize,coredumpsize, memoryuse). Exple1 : # limit cputime : 300 fixe le temps CPU 300 secondes Exple2 : # limite memoryuse 500 kbytes : fixe la taille mmoire utilisable 500 kbytes Exple3: # unlimit : permet de revenir aux limites par dfaut
A. AHMADI
Unix
Chap 6
II- Jobs
Les processus
83
La commande : # jobs permet dobtenir la liste des numros de jobs actifs et leurs tats. # <Ctrl-Z> permet de dplacer un job en avant-plan de ltat excution ltat arrt # stop %num_job permet de dplacer un job en arriret-plan de ltat excution ltat arrt # %num_job permet de dplacer un job en aavant-plan de ltat arrt ltat excution # bg %num_job permet de faire passer un job de ltat arrt ltat arrire-plan # fg %num_job permet de faire passer un job de ltat arrire-plan ltat avant-plan Pour faire passer un job de ltat avant-plan ltat arrire-plan, on procde comme suit :
On arrte dabord le job en avant-plan par : # <Ctrl-Z> On dtermine ensuite son numro de job par : # jobs On ramne enfin, ce job en arrire-plan par : # bg %num_job Pour tuer un job en arrire-plan : # kill %num_job ou # kill %PID. Cette commande kill permet aussi de tuer un job ltat darrt ; Pour tuer un job en avant-plan : # <Ctrl-C> ou # <Ctrl-\> Rque : On peut dsigner un job par le nom de la commande ou par une chane de caractres incluse dans le nom de la commande, au lieu de son numro. exple : # fg %?test
A. AHMADI Unix
Chap 6
Les processus
84
exple2 :
Exple3:
# atrm r 1314
en BSD
Chap 6
Exple3: # at l
Les processus
85
Le fichier pgme1 sera excut le 19 fvrier 08h25. Si le ./pgme1 > fich2 fichier de sortie nest pas indiqu, le rsultat sera envoy par mail. <Ctrl-D> Rque: si on indique une heure ou une date antrieure la date courante, on est automatiquement report au cycle suivant (jour, semaine, mois ou anne suivante). Exple5: # at 2335 excution 23h35 Exple6 du jour courant excution 9h du jour # at 9 . courant .
val = valeur entire time = date ou now incrment = minutes,hours,days,weeks,months,years # at 0000 Jan 1 + 9 years
Chap 6
Les processus
86
Le root pourra toujours utiliser at pour lancer une excution quelconque ; Le fichier cron/at.allow contient la liste des utilisateurs ventuels de la commande at. Cependant, si un utilisateur ny figure pas, cela napplique pas obligatoirement quil nest pas autoris utiliser la commande at. Si un utilisateur qui nest pas dans cron/at.allow, figure par contre dans le fichier cron/at.deny, ceci implique quil nest pas autoris utiliser la commande at. Si un utilisateur ordinaire ne figure ni dans cron/at.allow ni dans cron/at.deny cela signifie quil peut utiliser la commande at. Cest le root qui peut inscrire des noms dans chacun de ces 2 fichiers, raison dun nom dutilisateur par ligne.
A. AHMADI
Unix
Chap 6
Les processus
87
Exple: # at now + 3 hours som_futur Le script som_futur contient la commande ./somme < fich_e > fich_s Le fichier fich_e contient 2 valeurs 10 et 20 et lexcutable somme fait leur somme et rangera le rsultat dans fich_s aprs 3 heures La commande batch, du Systm V, permet de placer une commande dans une file dattente. Le systme excutera toujours la commande place en tte de la file. Elle est adapt un systme trs charg. Rque : Les commandes de gestion de at restent valables pour batch.
A. AHMADI
Unix
Chap 6
Les processus
88
crontab ; Autorisation dutilisation de crontab : 2 fichiers cron/cron.allow et cron.deny Crontabs/fich_toto : fichier au nom de lutilisateur contenant les commandes excuter cycliquement ; Lutilisateur cre un fichier fich comprenant les indications de la rptition dexcution et de la tche elle-mme. # crontab fich copiera le contenu de fich dans la zone spool du crontab Champ1 : la minute (0-59) Champ2 : lheure (0-23) Champ3 : le jour du mois (1-31) * : valeur quelconque Champ4 : le mois de lanne (1-12) Champ5 : le jour de la semaine (0-6 0=dimanche) Champ6 : tche excuter Exple : 59 0 * * 1-6 tche1 permet dexcuter tche1 tous les jours du lundi au samedi 0h59.Les rsultats sont envoys par mail sauf en cas de redirection. # crontab e : dite directement le crontab de lutilisateur.
A. AHMADI Unix
Chap 7
I-Prsentation gnrale
1- Editeurs de texte ligne
Lditeur ed est le plus ancien. Il a t conu aux Bell Laboratories Lditeur ex est une extension de ed, dvelopp Berkeley
Rque : En fait on nutilise plus les diteurs ligne de nos jours. Toutefois, ces 2 diteurs interviennent encore , indirectement, dans l diteurs page vi et dans lditeur non interactif sed.
tant dditeur de texte classique mais plutt comme outils de manipulation(ou filtre).
A. AHMADI
Unix
Chap 7
II-Lditeur vi
La commande : # vi fich1 permet dafficher le fichier fich1 sil existe sinon elle affichera un
cran vide. Dans les 2 cas le curseur sera positionn en haut gauche. Sous vi on est toujours sous lun des 2 modes : commande (par dfaut) ou insertion. Pour insrer un texte on doit se mettre en mode insertion ; Pour passer du mode commande au mode insertion, on tape lune des touches : i : insertion avant le curseur I : insertion au dbut de la ligne courante o : insertion aprs la ligne courante a : insertion aprs le curseur A : insertion la fin de la ligne courante O : insertion avant la ligne courante
Rques : On entre les caractres graphiques normalement au clavier et barre despace pour un blanc ; On rentre les caractres non graphiques en les faisant prcder de <Ctrl-v> On efface le dernier caractre avant le curseur, par <BACK SPACE> ou <DEL> On va la ligne avec la touche <RETURN> On passe en mode commande avec <ESC> ou <Ctrl-c>
A. AHMADI Unix
Chap 7
II-Lditeur vi
i) Avec sauvegarde du contenu de la mmoire tampon : ZZ ou :wq ou :x Rques: - les commandes prcdes de : sont empruntes lditeur ligne ex. - vi utilise une mmoire tampontoutes les modifications peuvent tre sauvegardes ou annules. ii) Sans sauvegarde du contenu du tampon : :q! (dans tous les cas) ou :q (si le fichier nest pas modifi) . On peut sauvegarder le contenu du tampon sans quitter vi : :w le contenu du tampon sera sauvegard dans le fichier ouvert par vi :w fich_bis enregistre le tampon sous fich_bis (utilis quand vi est lanc sans argument ou lorsquon veut crer une autre copie dans fich_bis qui nexistait pas) :w! fich_bis remplace lancien contenu de fich_bis par le contenu du tampon :5,18 w fich sauvegarde partiellement le contenu du tampon (lignes de 5 18) dans fich
A. AHMADI
Unix
Chap 7
II-Lditeur vi
Dplacement du curseur :
Dplacement
Gauche-droite Droite-gauche
Touche flche droite ou l ou <espace> flche gauche ou h ou <backspace> flche basse ou j flche haute ou k $ + ou <return> 0 -
Fin de phrase : . <espace><espace> ?<espace><espace> !<espace><espace> Ligne blanche Fin de paragraphe : Ligne blanche
Haut-bas
Bas-haut Fin de ligne courante Dbut de la ligne suivante Dbut de ligne courante Dbut de la ligne prcdente La ligne numro n Dbut du text en entier Dernire ligne Fin dune phrase Dbut dune phrase Fin dun paragraphe Dbut dun paragraphe
nG
1G G ) (
} {
A. AHMADI
Chap 7
II-Lditeur vi
- le nom du fichier utilis ; - Eventuellement si le fichier vient dtre modifi ; - le numro de ligne courante ; - le numro total de lignes du fichier ; - le pourcentage de lignes, ramen la ligne courante Exple : fich1 [modified] line 2 of 5 --40%- La commande :set nu permet de numroter les lignes du fichier et :set nonu ralise lopration inverse La commande u permet dannuler leffet de la dernire commande ; La commande U permet de remettre une ligne qui vient dtre modifie en son tat initial Pour appeler une commande shell sans quitter vi : :!commande . Exple : :!date on reviendra lditeur en tapant <Entre> Pour aller dans le shell sans quitter : :!sh . On reviendra au vi en tapant : <Ctrl-d> Pour annuler une requte non encore excute : <ESC> ou <DEL>
A. AHMADI Unix
Chap 7
II-Lditeur vi
Suppressions :
Suppression
Touches x X nx dd ndd D dw db d) d( d} d{
Du caractre repr par le curseur Du caractre gauche du curseur De n caractres partir du curseur De la ligne courante De n lignes partir de la ligne courante Du reste de la ligne partir du curseur Du mot suivant le curseur Du mot prcdant le curseur De la fin de la phrase Du dbut de la phrase De la fin du paragraphe Du dbut du paragraphe
Suppression du caractre courant et passage automatique en mode insertion : s On peut rcuprer les 9 dernires suppressions par : 1p , 2p ,
A. AHMADI
Unix
Chap 7
II-Lditeur vi
La commande p permet de rcuprer : - aprs la position courante du curseur, les lment supprims par une commande x, X, nx, dw, db, dW, ou dB, d) , d( , d} , d{ , prcdente - aprs la ligne courante, les lments supprims par une commande dd , ndd ou encore :n1,n2 d prcdente La commande P a le mme effet que p, mais les lments seront rcuprs, soit avant la position courante du curseur, soit avant la ligne courante. Recherches : - La commande /coucou permet de rechercher la chaine coucou partir de la position du curseur, vers lavant. ?coucou fait la recherche vers larrire(majus diffrent de minus) - La commande fC permet de rechercher, en avant, dans la ligne courante le caractre C - La commande FC permet de rechercher,en arrire, dans la ligne courante le caractre C - Si lon veut excuter de nouveau la commande de recherche dans le sens initialement prvu, on tape n (pour le sens inverse on tape N) - La commande :set ic permet de confondre les les maj et les min la recherche et :set noic annule cet effet.
A. AHMADI Unix
Chap 7
II-Lditeur vi
Substitutions :
- la commande rC permet de remplacer le caractre point par la souris par le caractre C et on reste dans le mode commande ; - la commande R permet de remplacer tous les caractres, partir de la position du curseur, par les caractres saisis. On met fin cette commande en tapant <ESC> - la commande cw mot <ESC> permet de remplacer le mot point par la souris par le mot mot - la commande c texte <ESC> permet de remplacer le reste de la ligne qui suit le curseur par le texte saisi texte . Pour remplacer toute la ligne courante : cc ligne<ESC> - La commande :s/chaine1/chaine2/ permet de remplacer la premire occurrence de la chane chaine1, dans la ligne courante, par chane2 - La commande :s/chaine1/chaine2/g permet de remplacer toutes les occurrences de la chane chaine1, dans la ligne courante, par chane2 - La commande :n,$s/chaine1/chaine2/g permet de remplacer toutes les occurrences de la chane chaine1, du texte partir de le ligne n, par chane2
A. AHMADI Unix
Chap 7
II-Lditeur vi
Copie de texte :
- la commande Y ou yy permet de copier, dans un tampon particulier, la ligne courante - la commande nY permet de copier, dans un tampon particulier, n lignes du texte partir de la position courante ; - La commande :n1,n2 y permet de copier dans le tampon, les lignes n1 n2 - On rcupre le contenu du tampon par la commande p ou P - La commande :nr fich_ext permet dintroduire le contenu du fichier externe fich_ext, dans vi partir de la ligne n - La commande :.r fich_ext permet dintroduire le contenu du fichier externe partir de la ligne courante.
A. AHMADI
Unix
Chap 8
I- Introduction
La programmation shell
98
Le shell : cest un interprteur de commandes et un langage de programmation puissant. Plusieurs shells plusieurs langages diffrents Script : fichier contenant des commandes Jeu dinstructions :
- Toutes les commandes Unix ; - Invocation de programmes excutables (ou scripts) avec arguments ; - Instructions daffectation ; - Instructions conditionnelles et itratives ; - Instructions dEntre/Sortie. Il est possible dcrire et dinvoquer des scripts dans un certain shell tout en utilisant un autre shell en interactif. Le Korn-shell interprte, sans aucun problme, un script crit en Bourne-shell. Si un script commence par #! /bin/xxx, il est interprt par le shell /bin/xxx.
A. AHMADI
Unix
Chap 8
La programmation shell
99
II-Programmation en Bourne-shell
Un script Bourne-shell est portable sur tout systme UNIX ;
Inconvnient : Les variables ne peuvent tre que de type chane de caractres. Les variables
numriques et les tableaux nexistent pas en Bourne-shell. Si un script commence par #, il est interprt par C-shell. # sert indiquer une ligne commentaire en Bourne-shell le script risque de ne pas fonctionner ! Solution : Commencer par la ligne #!/bin/sh, puis ajouter les commentaires dans les lignes suivantes.
Chap 8
1- Le passage des paramtres Le fichier lstf contient :
La programmation shell
100
II-Programmation en Bourne-shell
On a 9 variables : 1, 2, , 9 qui permettent de dsigner les paramtres associs linvocation du script. La commande shift permet dutiliser plus de 9 paramtres : Le fichier echopar1 contient : echopar1 Exple1 : excution :
echo $1 $2 $3
echopar2 Exple2:
P1=$1
shift echo $1 $2 $3 echo $P1
excution :
#echopar2 1 2 3 4 5 6 7 8 9 10 123456789 2 3 4 5 6 7 8 9 10
Chap 8
La programmation shell
101
II-Programmation en Bourne-shell
2- Les variables spciales
Variables facilitant la programmation :
- 0 : contient le nom sous lequel le script est invoqu ; - # : contient le nombre de paramtres passs en argument ; - * : contient la liste de paramtres passs en argument ; - ? : contient le code de retour de la dernire commande excute ; - $ : contient le numro de processus (PID) du shell (en dcimal). Exple1: #echopara un deux trois $0=echopara, $1=un, $2=deux, $3=tois et $* = tous le paramtres
Exple2 :
excution
A. AHMADI
Unix
Chap 8
La programmation shell
102
II-Programmation en Bourne-shell
3- Les caractres spciaux Ce sont des caractres gnrateurs de fichiers et sont utiliss dans la passage de paramtres Exlpe1 : Si le rpertoire courant contient uniquement les fichiers fich1 et fich2, lors de lexcution de la commande : #ls fi* , le shell gnre la liste fich1 et fich2 et la passe en argument la commande ls.
Chap 8
La programmation shell
103
II-Programmation en Bourne-shell
Les expressions les plus utilises
-d rep : vrai si le rpertoire rep existe ; -f fich : vrai si le fichier fich existe ; -s fich : vrai si le fichier fich existe et non vide ; -r fich : vrai si le fichier fich existe et accessible en lecture ; -w fich : vrai si le fichier fich existe et accessible en criture ; -x fich : vrai si le fichier fich existe et est excutable ; -z ch : vrai si la chane de caractres ch est vide ; -n ch : vrai si la chane de caractres ch est non vide ; c1=c2 : vrai si les 2 chanes c1 et c2 sont identiques ; c1!=c2 : vrai si les 2 chanes c1 et c2 sont diffrentes ; n1 eq n2 : vrai si les 2 entiers sont gaux. Les autres oprateurs relationnels : -ne, -lt, -le, -gt, -ge Rque : Les expressions peuvent tre nies par ! et combines par les oprateurs logiques -o (OU) et -a (ET).
A. AHMADI Unix
Chap 8
5- Linstruction case
La programmation shell
104
II-Programmation en Bourne-shell
chane peut prendre diverses : - un chiffre ; - une lettre ou un mot ; - des caractres spciaux du shell - une combinaison de ces lments - elle peut tre rsultat dune `commande` motifi : peut utiliser *, ?,
Chap 8
5- Linstruction case
La programmation shell
105
Case $# in 2) If [ ! -f $1 ] then echo le fichier $1 nexiste pas dans le rpertoire elif [ ! -s $1 -o ! -r $1 ] then echo le fichier $1 est vide ou protg en lecture elif [ ! -f $2 ] then cat $1 > $2 echo $0 a copi $1 dans $2 elif [ ! -w $2 ] then echo le fichier $2 est protg en criture else cat $1 >> $2 echo $0 a rajout $1 en fin de $2 fi ;; *) cat << EOT ajout Fonction : le fichier fsource est ajout au fichier fcible si fcible nexiste pas, fsource est copi en fcible syntaxe : ajo ut fsource fcible EOT ;; esac
II-Programmation en Bourne-shell
A. AHMADI
Unix
Chap 8
6- Les itrations
a- la boucle for
Forme1
La programmation shell
106
II-Programmation en Bourne-shell
Forme2
Forme3
Forme1 : variable prend ses valeurs dans : ch1, ch2, chn ; Forme2 : variable prend ses valeurs dans la liste des paramtres du script ; Forme3 : variable prend ses valeurs dans la liste des fichiers du rpertoire.
Exple1 : echofor1
Exple2 : echofor2
# echofor1 un deux trois
Exple3 : echofor3
On suppose que le rpertoire courant contient les fichiers : fich1, fich2 et fich3
A. AHMADI
Unix
Chap 8
6- Les itrations
a- la boucle for Exple4 : script lsd
La programmation shell
107
II-Programmation en Bourne-shell
echo liste des repertoires sous `pwd` echo ========================= for i in * do if [ -d $i ] then echo $i : repertoire fi done Echo ========================
# lsd liste des repertoires sous /home/toto/test ================================= fifou : repertoire =================================
A. AHMADI
Unix
Chap 8
6- Les itrations
La programmation shell
108
II-Programmation en Bourne-shell
b- Itrations non bornes : while et until while commandealpha Syntaxe do commandesbeta done until commandealpha do commandesbeta done
Condition vraie si commandealpha retourne un code nul
Exple1 : le script wilea listant les paramtres qui lui sont passs en argument jusqu ce quil rencontre le paramtre fin
#! /bin/sh # ce script montre le # fonctionnement de # linstruction while while [ $1 != fin ] ; do echo $1 shift done
A. AHMADI Unix
#wilea 1 2 3 4 fin 5 6 7 1 2 3 4 #
Chap 8
6- Les itrations
La programmation shell
109
II-Programmation en Bourne-shell
b- Itrations non bornes : while et until
Exple2 : script untila
#! /bin/sh # ce script montre lutilisation # de linstruction until until [ $1 = fin ] ; do echo $1 shift done
#! /bin/sh # ce script illustre lusage combin # de while et de until while [ $1 != debut] ; do shift done shift until [ $1 = fin ] ; do echo $1 shift done Unix
#untila 1 2 3 fin 4 5 1 2 3 #
A. AHMADI