104.7 Leçon 1
Certification : |
LPIC-1 |
---|---|
Version : |
5.0 |
Thème : |
104 Disques, systèmes de fichiers Linux, arborescence de fichiers standard (FHS) |
Objectif : |
104.7 Rechercher des fichiers et ranger des fichiers aux emplacements appropriés |
Leçon : |
1 sur 1 |
Introduction
Les distributions Linux se déclinent sous plusieurs formats, mais elles partagent presque toutes le Filesystem Hierarchy Standard (FHS), une norme qui définit une "disposition standard" pour le système de fichiers, ce qui facilite considérablement l’interopérabilité et l’administration du système. Dans cette leçon, vous en apprendrez plus sur cette norme et sur la manière de retrouver des fichiers sur un système Linux.
L’arborescence de fichiers standard (FHS)
L’arborescence de fichiers standard (FHS) est un projet de la Fondation Linux visant à normaliser la structure et le contenu des répertoires sur les systèmes Linux. Le respect de cette norme n’est pas obligatoire, mais la plupart des distributions s’y conforment.
Note
|
Ceux et celles qui s’intéressent aux détails de l’organisation du système de fichiers peuvent consulter la spécification FHS 3.0, disponible dans plusieurs formats à l’adresse suivante : http://refspecs.linuxfoundation.org/fhs.shtml. |
Selon la convention, la structure de base des répertoires se présente comme suit :
/
-
Le répertoire racine est le répertoire le plus élevé de la hiérarchie. Tous les autres répertoires sont situés à l’intérieur de celui-ci. Un système de fichiers est souvent comparé à un "arbre", il s’agit donc du "tronc" auquel toutes les branches sont connectées.
/bin
-
Binaires indispensables, disponibles pour tous les utilisateurs.
/boot
-
Fichiers nécessaires au processus de démarrage, y compris le disque mémoire initial (
initrd
) et le noyau Linux lui-même. /dev
-
Fichiers de périphériques. Il peut s’agir de périphériques physiques connectés au système (par exemple,
/dev/sda
serait le premier disque SCSI ou SATA) ou de périphériques virtuels créés par le noyau. /etc
-
Fichiers de configuration propres à la machine. Les programmes peuvent créer des sous-répertoires sous
/etc
pour stocker une multitude de fichiers de configuration en cas de besoin. /home
-
Chaque utilisateur du système dispose d’un répertoire "chez lui" pour stocker ses fichiers personnels et ses préférences, et la plupart d’entre eux sont situés dans
/home
. En règle générale, le répertoire personnel est le même que le nom d’utilisateur, de sorte que l’utilisateur John aura son répertoire sous/home/john
. Les exceptions notables sont le superutilisateur (root
) qui a son propre répertoire (/root
) et certains utilisateurs du système. /lib
-
Bibliothèques partagées nécessaires au démarrage du système d’exploitation et à l’exécution des binaires sous
/bin
et/sbin
. /media
-
Les supports amovibles montés par l’utilisateur, tels que les clés USB, les lecteurs de CD et de DVD-ROM, les disquettes, les cartes mémoire et les disques externes, sont montés à cet endroit.
/mnt
-
Point de montage pour les systèmes de fichiers montés temporairement.
/opt
-
Paquets de logiciels d’application.
/root
-
Répertoire personnel du superutilisateur (
root
). /run
-
Données variables d’exécution.
/sbin
-
Binaires du système.
/srv
-
Données servies par le système. Par exemple, les pages servies par un serveur web pourront être stockées sous
/srv/www
. /tmp
-
Fichiers temporaires.
/usr
-
Données utilisateur en lecture seule, y compris les données requises par certains outils et certaines applications secondaires.
/proc
-
Système de fichiers virtuel contenant des données liées aux processus en cours.
/var
-
Données variables enregistrées pendant le fonctionnement du système, y compris la file d’attente d’impression, les données de journalisation, les boîtes aux lettres, les fichiers temporaires, le cache du navigateur, etc.
Gardez à l’esprit que certains de ces répertoires, comme /etc
, /usr
et /var
, renferment toute une hiérarchie de sous-répertoires.
Fichiers temporaires
Les fichiers temporaires sont des fichiers utilisés par les programmes pour stocker des données qui ne sont utilisées que pendant une période limitée. Il peut s’agir des données des processus en cours, des journaux de plantage, des fichiers de récupération d’une sauvegarde automatique, des fichiers intermédiaires utilisés lors de la conversion d’un fichier, des fichiers de cache, etc.
Emplacement des fichiers temporaires
La version 3.0 du Filesystem Hierarchy Standard (FHS) définit des emplacements standard pour les fichiers temporaires sur les systèmes Linux. Chaque emplacement a sa propre finalité et son propre comportement, et il est recommandé aux développeurs de suivre les conventions définies par le FHS lorsqu’ils écrivent des données temporaires sur le disque.
/tmp
-
D’après le FHS, les programmes ne doivent pas partir du principe que les fichiers écrits dans ce répertoire seront conservés entre deux invocations d’un programme. Il est recommandé de vider ce répertoire (en effaçant tous les fichiers) lors du démarrage du système, même si cela n’est pas obligatoire.
/var/tmp
-
Un autre emplacement pour les fichiers temporaires, mais celui-ci ne doit pas être effacé lors du démarrage du système. Les fichiers stockés ici persistent généralement entre les redémarrages.
/run
-
Ce répertoire contient les données variables d’exécution utilisées par les processus en cours, telles que les fichiers d’identification de processus (
.pid
). Les programmes qui ont besoin de plus d’un fichier d’exécution peuvent créer des sous-répertoires ici. Cet emplacement doit être nettoyé lors du démarrage du système. La fonction de ce répertoire était autrefois assumée par/var/run
, et sur certains systèmes,/var/run
peut constituer un lien symbolique vers/run
.
Notez que rien n’empêche un programme de créer des fichiers temporaires ailleurs sur le système, mais il est de bon ton de respecter les conventions établies par le FHS.
Recherche de fichiers
Pour rechercher des fichiers sur un système Linux, vous pouvez utiliser la commande find
. Il s’agit d’un outil très puissant, doté de nombreux paramètres qui permettent d’adapter son comportement et de modifier les résultats en fonction de vos besoins.
Pour commencer, find
a besoin de deux arguments : un point de départ et ce qu’il faut chercher. Par exemple, pour rechercher tous les fichiers dans le répertoire courant (et les sous-répertoires) dont le nom se termine par .jpg
, vous pouvez utiliser :
$ find . -name '*.jpg' ./pixel_3a_seethrough_1.jpg ./Mate3.jpg ./Expert.jpg ./Pentaro.jpg ./Mate1.jpg ./Mate2.jpg ./Sala.jpg ./Hotbit.jpg
Ceci va correspondre à n’importe quel fichier dont les quatre derniers caractères du nom sont .jpg
, indépendamment de ce qui précède, puisque *
est un joker pour "n’importe quoi". Cependant, voyez ce qui se passe lorsqu’un autre *
est ajouté à la fin du motif :
$ find . -name '*.jpg*' ./pixel_3a_seethrough_1.jpg ./Pentaro.jpg.zip ./Mate3.jpg ./Expert.jpg ./Pentaro.jpg ./Mate1.jpg ./Mate2.jpg ./Sala.jpg ./Hotbit.jpg
Le fichier Pentaro.jpg.zip
(mis en évidence ci-dessus) n’a pas été inclus dans la liste précédente, étant donné que même s’il contient .jpg
dans son nom, il ne correspondait pas au motif car il y avait des caractères supplémentaires après. Le nouveau motif signifie "n’importe quoi .jpg
n’importe quoi", donc il correspond.
Tip
|
Gardez à l’esprit que le paramètre |
L’expression *.jpg
doit être placée entre guillemets simples, pour éviter que le shell n’interprète le motif lui-même. Essayez sans les guillemets et voyez ce qui se passe.
Par défaut, find
va commencer au point de départ et descendre dans tous les sous-répertoires (et les sous-répertoires de ces sous-répertoires) trouvés. Vous pouvez restreindre ce comportement avec les paramètres -maxdepth N
, où N
représente le nombre maximum de niveaux.
Pour effectuer une recherche uniquement dans le répertoire courant, vous utiliserez -maxdepth 1
. Supposons que vous ayez la structure de répertoire suivante :
directory ├── clients.txt ├── partners.txt -> clients.txt └── somedir ├── anotherdir └── clients.txt
Pour effectuer une recherche dans somedir
, vous devez utiliser -maxdepth 2
(le répertoire courant +1 niveau plus bas). Pour chercher dans anotherdir
, il faut utiliser -maxdepth 3
(le répertoire courant +2 niveaux plus bas). Le paramètre -mindepth N
fonctionne à l’inverse en ne recherchant que dans les répertoires au moins N
niveaux en dessous.
Le paramètre -mount
peut être utilisé pour éviter que find
ne descende à l’intérieur des systèmes de fichiers montés. Vous pouvez également restreindre la recherche à certains types de systèmes de fichiers en utilisant le paramètre -fstype
. Ainsi, find /mnt -fstype exfat -iname "*report*"
ne cherchera que dans les systèmes de fichiers exFAT montés en dessous de /mnt
.
Recherche par caractéristiques
Vous pouvez utiliser les paramètres ci-dessous pour rechercher des fichiers ayant des caractéristiques spécifiques, comme ceux qui sont accessibles en écriture pour votre utilisateur, ceux qui disposent d’un jeu de permissions spécifique ou encore ceux d’une taille donnée :
-user USERNAME
-
Recherche les fichiers appartenant à l’utilisateur
USERNAME
. -group GROUPNAME
-
Recherche les fichiers appartenant au groupe
GROUPNAME
. -readable
-
Recherche les fichiers accessibles en lecture pour l’utilisateur actuel.
-writable
-
Recherche les fichiers accessibles en écriture pour l’utilisateur actuel.
-executable
-
Recherche les fichiers exécutables par l’utilisateur actuel. Dans le cas des répertoires, cela correspond à tous les répertoires auxquels l’utilisateur peut accéder (permission
x
). -perm NNNN
-
Cela va correspondre à tous les fichiers qui ont exactement la permission
NNNN
. Par exemple,-perm 0664
correspondra à tous les fichiers auxquels l’utilisateur et le groupe peuvent accéder en lecture et en écriture et que les autres peuvent lire (ourw-rw-r--
).
Vous pouvez ajouter un -
avant NNNN
pour rechercher les fichiers qui ont au moins la permission spécifiée. Par exemple, -perm -644
correspondra aux fichiers qui ont au moins les permissions 644
(rw-r—r--
). Cela inclut un fichier avec 664
(rw-rw-r--
) ou même 775
(rwxrwx-r-x
).
-empty
-
Recherche les fichiers et les répertoires vides.
-size N
-
Recherche tous les fichiers de taille
N
, oùN
est par défaut un nombre de blocs de 512 octets. Vous pouvez ajouter des suffixes àN
pour d’autres unités :Nc
comptera la taille en octets,Nk
en kibibytes (KiB, multiples de 1024 octets),NM
en mebibytes (MiB, multiples de 1024 * 1024) etNG
pour gibibytes (GiB, multiples de 1024 * 1024 * 1024).
Là encore, vous pouvez ajouter les préfixes +
ou -
(qui signifient ici plus grand que et plus petit que) pour rechercher des tailles relatives. Par exemple, -size -10M
correspondra à tous les fichiers dont la taille est inférieure à 10 MiB.
Par exemple, pour rechercher des fichiers dans votre répertoire personnel qui contiennent le motif report
insensible à la casse dans n’importe quelle partie du nom, qui disposent des permissions 0644
, qui ont été consultés il y a dix jours et dont la taille est d’au moins 1 Mib, vous pouvez utiliser la commande suivante :
$ find ~ -iname "*report*" -perm 0644 -atime 10 -size +1M
Recherche par période
En dehors de la recherche de caractéristiques, vous pouvez également effectuer des recherches en fonction du temps, afin de trouver les fichiers auxquels vous avez accédé, dont les caractéristiques ont été modifiées ou qui ont été modifiés au cours d’une période donnée. Voici les paramètres :
-amin N
,-cmin N
,-mmin N
-
Ceci va correspondre aux fichiers qui ont été accédés, dont les attributs ont été changés ou qui ont été modifiés (respectivement) il y a
N
minutes. -atime N
,-ctime N
,-mtime N
-
Cela va correspondre aux fichiers qui ont été accédés, dont les attributs ont été changés ou qui ont été modifiés il y a
N*24
heures.
Pour -cmin N
et -ctime N
, tout changement d’attribut va déclencher une correspondance, y compris un changement de permissions, l’écriture ou la lecture du fichier. Ce qui rend ces paramètres particulièrement efficaces, puisque pratiquement toute opération impliquant le fichier déclenchera une correspondance.
L’exemple suivant correspondrait à tout fichier du répertoire courant qui a été modifié il y a moins de 24 heures et dont la taille est supérieure à 100 MiB :
$ find . -mtime -1 -size +100M
Utiliser locate
et updatedb
locate
et updatedb
sont des commandes qui peuvent être utilisées pour trouver rapidement un fichier qui correspond à un motif donné sur un système Linux. Contrairement à find
, locate
ne va pas rechercher le motif dans le système de fichiers : au lieu de cela, il va le chercher dans une base de données construite grâce à la commande updatedb
. Cette approche fournit des résultats très rapides, mais qui peuvent être imprécis en fonction de la date de la dernière mise à jour de la base de données.
La manière la plus simple d’utiliser locate
est de lui fournir un motif de recherche. Par exemple, pour trouver toutes les images JPEG sur votre système, vous pourrez utiliser locate jpg
. La liste des résultats peut être assez longue, mais elle devrait ressembler à ceci :
$ locate jpg /home/carol/Downloads/Expert.jpg /home/carol/Downloads/Hotbit.jpg /home/carol/Downloads/Mate1.jpg /home/carol/Downloads/Mate2.jpg /home/carol/Downloads/Mate3.jpg /home/carol/Downloads/Pentaro.jpg /home/carol/Downloads/Sala.jpg /home/carol/Downloads/pixel_3a_seethrough_1.jpg /home/carol/Downloads/jpg_specs.doc
Lorsque le motif jpg
est demandé, locate
va afficher tout ce qui le contient, indépendamment de ce qui le précède ou ce qui le suit. Vous pouvez voir un exemple de ce comportement dans le fichier jpg_specs.doc
de la liste ci-dessus : il contient le motif, mais l’extension n’est pas jpg
.
Tip
|
N’oubliez pas qu’avec |
Par défaut, le motif est sensible à la casse. Cela veut dire que les fichiers contenant .JPG
ne seront pas affichés puisque le motif est en minuscules. Pour éviter ceci, passez le paramètre -i
à locate
. Reprenons notre exemple ci-dessus :
$ locate -i .jpg /home/carol/Downloads/Expert.jpg /home/carol/Downloads/Hotbit.jpg /home/carol/Downloads/Mate1.jpg /home/carol/Downloads/Mate1_old.JPG /home/carol/Downloads/Mate2.jpg /home/carol/Downloads/Mate3.jpg /home/carol/Downloads/Pentaro.jpg /home/carol/Downloads/Sala.jpg /home/carol/Downloads/pixel_3a_seethrough_1.jpg
Notez que le fichier Mate1_old.JPG
, en gras ci-dessus, n’était pas présent dans les résultats de recherche précédents.
Vous pouvez fournir plusieurs motifs à locate
, il suffit de les séparer par des espaces. L’exemple ci-dessous effectue une recherche insensible à la casse pour tous les fichiers qui contiennent les motifs zip
et jpg
:
$ locate -i zip jpg /home/carol/Downloads/Expert.jpg /home/carol/Downloads/Hotbit.jpg /home/carol/Downloads/Mate1.jpg /home/carol/Downloads/Mate1_old.JPG /home/carol/Downloads/Mate2.jpg /home/carol/Downloads/Mate3.jpg /home/carol/Downloads/OPENMSXPIHAT.zip /home/carol/Downloads/Pentaro.jpg /home/carol/Downloads/Sala.jpg /home/carol/Downloads/gbs-control-master.zip /home/carol/Downloads/lineage-16.0-20190711-MOD-quark.zip /home/carol/Downloads/pixel_3a_seethrough_1.jpg /home/carol/Downloads/jpg_specs.doc
Lorsque vous utilisez plusieurs motifs, vous pouvez demander à locate
de n’afficher que les fichiers qui correspondent à tous les motifs. Cela se fait avec l’option -A
. L’exemple suivant affichera tous les fichiers correspondant aux motifs .jpg
et .zip
:
$ locate -A .jpg .zip /home/carol/Downloads/Pentaro.jpg.zip
Si vous souhaitez compter le nombre de fichiers qui correspondent à un motif donné au lieu d’afficher leur chemin complet, vous pouvez utiliser l’option -c
. Par exemple, pour compter le nombre de fichiers .jpg
sur un système :
$ locate -c .jpg 1174
Un problème avec locate
c’est qu’il n’affiche que les entrées présentes dans la base de données générée par updatedb
(située dans /var/lib/mlocate.db
). Si cette base de données est obsolète, la recherche peut montrer des fichiers qui ont été supprimés depuis la dernière fois qu’elle a été mise à jour. Une manière d’éviter cela est d’ajouter le paramètre -e
, qui vérifiera si le fichier existe toujours avant de l’afficher dans les résultats.
Bien évidemment, cela ne va pas résoudre le problème des fichiers créés après la dernière mise à jour de la base de données et qui n’apparaissent pas. Pour cela, vous devrez mettre à jour la base de données avec la commande updatedb
. Le temps que cela va prendre dépendra de la quantité de fichiers sur votre disque.
Contrôler le comportement de updatedb
Le comportement de updatedb
peut être contrôlé par le fichier /etc/updatedb.conf
. C’est un fichier texte où chaque ligne définit une variable. Les lignes vides sont ignorées et les lignes qui commencent par le caractère #
sont traitées comme des commentaires.
PRUNEFS=
-
Tous les systèmes de fichiers indiqués à la suite de ce paramètre ne seront pas analysés par
updatedb
. La liste doit être séparée par des espaces, et les systèmes de fichiers sont insensibles à la casse, ce qui veut dire queNFS
etnfs
sont équivalents. PRUNENAMES=
-
Une liste de noms de répertoires séparés par des espaces, et qui ne doivent pas être analysés par
updatedb
. PRUNEPATHS=
-
Une liste de chemins qui doivent être ignorés par
updatedb
. Les chemins doivent être séparés par des espaces et spécifiés de la même manière qu’ils seraient affichés parupdatedb
(par exemple,/var/spool/media
). PRUNE_BIND_MOUNTS=
-
Une simple variable
yes
ouno
. Si elle vautyes
, les montages bind (répertoires montés ailleurs avec la commandemount --bind
) vont être ignorés.
Recherche de fichiers binaires, de pages de manuel et de code source
which
est une commande très utile qui affiche le chemin complet d’un exécutable. Par exemple, si vous voulez localiser l’exécutable de bash
, vous pouvez utiliser :
$ which bash /usr/bin/bash
Avec l’option -a
, la commande affichera tous les chemins correspondant à l’exécutable. Notez la différence :
$ which mkfs.ext3 /usr/sbin/mkfs.ext3 $ which -a mkfs.ext3 /usr/sbin/mkfs.ext3 /sbin/mkfs.ext3
Tip
|
Pour savoir quels répertoires se trouvent dans le |
type
est une commande comparable qui va afficher des informations sur un binaire, y compris sa localisation et son type. Il suffit d’utiliser type
suivi du nom de la commande :
$ type locate locate is /usr/bin/locate
Le paramètre -a
fonctionne de la même manière qu’avec which
, en affichant tous les chemins qui correspondent à l’exécutable. Par exemple :
$ type -a locate locate is /usr/bin/locate locate is /bin/locate
Le paramètre -t
indique le type de fichier de la commande qui peut être alias
(alias), keyword
(mot-clé), function
(fonction), builtin
(primitive du shell) ou file
(fichier). Par exemple :
$ type -t locate file $ type -t ll alias $ type -t type type is a built-in shell command
La commande whereis
est plus polyvalente. En dehors des binaires, elle peut également être utilisée pour indiquer l’emplacement des pages de manuel ou même du code source d’un programme (à condition qu’il soit disponible sur le système). Tapez simplement whereis
suivi du nom du binaire :
$ whereis locate locate: /usr/bin/locate /usr/share/man/man1/locate.1.gz
Le résultat ci-dessus comprend les binaires (/usr/bin/locate
) et les pages de manuel compressées (/usr/share/man/man1/locate.1.gz
).
Vous pouvez filtrer sommairement les résultats en utilisant des options en ligne de commande comme -b
qui n’affichera que les binaires, -m
qui affichera les pages de manuel ou -s
qui affichera le code source. En répétant l’exemple ci-dessus, vous obtiendrez :
$ whereis -b locate locate: /usr/bin/locate $ whereis -m locate locate: /usr/share/man/man1/locate.1.gz
Exercices guidés
-
Admettons qu’un programme doive créer un fichier temporaire à usage unique et qui ne sera plus jamais utilisé après la fermeture du programme. Quel serait le répertoire correct pour créer ce fichier ?
-
Quel est le répertoire temporaire qui doit être vidé pendant la procédure de démarrage ?
-
En utilisant
find
, recherchez uniquement dans le répertoire courant les fichiers accessibles en écriture pour l’utilisateur, modifiés au cours des 10 derniers jours et dont la taille est supérieure à 4 GiB. -
En utilisant
locate
, cherchez tous les fichiers contenant les deux motifsreport
et soitupdated
,update
ouupdating
dans leurs noms. -
Comment savoir où se trouve la page de manuel de
ifconfig
? -
Quelle variable doit être ajoutée à
/etc/updatedb.conf
pour queupdatedb
ignore les systèmes de fichiersntfs
? -
Un administrateur système souhaite monter un disque interne (
/dev/sdc1
). D’après le FHS, sous quel répertoire faut-il monter ce disque ?
Exercices d’approfondissement
-
Lorsqu’on utilise
locate
, les résultats sont extraits d’une base de données générée parupdatedb
. Cependant, cette base de données peut être obsolète, ce qui fait quelocate
affiche des fichiers qui n’existent plus. Comment faire en sorte quelocate
n’affiche que les fichiers existants dans ses résultats ? -
Recherchez tous les fichiers du répertoire actuel ou des sous-répertoires jusqu’à deux niveaux en-dessous, en excluant les systèmes de fichiers montés, et qui contiennent le motif
Status
oustatute
dans leur nom. -
En limitant la recherche aux systèmes de fichiers
ext4
, recherchez tous les fichiers dans le répertoire/mnt
qui ont au moins les permissions d’exécution pour le groupe, qui sont accessibles en lecture pour l’utilisateur actuel et dont l’un des attributs a été modifié au cours des deux dernières heures. -
Trouvez les fichiers vides qui ont été modifiés il y a plus de 30 jours et qui se trouvent au moins deux niveaux plus bas que le répertoire actuel.
-
Supposons que les utilisateurs
carol
etjohn
fassent partie du groupemkt
. Trouvez dans le répertoire personnel dejohn
tous les fichiers qui sont également accessibles en lecture pourcarol
.
Résumé
Dans cette leçon, vous avez appris l’organisation de base du système de fichiers sur une machine Linux selon le FHS, et comment trouver des binaires et des fichiers, soit par leur nom, soit par leurs caractéristiques. Les commandes suivantes ont été abordées dans cette leçon :
find
-
Une commande polyvalente utilisée pour trouver des fichiers et des dossiers en fonction d’une série de critères de recherche.
locate
-
Un outil qui utilise une base de données locale contenant les emplacements des fichiers stockés localement.
updatedb
-
Met à jour la base de données locale utilisée par la commande
locate
. which
-
Affiche le chemin complet d’un exécutable.
whereis
-
Affiche l’emplacement des pages de manuel, des fichiers binaires et du code source sur le système.
type
-
Affiche l’emplacement d’un binaire et le type d’application dont il s’agit (programme installé, primitive du shell Bash, etc.).
Réponses aux exercices guidés
-
Admettons qu’un programme doive créer un fichier temporaire à usage unique et qui ne sera plus jamais utilisé après la fermeture du programme. Quel serait le répertoire correct pour créer ce fichier ?
Puisque nous n’avons plus besoin du fichier une fois que le programme a fini de s’exécuter, le répertoire correct est
/tmp
. -
Quel est le répertoire temporaire qui doit être vidé pendant la procédure de démarrage ?
Le répertoire est
/run
ou/var/run
, selon les systèmes. -
En utilisant
find
, recherchez uniquement dans le répertoire courant les fichiers accessibles en écriture pour l’utilisateur, modifiés au cours des 10 derniers jours et dont la taille est supérieure à 4 GiB.Pour cela, vous aurez besoin des paramètres
-writable
,-mtime
et-size
:find . -writable -mtime -10 -size +4G
-
En utilisant
locate
, cherchez tous les fichiers contenant les deux motifsreport
et soitupdated
,update
ouupdating
dans leurs noms.Étant donné que
locate
doit correspondre à plusieurs motifs, utilisez l’option-A
:locate -A "report" "updat"
-
Comment savoir où se trouve la page de manuel de
ifconfig
?Utilisez le paramètre
-m
pourwhereis
:whereis -m ifconfig
-
Quelle variable doit être ajoutée à
/etc/updatedb.conf
pour queupdatedb
ignore les systèmes de fichiersntfs
?La variable est
PRUNEFS=
suivie du type de système de fichiers :PRUNEFS=ntfs
. -
Un administrateur système souhaite monter un disque interne (
/dev/sdc1
). D’après le FHS, sous quel répertoire faut-il monter ce disque ?Théoriquement, le disque peut être monté n’importe où. Ceci étant dit, le FHS recommande que les montages temporaires soient effectués en-dessous de
/mnt
.
Réponses aux exercices d’approfondissement
-
Lorsqu’on utilise
locate
, les résultats sont extraits d’une base de données générée parupdatedb
. Cependant, cette base de données peut être obsolète, ce qui fait quelocate
affiche des fichiers qui n’existent plus. Comment faire en sorte quelocate
n’affiche que les fichiers existants dans ses résultats ?Ajoutez le paramètre
-e
à locate, comme danslocate -e PATTERN
. -
Recherchez tous les fichiers du répertoire actuel ou des sous-répertoires jusqu’à deux niveaux en-dessous, en excluant les systèmes de fichiers montés, et qui contiennent le motif
Status
oustatute
dans leur nom.Rappelez-vous que pour
-maxdepth
vous devez également prendre en compte le répertoire courant, nous voulons donc trois niveaux (le répertoire courant et deux niveaux inférieurs) :find . -maxdepth 3 -mount -iname "*statu*"
-
En limitant la recherche aux systèmes de fichiers
ext4
, recherchez tous les fichiers dans le répertoire/mnt
qui ont au moins les permissions d’exécution pour le groupe, qui sont accessibles en lecture pour l’utilisateur actuel et dont l’un des attributs a été modifié au cours des deux dernières heures.Utilisez le paramètre
-fstype
demount
pour limiter la recherche à des types de systèmes de fichiers spécifiques. Un fichier lisible par l’utilisateur actuel doit avoir au moins4
dans le premier chiffre des permissions, et un fichier exécutable par le groupe doit avoir au moins1
dans le deuxième chiffre. Puisque nous ne nous soucions pas des permissions des autres, nous pouvons utiliser0
pour le troisième chiffre. Utilisez-cmin N
pour filtrer les changements d’attributs récents, en vous rappelant que N est spécifié en minutes. Donc :find /mnt -fstype ext4 -perm -410 -cmin -120
-
Trouvez les fichiers vides qui ont été modifiés il y a plus de 30 jours et qui se trouvent au moins deux niveaux plus bas que le répertoire actuel.
Le paramètre
-mindepth N
peut être utilisé pour limiter la recherche àN
niveaux au moins, mais rappelez-vous que vous devez inclure le répertoire courant dans le décompte. Utilisez-empty
pour détecter les fichiers vides, et-mtime N
pour vérifier la date de modification. Donc :find . -empty -mtime +30 -mindepth 3
-
Supposons que les utilisateurs
carol
etjohn
fassent partie du groupemkt
. Trouvez dans le répertoire personnel dejohn
tous les fichiers qui sont également accessibles en lecture pourcarol
.Sachant qu’ils sont membres du même groupe, nous avons besoin d’au moins un
r
(4
) sur les permissions du groupe, et nous ne nous préoccupons pas des autres. Donc :find /home/john -perm -040