Před chvílí jsme vysvětlili, co je měkký odkaz a pevný odkaz s praktickými příklady. Občas můžete zapomenout odstranit nepoužívané měkké odkazy nebo symbolické odkazy, které nikam nesměřují. Ponechání nepoužívaných odkazů na souborovém systému systému nepoškodí, kromě toho, že zabere trochu místa na disku. Nemá tedy smysl je držet. Stačí najít a odstranit poškozené symbolické odkazy ve vašem systému Linux.
Najděte poškozené symbolické odkazy a odstraňte je v systému Linux
V Linuxu může být mnoho způsobů, jak najít nefunkční symbolické odkazy nebo měkké odkazy. Zde jsem uvedl dvě metody.
1. Najděte a odstraňte nefunkční softwarové odkazy pomocí nástroje „Symlinks“
Symlinky je nástroj pro údržbu symbolického odkazu příkazového řádku. Prohledá daný adresář a vypíše symbolické odkazy, pokud nějaké existují.
Symlinks je k dispozici v oficiálních repozitářích mnoha distribucí Linuxu.
Instalace Symlinks na CentOS , spustit:
$ sudo yum install symlinks
Na Fedoře :
$ sudo dnf install symlinks
V Debianu , Ubuntu , Linux Mint :
$ sudo apt-get install symlinks
Na Ubuntu musíte povolit [universe]
úložiště.
$ sudo add-apt-repository universe
Po instalaci symbolických odkazů spusťte následující příkaz k vyhledání a odstranění poškozených symbolických odkazů:
$ symlinks -dr <directory-path>
Výše uvedený příkaz vyhledá nefunkční symbolické odkazy v daném adresáři a odstraní je.
Tady,
d
- odstranit visící symbolické odkazyr
- rekurzivní
Dovolte mi ukázat vám příklad. Chystám se vytvořit soubor s názvem "abc"
v aktuálním adresáři.
$ touch abc
Dále vytvořím symbolický odkaz s názvem 'xyz'
pro abc
soubor:
$ ln -s abc xyz
Nyní odstraňte aktuální soubor, tj. abc
.
$ rm abc
Jak již možná víte, jakmile smažeme skutečný soubor, symbolický odkaz nemá žádnou hodnotu. Protože je to jen zkratka a nyní je nefunkční.
Chcete-li najít poškozené symbolické odkazy, spusťte:
$ symlinks .
Poznamenejte si tečku (.
) na konci. Znamená to, že hledáme nefunkční odkazy v aktuálním adresáři.
Ukázkový výstup:
dangling: /home/sk/xyz -> abc
Zde xyz
visí, protože jsme smazali skutečný zdrojový soubor "abc"
. Pojďme tedy odstranit tento nefunkční odkaz pomocí příkazu:
$ symlinks -dr .
Ukázkový výstup:
dangling: /home/sk/xyz -> abc deleted: /home/sk/xyz -> abc
Nakonec spusťte symlinks
příkaz ještě jednou, abyste se ujistili, že existují nějaké zbývající nefunkční odkazy.
2. Najděte a odstraňte nefunkční softwarové odkazy pomocí příkazu "najít"
Můžeme také použít find
příkaz k odstranění poškozených symbolických odkazů.
Chcete-li najít poškozené symbolické odkazy, ale ne je odstranit, spusťte:
$ find . -xtype l
Tento příkaz zobrazí seznam nefunkčních symbolických odkazů v aktuálním adresáři. Pokud chcete hledat nefunkční symbolické odkazy na konkrétní cestě, například /usr/local/
, udělejte:
$ find /usr/local/ -xtype l
Výstup:
Výše uvedený příkaz vyhledá nefunkční odkazy v /usr/local/
a jeho podadresáře. Jak můžete vidět ve výše uvedeném výstupu, existuje mnoho nefunkčních symbolických odkazů.
Případně použijte následující příkaz k zobrazení seznamu nepoužívaných symbolických odkazů:
$ find /usr/local/ -xtype l ! -exec test -e {} \; -print
Je také možné zkontrolovat, kam ukazují přerušené odkazy. Je dobrým zvykem ujistit se, že odstraňujeme zamýšlené symbolické odkazy.
$ find /usr/local/ -xtype l -exec ls -l {} \+
Ukázkový výstup:
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
Chcete-li odstranit všechny nefunkční odkazy najednou, spusťte:
$ sudo find /usr/local/ -xtype l -delete
Nebo,
$ sudo find /usr/local/ -xtype l ! -exec test -e {} \; -delete
Nahraďte /usr/local/
svou vlastní cestou.
Doporučené čtení:
- Jak vypsat symbolické odkazy v systému Linux
Doufám, že to pomůže.