Il y a quelque temps, nous avons expliqué qu'est-ce qu'un lien souple et un lien physique avec des exemples pratiques. Parfois, vous pouvez oublier de supprimer les liens symboliques inutilisés ou les liens symboliques qui ne pointent nulle part. Garder les liens inutilisés sur le système de fichiers n'endommage pas le système, sauf qu'il occupe un peu d'espace disque. Il ne sert donc à rien de les garder. Trouvez et supprimez simplement les liens symboliques brisés sur votre système Linux.
Rechercher les liens symboliques brisés et les supprimer sous Linux
Il peut y avoir plusieurs façons de trouver des liens symboliques ou des liens symboliques brisés sous Linux. Ici, j'ai donné deux méthodes.
1. Trouvez et supprimez les liens symboliques rompus à l'aide de l'utilitaire "Symlinks"
Liens symboliques est un utilitaire de maintenance de liens symboliques en ligne de commande. Il scanne le répertoire donné et liste les liens symboliques s'il y en a.
Symlinks est disponible sur les dépôts officiels de nombreuses distributions Linux.
Pour installer Symlinks sur CentOS , exécutez :
$ sudo yum install symlinks
Sur Fedora :
$ sudo dnf install symlinks
Sur Debian , Ubuntu , Linux Mint :
$ sudo apt-get install symlinks
Sur Ubuntu , vous devez activer le [universe]
référentiel.
$ sudo add-apt-repository universe
Après avoir installé Symlinks, exécutez la commande suivante pour rechercher et supprimer les liens symboliques rompus :
$ symlinks -dr <directory-path>
La commande ci-dessus recherchera les liens symboliques rompus dans le répertoire donné et les supprimera.
Ici,
d
- supprimer les liens symboliques pendantsr
- récursif
Permettez-moi de vous montrer un exemple. Je vais créer un fichier nommé "abc"
dans le répertoire courant.
$ touch abc
Ensuite, je crée un lien symbolique appelé 'xyz'
pour abc
fichier :
$ ln -s abc xyz
Supprimez maintenant le fichier réel, c'est-à-dire abc
.
$ rm abc
Comme vous le savez peut-être déjà, une fois que nous avons supprimé le fichier réel, le lien symbolique n'a plus aucune valeur. Parce que ce n'est qu'un raccourci et qu'il est cassé maintenant.
Pour trouver les liens symboliques brisés, exécutez :
$ symlinks .
Veuillez noter le point (.
) à la fin. Cela signifie que nous recherchons des liens brisés dans le répertoire courant.
Exemple de résultat :
dangling: /home/sk/xyz -> abc
Ici, xyz
est suspendu parce que nous avons supprimé le fichier source réel "abc"
. Supprimons donc ce lien brisé à l'aide de la commande :
$ symlinks -dr .
Exemple de résultat :
dangling: /home/sk/xyz -> abc deleted: /home/sk/xyz -> abc
Enfin, exécutez symlinks
commande à nouveau pour vérifier s'il reste des liens brisés.
2. Recherchez et supprimez les liens symboliques rompus à l'aide de la commande "rechercher"
Nous pouvons également utiliser find
commande pour supprimer les liens symboliques brisés.
Pour trouver les liens symboliques rompus, mais pas les supprimer, exécutez :
$ find . -xtype l
Cette commande listera les liens symboliques rompus dans le répertoire courant. Si vous souhaitez rechercher des liens symboliques rompus sur un chemin spécifique, par exemple /usr/local/
, faites :
$ find /usr/local/ -xtype l
Sortie :
La commande ci-dessus recherchera les liens brisés dans /usr/local/
et ses sous-répertoires. Comme vous pouvez le voir dans la sortie ci-dessus, il existe de nombreux liens symboliques brisés.
Vous pouvez également utiliser la commande suivante pour répertorier les liens symboliques inutilisés :
$ find /usr/local/ -xtype l ! -exec test -e {} \; -print
Il est également possible de vérifier où pointent les liens rompus. C'est une bonne pratique de s'assurer que nous supprimons les liens symboliques prévus.
$ find /usr/local/ -xtype l -exec ls -l {} \+
Exemple de résultat :
lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/drracket -> /home/sk/racket/bin/drracket lrwxrwxrwx 1 root root 27 Jan 21 08:53 /usr/local/bin/gracket -> /home/sk/racket/bin/gracket lrwxrwxrwx 1 root root 32 Jan 21 08:53 /usr/local/bin/gracket-text -> /home/sk/racket/bin/gracket-text lrwxrwxrwx 1 root root 24 Jan 21 08:53 /usr/local/bin/mred -> /home/sk/racket/bin/mred lrwxrwxrwx 1 root root 29 Jan 21 08:53 /usr/local/bin/mred-text -> /home/sk/racket/bin/mred-text lrwxrwxrwx 1 root root 23 Jan 21 08:53 /usr/local/bin/mzc -> /home/sk/racket/bin/mzc lrwxrwxrwx 1 root root 24 Jan 21 08:53 /usr/local/bin/mzpp -> /home/sk/racket/bin/mzpp lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/mzscheme -> /home/sk/racket/bin/mzscheme lrwxrwxrwx 1 root root 26 Jan 21 08:53 /usr/local/bin/mztext -> /home/sk/racket/bin/mztext lrwxrwxrwx 1 root root 30 Jan 21 08:53 /usr/local/bin/pdf-slatex -> /home/sk/racket/bin/pdf-slatex lrwxrwxrwx 1 root root 29 Jan 21 08:53 /usr/local/bin/plt-games -> /home/sk/racket/bin/plt-games lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/plt-help -> /home/sk/racket/bin/plt-help lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/plt-r5rs -> /home/sk/racket/bin/plt-r5rs lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/plt-r6rs -> /home/sk/racket/bin/plt-r6rs lrwxrwxrwx 1 root root 34 Jan 21 08:53 /usr/local/bin/plt-web-server -> /home/sk/racket/bin/plt-web-server lrwxrwxrwx 1 root root 26 Jan 21 08:53 /usr/local/bin/racket -> /home/sk/racket/bin/racket lrwxrwxrwx 1 root root 24 Jan 21 08:53 /usr/local/bin/raco -> /home/sk/racket/bin/raco lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/scribble -> /home/sk/racket/bin/scribble lrwxrwxrwx 1 root root 29 Jan 21 08:53 /usr/local/bin/setup-plt -> /home/sk/racket/bin/setup-plt lrwxrwxrwx 1 root root 26 Jan 21 08:53 /usr/local/bin/slatex -> /home/sk/racket/bin/slatex lrwxrwxrwx 1 root root 29 Jan 21 08:53 /usr/local/bin/slideshow -> /home/sk/racket/bin/slideshow lrwxrwxrwx 1 root root 27 Jan 21 08:53 /usr/local/bin/swindle -> /home/sk/racket/bin/swindle
Pour supprimer tous les liens rompus d'un coup, exécutez :
$ sudo find /usr/local/ -xtype l -delete
Ou,
$ sudo find /usr/local/ -xtype l ! -exec test -e {} \; -delete
Remplacez /usr/local/
avec votre propre chemin.
Suggestion de lecture :
- Comment répertorier les liens symboliques sous Linux
J'espère que ça aide.