Legăturile simbolice de pe Linux sunt o caracteristică fantastică, dar ele pot deveni sparte și lăsate îndreptate spre nimic. Iată cum să localizați link-urile simbolice sparte, să le revizuiți și să le eliminați din sistemul dvs. dacă aveți nevoie.
Link-uri simbolice 101.
Link-uri simbolice , numit și "link-uri moi" și "symlinks", sunt o formă de comenzi rapide care pot indica fișierele și directoarele. Un symlink arată la fel ca un fișier sau un director obișnuit într-o fereastră de fișiere Manager. De asemenea, apare ca o intrare într-o listă de fișiere într-o fereastră terminală. Fișierul sau directorul la care punctele Symlink pot fi oriunde în arborele sistemului de fișiere.
De exemplu, să spunem că aveți un symlink în directorul de acasă numit "Dave-Link" care indică un fișier numit "Text-File.txt" situat în altă parte în arborele sistemului de fișiere. Comenzile pe care le utilizați pe symlink sunt aplicate automat la fișierul la care arată. Dacă încercați să utilizați
pisică
sau
Mai puțin
Pe symlink, veți vedea de fapt conținutul fișierului "Text-File.txt".
O instalare standard Linux conține multe symlink-uri. Chiar dacă nu creați singur, sistemul de operare le folosește. Rutinele de instalare a aplicațiilor utilizează adesea symlink-uri pentru a indica fișierele executabile. Când software-ul este actualizat, fișierul binar este înlocuit cu noua versiune și toate symlink-urile continuă să lucreze ca înainte, atâta timp cât numele noului fișier este același cu cel vechi.
Putem vedea cu ușurință câteva symlink-uri folosind
Ls.
în directorul rădăcină. Unele intrări sunt afișate într-o culoare diferită - pe noi
Ubuntu 20.10.
Mașină de testare, sunt afișați în albastru deschis.
Introducem următoarele:
LS /
Putem face o privire mai profundă prin utilizarea
-l.
(listare lungă). Introducem următoarea comandă pentru a ne uita la toate intrările "lib" și introducerea unică "bin":
ls -l / lib * / bin
La începutul fiecărei linii este un "L", care indică faptul că elementul este un symlink. Textul după "- & gt;" arată la ceea ce indică symlinkul. În exemplul nostru, obiectivele sunt toate directoare.
Permisiunile sunt enumerate ca citite, scriere și executate pentru proprietar, grup și altele. Acestea sunt intrări false implicite. Ele nu reflectă permisiunile reale ale obiectelor la care punctul de symlink. Este permisiunile din fișierul țintă sau directorul care iau prioritate și sunt onorați de sistemul de fișiere.
Brokenk symlinks.
Un symlink este spart (sau stânga) atunci când fișierul la care punctele IT este șters sau mutat într-o altă locație. Dacă rutina de dezinstalare a unei aplicații nu funcționează corect sau este întreruptă înainte de finalizarea acestuia, ați putea fi lăsată cu simboluri sparte.
Dacă cineva șterge manual un fișier fără să știi symlink-ul punct, acele symlink-uri nu vor mai funcționa. Ei vor fi ca semnele rutiere care indică un oraș care a fost buldozat.
Putem vedea cu ușurință acest comportament folosind un symlink numit "Bună ziua" în directorul curent. Introducem următoarele, folosind
Ls.
pentru a vedea:
LS -L
Acesta indică un program numit "HTG" într-un director numit "Bin". Dacă "executăm" symlinkul, execută programul pentru noi:
. / Bună ziua
Acum putem verifica dacă acest lucru se întâmplă prin rularea programului direct:
../ bin / htg
După cum era de așteptat, obținem același răspuns. Să ștergem fișierul programului:
Rm ../bin/htg
Acum, când ne uităm la symlink, vedem că este listat în roșu, deoarece Linux știe că este spart. De asemenea, ne spune la ceea ce obișnuia să sublinieze, astfel încât să putem înlocui fișierul, să recompilați programul sau să facem tot ce este necesar pentru a repara symlink-ul.
Rețineți că, dacă încercăm să rulăm symlinkul, eroarea primăm referire la numele Symlink, mai degrabă decât numele programului la care punctele Symlink.
Introducem următoarele:
. / Bună ziua
Găsirea seminkurilor sparte
Cele mai moderne versiuni ale
găsi
au
XTYPE.
(Tip extindere),
care simplifică găsirea simbolurilor rupte
. Vom folosi
L.
steag cu
XTYPE.
, să-i spuneți să caute linkuri. Folosind.
găsi
și
XTYPE.
după cum urmează, fără oricare din cealaltă
tip
Steaguri, Forte
XTYPE.
Pentru a reveni legăturile rupte:
Găsiți. -XTYPE L
Rularea comenzii în directorul de acasă de testare găsește destul de puține symlinkuri sparte. Rețineți că căutarea este recursivă în mod implicit, deci caută automat toate subdirectoarele.
Symlinkul "salut" pe care l-am rupt cu scopul este listat, așa cum ne-am așteptat. Unul dintre celelalte symlink-uri este legat de browserul Firefox, iar restul sunt asociate cu Snaps.
Dacă conduci ieșirea prin
toaleta
cu
-l.
(linii), putem număra liniile, care sunt aceleași ca și numărarea simbolurilor rupte.
Introducem următoarele:
Găsiți. -XTYPE L | WC-L
Suntem informați că avem 24 de seminkuri sparte care indică nimic.
Găsiți, revizuiți și apoi eliminați
Înainte de a vă grăbi și șterge toate symlink-urile sparte, uitați-vă prin rezultatele
găsi
comanda. Vedeți dacă există un motiv valid pentru oricare dintre simbolurile rupte.
Uneori, symlink ar putea fi problema, mai degrabă decât fișierul țintă. Dacă simbolul a fost creat incorect, aceasta ar putea să nu indice nimic, dar ținta reală este prezentă. Re-crearea symlinkului ar fi remedierea în acest caz.
Este, de asemenea, posibil ca o simbolink aparent rupte să fie folosită ca altceva, cum ar fi un indicator al unui blocaj de fișier sau al altui indicator Go / No Go. Firefox face acest lucru; Asta este primul symlink din lista noastră. Firefox nu este folosit pe mașina noastră de testare, totuși, deci este în siguranță pentru noi să o ștergem.
De asemenea, este posibil ca obiectivul să fie prezent periodic și acesta este comportamentul așteptat (și dorit) al software-ului respectiv. Poate că fișierul țintă este copiat de la o altă mașină sau cloud, își îndeplinește funcția și este apoi șters din nou, doar pentru a fi înlocuit cu un alt program în următorul ciclu.
Symlinkul spart ar putea fi, de asemenea, un simptom al unei instalații de software care a eșuat. În acest caz, în loc să ștergeți symlink, trebuie fie să o remediați manual sau să repetați instalarea.
Când ați rezolvat legăturile rupte, trebuie să păstrați, repetați comanda pentru a efectua căutarea. Symlink-urile fixe ar trebui apoi să fie absente din rezultatele căutării.
Pentru motivele de siguranță, este mai bine să vă limitați eliminarea Symlink în propriile directoare. Fiți extrem de atenți să executați aceste comenzi ca root sau pe directoarele de sistem.
Eliminarea simlinkurilor sparte
În
-Exec.
(Execute) opțiunea rulează comenzi pe
găsi
rezultatele cautarii. Vom folosi
Rm.
pentru a șterge fiecare symlink rupt. În
{}
șirul este înlocuit cu numele fiecărui symlink rupt cum este descoperit de fiecare
găsi
.
Trebuie să folosim un punct și virgulă (
;
) Pentru a termina lista comenzilor pe care le dorim
-Exec.
a alerga. Vom folosi o backslash (
\
) să "scape" punct și virgulă, așa că este tratată ca parte a
găsi
comanda, mai degraba decat ceva
Bash.
ar trebui să acționeze.
Introducem următoarele:
Găsiți. -XTYPE L -Exec RM {} \;
Suntem returnați la promptul de comandă fără nici un indiciu că sa întâmplat ceva. Pentru a verifica legăturile rupte au fost eliminate, repetăm comanda pentru a le căuta, după cum urmează:
Găsiți. -XTYPE L
Nu există rezultate potrivite, ceea ce înseamnă că simbolurile rupte au fost îndepărtate.
Amintiți-vă să examinați mai întâi
Din nou, luați întotdeauna timp pentru a revizui o listă de symlink înainte de a executa comanda pentru a le șterge. Puteți evita ștergerea oricăror nu sunteți sigur că executați comanda pentru a le șterge în directoarele corespunzătoare.
De exemplu, de mai sus, am fi putut rula comanda în directorul ".SNAP" și apoi am îndepărtat manual symlinkul solitar "Hello". Acest lucru ar fi părăsit Firefox Lock Symlink neatinsă.