GNU/Linux >> Znalost Linux >  >> Linux

Jak najít a odstranit nefunkční symbolické odkazy v Linuxu

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.

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.

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é odkazy
  • r - 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.

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.


Linux
  1. Jak najít a zabít zombie proces v Linuxu

  2. Jak vytvořit a odstranit uživatelskou skupinu v Linuxu

  3. Jak odstranit adresář a složku v Linuxu?

  1. Jak vyhledávat a odstraňovat adresáře rekurzivně v systému Linux

  2. Jak odstranit vyrovnávací paměti a mezipaměť v Linuxu

  3. Jak najít a odstranit duplicitní fotografie v Linuxu

  1. Jak najít soubory v Linuxu

  2. Co je UID v Linuxu, jak jej najít a změnit

  3. Jak najít a odstranit prázdné adresáře a soubory v Linuxu