1 Chapitre 3: Systèmes de fichiers Structures d`un système de

Transcription

1 Chapitre 3: Systèmes de fichiers Structures d`un système de
Chapitre 3: Systèmes de fichiers
N°70
Version Janvier 2008
Structures d’un système de fichiers
…
Position :
État :
Nombre :
…
…
0
1
2
3
4
5
…
Espace utilisateur
Position :
État :
Nombre :
Table fichiers
Inode Infos …
N° inode :
Nb. copies :
Inode Infos …
…
Position :
État :
Nombre :
N° inode :
Nb. copies :
…
0
1
2
3
4
5
Tables Descripteurs Fichiers
Processus P2
Tables partagé
partagées
Position :
État :
Nombre :
…
Processus P1
Privé
Privé
N° inode :
Nb. copies :
Inode Infos …
Table inodes
Version Janvier 2008
N°71
Les périphériques
Quelques informations pour commencer
‰ Périphériques = fichiers spéciaux (ex: /dev/rz0a)
‰ Périphériques “caractères” (c)
¾ terminal, réseaux
‰ Périphériques “blocs” (b)
¾ Disques, bandes, Cd-rom
‰ Interface commune: appels systèmes
‰ Identification interne: major, minor
Partitions
‰ Création partition (fdisk…)
‰ Création système de fichier (mkfs)
‰ montage (lecture, écriture…)
‰ Accès « bloc » ou « caractère »
1
N°72
Version Janvier 2008
Propriétés d’un système de fichiers
‰ Technologie différentes (disques, CD-ROM, CLE USB…)
¾ Montage local ou distant (NFS)
‰ Propriétés globales spécifiques
¾ Protections, exportation…
‰ Montage/démontage dynamique
¾ mount, umount (commande ou appel système)
‰ Une hiérarchie de noms
¾ Fichiers normaux, répertoires, spéciaux, liens, tubes…
‰ Partitionnement des sous-hiérarchies
‰ Allocation du média associé (blocs libre…)
‰ Deux niveaux d’organisation:
¾ Logique (suite de blocs, unité d’allocation 1k?)
¾ Physique (secteurs, pistes, cylindres)
N°73
Version Janvier 2008
/dev/rz0a
Arborescence
et volumes
/
shared
‰Root filesystem
‰Swap
‰…
usr
/dev/rz0g
/dev/rz2a
+ partition de swap
oracle
Syst. Fic. virtuel
etud
/dev/rz1a
/dev/rz2g
+ partition de swap
Version Janvier 2008
N°75
Montage et démontage
‰ Commande mount / umount
‰Montages locaux / distants
‰Visualisation: df
‰exemple:
mount -t ext2 -o nodev,nosuid,noexec /dev/sda3 /usr
‰ Automatisation
‰Fichiers: /etc/fstab
‰/etc/init.d/* …
2
N°79
Version Janvier 2008
Montage/démontage et structures
internes
…
mount
/dev/sda3
…
…
/
-t ext2
Inode Infos …
N° inode :
Nb. copies :
Inode Infos …
…
mount
SuperBloc :
Inode cible :
Inode à monter :
Syst. Fichier :
N° inode :
Nb. copies :
…
-t ext2
SuperBloc :
Inode cible :
Inode à monter :
Syst. Fichier :
N° inode :
Nb. copies :
Inode Infos …
…
/dev/sda7
N° inode :
Nb. copies :
/usr
… copie mémoire
Inode Infos …
Table volumes
Table inodes
N°80
Version Janvier 2008
Principales arborescences 1/2
Répertoire
Description
/bin
Binaires
/dev
Périphériques
/etc
Fichiers de configuration
/lib
Bibliothèques de base
/tmp
Fichiers temporaires
/mnt
Montages nfs
/var
Fichiers de log, mail, impression, …
/home
Répertoires utilisateurs
N°81
Version Janvier 2008
Principales arborescences 2/2
Répertoire
Description
/usr/X11R6
Noyau X Window
/usr/bin
Binaires autres paquetages
/usr/include
En-têtes
/usr/lib
Bibliothèques autres paquetages
/usr/man
Manuels en ligne
/usr/src
Source noyau, …
/usr/local
/usr/share
/usr/sbin
Installation locales au site
Fichiers paquetages de l'instal.
Binaires administration
3
N°82
Version Janvier 2008
Filesystem Hierarchy Standard (2004)
Root filesystem
‰
‰
‰
‰
‰
‰
‰
‰
‰
‰
‰
‰
‰
(extrait)
extrait)
Bin : Essential command binaries
Boot : Static files of the boot loader
dev : Device files
etc : Host-specific system configuration
lib : Essential shared libraries and kernel modules
media : Mount point for removeable media
mnt : Mount point for mounting a filesystem temporarily
opt : Add-on application software packages
sbin : Essential system binaries
srv : Data for services provided by this system
tmp : Temporary files
usr : Secondary hierarchy
var : Variable data
Uniformisation des distributions
Version Janvier 2008
N°83
Liens en dur et symbolique
‰Une gestion différenciée
‰Un nom = un lien
‰Liens: père et fils + Entre frères
‰ Lien en dur : même partition + un seul fichier
‰ Lien symbolique : ≈Raccourci + pas de vérification
‰Mise en oeuvre
‰Commandes associées: ln et unlink
‰Par rapport aux inodes:
‰lien en dur [N:1] un inode
‰lien symbolique [1:1] un inode
Version Janvier 2008
N°84
Protections: groupes / utilisateurs
‰ Principaux éléments
‰Grain: le fichier
‰Opérations:
‰lecture, écriture,
‰exécution/traversée
‰Objet: utilisateur, groupe, autres
‰ Ne pas confondre:
‰Groupe de l'utilisateur et groupe d'un fichier
‰Fichier /etc/group
‰Commande newgrp (processus)
‰Commande chgrp (fichier)
‰Liens symbolique / physique
4
Version Janvier 2008
N°85
Protections: de fichier/répertoire
‰ Les fichiers
u
g
o
‰ r: permission de lire le fichier
‰ w: permission d’écrire le fichier, i.e. ajouter, supprimer ou
modifier les données qu’il contient
‰ x: permission d’exécuter le fichier
‰ Les répertoires
‰ r: permission de lire, donc de lister le répertoire
Æ mais pas forcément d’en lire les fichiers…
‰ w: permission d’écrire dans le répertoire et donc de supprimer
les fichiers qu’il contient
‰ x: permission de traverser le répertoire. Sans cette permission,
toute opération est interdite. Cette interdiction est héritée par
tous les fichiers et répertoires qu’il contient
“Un fichier est protégé contre une modification par ses propres permissions,
et contre la suppression par les permissions du répertoire qui le contient.“
Version Janvier 2008
N°86
Structure générale d'un fichier
Qualités requises:
‰ Evolution de la taille des fichiers
‰ Accès efficace
‰ Nombre de fichiers ?
‰ Accès multi-processus
‰ Accès multi-utilisateurs
Î Une structure interne
Î Des appels systè
systèmes approprié
appropriés
Version Janvier 2008
N°87
Structure générale d'une inode 1/2
Copie disque:
disque
‰ Propriétaire
‰ Groupe propriétaire
‰ Type fichier
‰ Droits d'accès
‰ Dates (accès, modification, inode)
‰ Nombres de liens
‰ Adresses disque (blocs)
‰ Taille fichier
‰Référence ACL au fichier et répertoire
Î inode = anglais (i-noeud)
5
N°88
Version Janvier 2008
Structure générale d'une inode 2/2
Copie mémoire = Copie disque + …
‰Verrouillé ?
‰Processus en attente
‰Copie et image disque différentes
‰Périphérique logique
‰Numéro inode
‰Pointeurs inodes (une par liste)
‰liste des inodes libres
‰liste des inodes (adressage calculé)
‰Nombre copies actives
Copie disque
du super bloc
N°89
Version Janvier 2008
Inode de fichier/répertoire
UID
5007
105
GID
répertoire
Type fichier
Protections
rwxr-xr-Date lecture
19/10/2005
Date modification
10/10/2005
Date inode
12/10/2005
Nombre liens
3
Contenu
01 …
10
Taille
345
aaaaaaaaaaa
bbbbbcccccc
contenu
contenu
5007
105
ordinaire
rwxr-xr-19/10/2005
10/10/2005
12/10/2005
5
01 …
10
65345
ddddddddddd
N°
Nom
Un format
ls, cd, …
N°90
Version Janvier 2008
Arborescence et inodes
2010
…
Infos inode
.
..
2010
8010
1003
D1
Infos inode
1067
1003
.
..
.
..
D2
F1
5790
1067
1003
Infos inode
1003
2010
1067
5790
Infos inode
aaaaaaaaaaaccccccc
bbbbbbbbbbbbbbbb
6
N°91
Version Janvier 2008
Organisation physique
Blocs de donnees
0
1
Taille max (blocs) =
2
3
10 +
256 +
4
5
6
2562 +
2563
7
8
9
simple
..
.
double
triple
Taille max (blocs) =
10 + 256 + 2562 + 2563
ls –il
..
.
..
.
..
.
..
.
..
.
N°92
Version Janvier 2008
Organisation physique:
Comprendre les choix
‰Choix d'organisations
‰Blocs contiguës
‰Table des blocs
‰Compactage, nettoyage
‰Taille de blocs
‰Accès indirect
‰Répertoire / fichier
‰Conséquences
‰Fragmentation
‰Efficacité (espace / temps)
‰Limite des fichiers
N°93
Version Janvier 2008
Information sur fichiers: norme POSIX
Nom attribut
st_mode
st_ino
st_dev
st_nlink
st_uid
st_gid
st_size
st_atime
st_mtime
st_ctime
Description
Mot = bits de protection
Identif. Fich.: num. i-node
Périphérique du fichier
Nombre de liens
Ident. utilisateur
Ident. groupe
Taille en octets
Date dern. accès lecture
Date dern. accès écriture
Date dern. modification
7
N°94
Version Janvier 2008
Accès aux fichiers: norme POSIX
Routine
‰ fd = creat (nom,mode)
‰ fd = open (fichier,mode)
‰ e = close (fd)
‰ n = read (fd,buff,nb)
‰ n = write (fd,buff,nb)
‰ p = lseek (fd,dep,deb)
‰ e = stat (nom,&buff)
‰ fd = mkdir (nom,mode)
‰ e = rmdir (nom)
‰ e = link (nom1,nom2)
‰ e = unlink (nom)
‰ e = chdir (nom_rep)
‰ e = chmod (nom,mode)
Description
‰ création nouveau fichier
‰ ouverture fichier lecture/ecriture
‰ fermeture fichier ouvert
‰ lecture fichier --> tampon
‰ écriture tampon --> fichier
‰ déplacement dans fichier
‰ récupération info. fichiers
‰ création répertoire
‰ suppression répertoire
‰ création nouvelle Entrée
‰ suppression Entrée
‰ changement répertoire de Travail
‰ modification protection de fichier
N°95
Version Janvier 2008
Contenu inode: stat,
stat fstat,
fstat lstat
Descripteur fichier
Informations
inode
Nom fichier
‰ lstat:
lstat: informations sur le lien symbolique luilui-même
‰ fstat: accès direct par le descripteur ce fichier
‰ lstat accè
accès par le nom de fichier
‰ Mise à jour des tables internes (noyau)
Version Janvier 2008
N°96
Informations sur un fichier
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int main ()
{
int fd, e;
struct stat buf;
...
e = stat ("/etc/passwd",&buf);
/* autre possibilité */
fd = open ("/etc/passwd", ...);
e = fstat (fd, &buf);
printf ("Nombre liens: %d", buf.st_nlink);
}
¾ Macros POSIX: S_ISREG(m),
S_ISDIR(m),
I_SRWXU
S_ISREG
S_ISDIR
Commande(s) associée(s): ls
Structure(s) interne(s): inode
8
N°97
Version Janvier 2008
stat,
stat fstat,
fstat lstat (compléments)
Protections + type de fichiers
Numéro dans /etc/
etc/passwd
Numéro dans /etc/group
etc/group
Taille en octets
Dates : modification Inode,
accès et modifications du
contenu
N° inode sur disque
!!
Nombre liens en dur
+ st_dev et r_dev : majeur/mineur
+ st_blksize et st_blocks
N°98
Version Janvier 2008
Obtenir le type d’un fichier
struct stat
.
.
st_mode
.
.
<sys/stat.h>
Extraire le type
N°99
Version Janvier 2008
Obtenir les droits d’un fichier
if(st->st_mode & S_IRUSR) …
if(st->st_mode & S_IWUSR) …
st_mode
if(st->st_mode & S_IXGRP) …
…
.
.
if(st->st_mode & S_IXUSR) …
…
struct stat
.
.
if(st->st_mode & S_IXOTH) …
<sys/stat.h>
Macros sur les protections : voir open
9
N°100
Version Janvier 2008
Obtenir le nom de login / groupe
lahire:x:1543:34:Philippe Lahire:/home/lahire:bin/bash
struct passwd* getpwuid (uid_t uid)
struct stat
.
=
.
st_uid
st_gid
/etc/group
+/etc/shadow
/etc/passwd
=
struct group* getgrgid (gid_t gid)
prof:x:34:Professeurs:lahire …
Voir getpwent (3)
N°101
Version Janvier 2008
Synthèse getpwent(3)
‰Adresse de la structure si résultat OK
‰NULL si uid ou gid n’existe pas
‰Champs « passwd »,« passwd_gr » : adminstrateur
N°102
Version Janvier 2008
Information sur les périphériques
struct stat
.
.
st_dev
st_rdev
macros
#include <sys/
sys/types.h>
types.h>
int minor (dev_t d)
int major (dev_t
(dev_t d)
‰st_dev: du S.F. qui contient le fichier
‰st_rdev: du fichier spécial (si /dev/…)
‰Majeur = classe de l’appareil
‰Mineur = numéro d’instance de la classe
création par mknod(8) ou /dev/MAKEDEV
10
N°103
Version Janvier 2008
Manipuler des dates (1)
struct stat
.
.
st_atime
st_mtime
st_ctime
fonctions
Retour: NULL si ¬OK
#include <time.h>
time.h>
struct tm*
tm* localtime (const time_t t)
struct tm*
tm* gmtime (const time_t t)
‰Dates GMT : nb sec. depuis 01/01/1970 à 12 PM
‰ st_atime (read), st_mtime (write)
st_ctime (creat, chmod, chown…)
‰ localtime : fuseau (config. Syst.) + heure été/hiver
‰ gmtime : temps GMT universel
N°104
Version Janvier 2008
Manipuler des dates (2)
Passer d’
d’un Format à un autre
time
mktime
ctime,
ctime,
ctime_r
asctime,
asctime,
asctime_r
N°105
Version Janvier 2008
Manipuler des dates (3)
en secondes
À partir d’un
struct tm
fourni par
« l’utilisateur »
‰ ctime_r + asctime_r:
asctime_r: ré
résultat = pointeur sur « buf »
‰ Transformation de la date (seconde ou struct tm) en
chaîne de caractères
‰ Le ré
résultat est internationalisé
internationalisé
11
N°106
Version Janvier 2008
Manipuler des dates (4)
Si ¬NULL:
modification
de la « date »
Heure du
système
Date au format
« struct tm »
Date au format
« time_t »
date(1) = printf(« %s\n », ctime(time())
ctime(time()))
N°107
Version Janvier 2008
Manipuler des dates (5)
Buffer + taille
pour la sortie
Heure à
formater
Exemple de
format
Voir
strftime (3)
N°108
Version Janvier 2008
Internationalisation (1)
Agir sur les variables d’environnement :
‰ LC_TIME : conventions utilisées pour les dates
‰ LC_MONETARY, LC_COLLATE, LC_TYPE,
LC_NUMERIC, LANG
Signe monétaire, jeu de caractères, ordre alphabétique…
‰ LC_ALL: S’applique à tous
en (anglais)
de (allemand)
…
12
N°109
Version Janvier 2008
Internationalisation (2)
Paramétrer un programme pour l’internationalisation :
‰ #include <locale.h>
Laisser la liberté
liberté
‰ setlocale (LC_ALL, « »);
Imposer
‰ setlocale (LC_ALL, « fr_FR »);
‰…
time_t
struct tm
char …
[MAX]
N°110
Version Janvier 2008
Manipuler les dates d’un fichier (1)
Nom du fichier
Nouvelles
« dates »
st_atime
st_mtime
‰ La date associée à l’inode est mise à jour
‰ times = NULL ⇒ date courante
‰ il faut avoir les droits en écriture sur le fichier
Version Janvier 2008
N°111
Manipuler les dates d’un fichier (2)
#include <sys/types.h>
#include <utime.h>
int main ()
{
int fd, e;
struct utimbuf tbuf;
...
tbuf.actime = ...
tbuf.modtime = ...
e = utime ("/etc/passwd", &tbuf);
}
Commande(s) associée(s): ls, touch
Structure(s) interne(s): inode
13
N°112
Version Janvier 2008
Gérer le propriétaire d'un fichier(1)
Nom du fichier
Propriétaire
& groupe
Descripteur
de fichier
Il y a aussi chgrp
‰ chown ≈ fchown
‰ lchown (lien symbolique) chown (fichier référencé)
‰ MAJ de st_ctime (c’est normal?)
N°113
Version Janvier 2008
Gérer le propriétaire d'un fichier (2)
#include <sys/types.h>
#include <unistd.h>
int main ()
{
int fd, e;
...
e = chown ("/etc/passwd", 1014, 50);
/* autre possibilité */
fd = open ("/etc/passwd", ...);
e = fchown (fd, 1014, 50);
}
Commande(s) associée(s): chown
Structure(s) interne(s): inode
N°114
Version Janvier 2008
Créer un lien (en dur)
Nom initial
Nom du
lien
‰ Sorte d’alias…
‰ Incrémentation du nombre de liens en dur
‰ Appartenance au même Système de Fichiers
‰ Pas de liens en l’air (gestion par le système)
‰ Efficacité: pas de fichier intermédiaire
‰ Mais: retrouver les noms « à la main »…
14
N°115
Version Janvier 2008
Créer un lien symbolique
Nom initial
Nom du
lien
‰ nombre de liens en dur sur newpath:
newpath 1
‰ 2 inodes : celle du lien et celle du fichier
⇒ Efficacité vs lisibilité
‰ Liens en l’air possibles
‰ Lien à travers les systèmes de fichiers
N°116
Version Janvier 2008
Supprimer un lien
Nom du fichier
‰ Effacement d’un lien en dur
‰ Effacement du fichier si c’est le dernier
‰ Il faut avoir les droits…
droits…
Version Janvier 2008
N°117
Création/suppression d'un lien
#include <unistd.h>
int main ()
{
int e;
...
Le fichier lien symbolique
e = link ("/etc/passwd", "/tmp/passwd");
e = symlink ("/etc/passwd", "/tmp/passwd");
e = symlink ("/etc", "/tmp/etc");
e = unlink ("/tmp/passwd");
e = unlink ("/tmp/etc");
}
Commande associée(s): ln, unlink, rm
Structure(s) interne(s): inode
15
N°118
Version Janvier 2008
Rappel sur les droits d’accès (open)
Pour donner des droits
Le propriétaire
Le Groupe propriétaire
Les autres
N°119
Version Janvier 2008
Vérifier l’accès à un fichier
Nom du
fichier
Droits
demandés
mode = droit de …
‰ R_OK:
R_OK lecture
‰ W_OK:
W_OK écriture
‰ X_OK:
X_OK exécution ou traversée
‰ F_OK:
F_OK existence
N°120
Version Janvier 2008
Gérer les protections d’un fichier (1)
Nom du
fichier
droits
Descripteur
De fichier
‰ mode = combinaison des 3 permissions pour les 3 catégories
et de 3 indicateurs
⇒ S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IROTH
⇒ S_ISUID | S_IRGRP | S_IROTH
‰ Indicateurs…
16
N°121
Version Janvier 2008
Gérer les protections d’un fichier (2)
Fichier
normal
(*)
Répertoire
3 indicateurs : interprétation ≠ (fichier normal / répertoire)
(*) gestion de verrou si ¬exécutable (voir cours)
N°122
Version Janvier 2008
Gérer les protections d'un fichier (3)
#include <sys/types.h>
#include <sys/stat.h>
int main ()
{
int fd, e;
...
e = chmod ("/etc/passwd", S_IRWXU);
/* autre possibilité */
fd = open ("/etc/passwd", ...);
e = fchmod (fd, S_IRWXU);
}
Commande(s) associée(s): chmod
Structure(s) interne(s): inode
N°123
Version Janvier 2008
Manipuler le masque de protection
Nouveau
masque
‰ Utilisation des 9 macros
3 permissions pour les 3 catégories
‰ mode = idem chmod
S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IROTH
‰ Mais : marque une interdiction
‰ Se combine avec ce qui est donné par open: ET
‰ S’applique au futur fichiers créés
17
N°124
Version Janvier 2008
Protections de fichier et processus (1)
Processus P
real user-id
real group-id
RUID
EUID
SUID
effective
user-id
RGID
EGID
SGID
effective
group-id
saved set
group-id
saved set
user-id
N°125
Version Janvier 2008
Protections de fichier et processus (2)
login + group(s)
=
Sauf si
set-user-id
Processus P
RUID
EUID
SUID
RGID
EGID
SGID
owner
group
Fichier de P
ou
Contrainte (si EUID != 0):
new = RUID/SUID
Différents effets :
cours sur les processus
=
sauf si
set-group-id
Restaurer aprè
après
« set/drop privilege »
OU: utilisation de :
setuid, setgid (posix)
setreuid, setregid
…
Avoir les privilèges
Version Janvier 2008
N°126
Appels systèmes et liens symboliques
S’applique sur…
sur
Le fichier lien symbolique :
‰ lchown, chown, lstat, readlink, unlink
‰ remove, rename
Le fichier luilui-même :
‰ chmod, creat, chown, link, mkdir, open, stat
‰ access, chdir, exec, mkfifo, opendir, pathconf,
truncate, rename
18
N°127
Version Janvier 2008
Créer/Supprimer un répertoire (1)
droits
Nom du
répertoire
‰ S_ISGID : droits du gr. Du répertoire = droits de ses fichiers
‰ S_ISVTX : création de fichiers ¬renommer & ¬supprimer
‰ S_IX…
S_IX… : X est pour « traverser »
‰ rmdir:
rmdir le répertoire doit être vide
‰ rmdir : fonctionne comme unlink
N°128
Version Janvier 2008
Créer/supprimer un répertoire (2)
#include <sys/types.h>
#include <sys/stat.h>
int main ()
{
int e;
...
e = mkdir ("/tmp/myrep", S_IWUSR);
e = rmdir ("/tmp/myrep");
}
Commande(s) associée(s): mkdir, rmdir, rm
Structure(s) interne(s): inode
N°129
Version Janvier 2008
Ouvrir un répertoire
Nom du
répertoire
‰ DIR : un peu comme FILE (section 3)
‰ Curseur placé sur la 1ère entrée
‰ Combien d’entrée minimum?
19
N°130
Version Janvier 2008
Parcourir un répertoire
«descripteur»
N° inode
Nom fichier
Et le chemin ?
‰ Seul endroit où est stocké un nom de fichier
‰ Avance le curseur
N°131
Version Janvier 2008
Réinitialiser/Fermer un répertoire
«descripteur»
(*)
(**)
‰ (*) Position sur la 1ère entrée (affecte table noyau)
‰ (**) Affecte la TDF et les tables du noyau
‰ (**) rend les ressources aux système
N°132
Version Janvier 2008
Réinitialiser/Fermer un répertoire
«descripteur»
(*)
(**)
‰ (*) Position sur la 1ère entrée (affecte table noyau)
‰ (**) Affecte la TDF et les tables du noyau
‰ (**) rend les ressources aux système
20
N°133
Version Janvier 2008
Accès au contenu d'un répertoire
#include <sys/types.h>
#include <dirent.h>
int main () {
DIR* dir;
struct dirent * entry;
dir = opendir ("/var");
entry = readdir (dir);
printf ("%s - %d", entry->d_name, entry->d_ino);
closedir(
closedir dir);
}
‰ seekdir,
seekdir telldir,
telldir ...
Commande(s) associée(s): ls, mv, …
Structure(s) interne(s): tables des fichiers
N°134
Version Janvier 2008
Manipuler le répertoire courant (1)
Nom de
fichier
«descripteur»
Chemin
absolu
‰ Affecte le contenu d’un processus
‰ Allocation de buf + taille allouée
Version Janvier 2008
N°135
Manipuler le répertoire courant (2)
#include <unistd.h>
int main ()
{
int fd, e;
...
e = chdir ("/etc");
/* autre possibilité */
fd = open ("/etc", ...);
e = fchdir (fd);
}
ÎTable des fichiers: Changement nombre de références
Commande(s) associée(s): cd
Structure(s) interne(s): Tables des fichiers, processus
21
N°136
Version Janvier 2008
Renommer / Déplacer un fichier
Fichier de
départ
Fichier
d’arrivée
‰ newpath dans le même système de fichiers
‰ Autres liens en du non affectés
‰ Si cible existe elle est écrasée
‰ Nombreuses restrictions
Chemin correct, cible: répertoire non vide,…
‰ Commande mv
N°137
Version Janvier 2008
Synchronisation Disque/buffer
Descripteur de fichier
‰ sync:
sync synchronise les buffers (écriture) et disques
‰ fsync:
fsync idem mais pour un fichier
‰ Différer l’écriture ⇒ accélérer les échanges
‰ Toutes les xx sec. + arrêt de la machine
Version Janvier 2008
N°138
Synchronisation Disque/buffer
#include <unistd.h>
int main ()
{
int fd, e;
...
/* Ouverture fichier en écriture */
fd = open ("/etc/passwd", ...);
...
e = fsync (fd);
sync () /* S. F. */
}
Commande associée(s): sync
Structure(s) interne(s): Tables, buffer, inode
22
N°139
Version Janvier 2008
Système de fichier /proc (1)
Processus en cours
Autres informations : mémoire, noyau, paramètres systèmes, …
N°140
Version Janvier 2008
Système de fichier /proc (2)
Systèmes de fichiers
supportés
Information sur la mémoire
N°141
Version Janvier 2008
Système de fichier /proc (3)
Information sur la table des volumes montés
23
N°142
Version Janvier 2008
Système de fichier /proc (4)
Proprié
Propriétaire,
taire, PID
Répertoire courant
Exé
Exécutable
Répertoire Racine
Variables environnement
24