I collegamenti simbolici su Linux sono una caratteristica fantastica, ma possono diventare rotti e lasciati puntare al nulla. Ecco come individuare i collegamenti simbolici rotti, riesaminali e rimuoverli dal tuo sistema se è necessario.
Collegamenti simbolici 101.
Collegamenti simbolici , chiamati anche "link soft" e "Symlinks", sono una forma di scorciatoie che possono indicare file e directory. Un simbolico sembra proprio come un file regolare o una directory in una finestra di file manager. Si presenta anche come una voce in un elenco di file in una finestra di terminale. Il file o la directory a cui i punti Symlink possono essere ovunque nell'albero del file system.
Ad esempio, diciamo che hai un simbolo della tua home directory denominato "dave-link" che punta a un file chiamato "text-file.txt" situato da qualche altra parte nell'albero del file system. I comandi che si utilizzano sul file Symlink vengono automaticamente applicati al file a cui punta. Se provi ad usare
gatto
o
meno
Sullo Symlink, vedrai effettivamente il contenuto del file "Text-file.txt".
Un'installazione standard Linux contiene molti simboloni. Anche se non crei te stesso, il sistema operativo li usa. Le routine di installazione dell'applicazione utilizzano spesso i collegamenti simbolici per puntare ai file di eseguibili. Quando il software viene aggiornato, il file binario viene sostituito con la nuova versione, e tutti i collegamenti simbolici continuano a lavorare come prima, purché il nome del nuovo file sia lo stesso del vecchio.
Possiamo facilmente vedere alcuni symklink usando
ls.
nella directory principale. Alcune delle voci sono visualizzate in un colore diverso dal nostro
Ubuntu 20.10.
Test macchina, vengono visualizzati in blu chiaro.
Digitino quanto segue:
LS /
Possiamo fare un aspetto più profondo usando il
-L.
(Lungo elenco) opzione. Digitino il seguente comando per guardare tutte le voci "Libr" e il singolo "Bin" Entrata:
ls -l / lib * / bin
All'inizio di ogni linea è una "L", che indica che l'oggetto è un simbolo. Il testo dopo "- & gt;" Spettacoli su ciò che sta indicando il simbolo. Nel nostro esempio, gli obiettivi sono tutte directory.
Le autorizzazioni sono elencate come lettura, scrittura ed eseguite per il proprietario, il Gruppo e altri. Queste sono voci false predefinite. Non riflettono le autorizzazioni effettive sugli oggetti in cui il punto elenchi di Symlinks. Sono le autorizzazioni sul file di destinazione o nella directory che prendono la precedenza e sono onorate dal file system.
Symlink rotto
Un link simbolico è rotto (o lasciato a sinistra) quando il file a cui punti è cancellato o spostato in un'altra posizione. Se la routine di disinstallazione di un'applicazione non funziona correttamente, o viene interrotta prima che si completa, potresti essere lasciato con i simboloni interrotti.
Se qualcuno elimina manualmente un file senza conoscere gli schemi simbolici, quei lin fori non funzionerà più. Saranno come segnali stradali che indicano una città che è stata bulldottata.
Possiamo facilmente vedere questo comportamento utilizzando un simbolo Symlink chiamato "Ciao" nella directory corrente. Digitino quanto segue, usando
ls.
per vederlo:
LS -L
Indica un programma chiamato "HTG" in una directory chiamata "BIN". Se "eseguiamo" il Symlink, esegue il programma per noi:
./ Ciao
Ora possiamo controllare se questo è ciò che sta accadendo eseguendo direttamente il programma:
../ Bin / HTG
Come previsto, otteniamo la stessa risposta. Eliminiamo il file del programma:
rm ../bin/htg
Ora, quando guardiamo il Symlink, vediamo che è elencato in rosso perché Linux sa che è rotto. Ci dice anche di ciò che è solito puntare, quindi possiamo sostituire il file, ricompilare il programma o fare tutto il necessario per riparare il simbolo.
Si noti che se proviamo a eseguire il simbolo Symlink, l'errore riceviamo riferimenti il nome del simbolo, piuttosto che il nome del programma a cui i punti Symlink.
Digitino quanto segue:
./ Ciao
Trovare simboli discutibili
Versioni più moderne di
trova
avere il
xtype.
(tipo di tipo esteso),
che semplifica la ricerca di simbolistici rotti
. Useremo il
l.
Bandiera con
xtype.
, per dirlo alla ricerca di collegamenti. Usando
trova
e
xtype.
come segue, senza nessuno degli altri
genere
Bandiere, forze
xtype.
Per tornare collegamenti interrotti:
Trova. -xtype l
L'esecuzione del comando nella nostra directory home test trova un bel po 'di symlink rotto. Si noti che la ricerca è ricorsiva per impostazione predefinita, quindi cerca automaticamente tutte le sottodirectory.
Il simbolo "Ciao" che abbiamo rotto apposta è elencato, come ci aspettavamo. Uno degli altri collegamenti simbolici è correlato al browser Firefox e il resto è associato a Snaps.
Se tu tuppe l'uscita attraverso
WC
con il
-L.
(linee) opzione, possiamo contare le linee, che è la stessa del conteggio dei simboloni interrotti.
Digitino quanto segue:
Trova. -xtype L | WC -L
Siamo informati che abbiamo 24 symlink rotti che puntano a nulla.
Trova, review, e quindi rimuovi
Prima di correre ed eliminare tutti i simboli interrotti, guarda attraverso i risultati del
trova
comando. Vedi se c'è una ragione valida per uno qualsiasi dei simboloni interrotti.
A volte, il simbolo potrebbe essere il problema, piuttosto che il file di destinazione. Se il simbolo è stato creato in modo errato, potrebbe indicare nulla, ma è presente il vero obiettivo. Re-creazione del collegamento simbolico sarebbe la correzione in tal caso.
È anche possibile che un simbolo apparentemente rotto sia usato come qualcos'altro, come un indicatore di un blocco file o un altro indicatore di go / no go. Firefox fa questo; Questo è ciò che il primo simbolo della nostra lista è. Firefox non viene utilizzato sulla nostra macchina di prova, però, quindi è sicuro per noi cancellarlo.
È anche possibile che il bersaglio sia presente solo periodicamente, e questo è il comportamento previsto (e desiderato) di quel particolare software. Forse il file di destinazione viene copiato da un'altra macchina o il cloud, esegue la sua funzione e viene quindi cancellato, solo per essere sostituito da un programma diverso nel ciclo successivo.
Il collegamento simbolico rotto potrebbe anche essere un sintomo di un'installazione del software non riuscita. In tal caso, invece di eliminare il riquadro Symlink, è necessario risolvere manualmente o ripetere manualmente l'installazione.
Quando hai riparato i collegamenti interrotti devi mantenere, ripetere il comando per eseguire la ricerca. I simboli fissi dovrebbero quindi essere assenti dai risultati della ricerca.
Per l'amor di sicurezza, è meglio limitare le tue rimozioni simboli alle tue directory. Sii estremamente diffidente di gestire questi comandi come root o su directory di sistema.
Rimozione di symlink rotti
Il
-exec.ec.
(Esegui) Opzione esegue i comandi sul
trova
risultati di ricerca. Useremo
rm
Per eliminare ciascun simbolismo rotto. Il
{}
La stringa viene sostituita con il nome di ciascun simbolo rotto come ognuno è stato scoperto da
trova
.
Dobbiamo usare un punto e virgola (
;
) Per terminare l'elenco dei comandi che vogliamo
-exec.ec.
correre. Useremo un backslash (
\
) Per "fuggire" il punto e virgola, quindi è trattato come parte del
trova
comando, piuttosto che qualcosa
Basamento
dovrebbe agire
Digitino quanto segue:
Trova. -xtype l -exec rm {} \;
Siamo tornati al prompt dei comandi senza indicazione che qualsiasi cosa sia successo. Per verificare che i collegamenti interrotti siano stati rimossi, ripetiamo il comando per cercarli, come segue:
Trova. -xtype l
Non ci sono risultati corrispondenti, il che significa che i simboli dei link rotti sono stati rimossi.
Ricordati di rivedere prima
Ancora una volta, prenditi sempre il tempo per rivedere un elenco di collegamenti simbolici prima di eseguire il comando per eliminarli. Puoi evitare di eliminare qualsiasi non è sicuro di eseguire il comando per eliminarli nelle directory appropriate.
Ad esempio, sopra, avremmo potuto eseguire il comando nella directory ".snap", quindi rimosso manualmente il collegamento simbolico "Ciao" solitario. Ciò avrebbe lasciato intatto il riquadro Firefox Lock Symlink.