Hoe te vinden en verwijderen Broken Symlinks op Linux

Nov 12, 2024
Linux
Fatmawati achmad zaenuri / shutterstock

De symbolische koppelingen op Linux zijn een fantastische eigenschap, maar ze kunnen gebroken en achtergelaten worden naar niets. Hier leest u hoe u gebroken symbolische koppelingen kunt vinden, herzien ze ze en verwijder ze van uw systeem als u dat nodig hebt.

Symbolische links 101

Symbolische koppelingen , ook wel "zachte links" genoemd en "symlinks", zijn een vorm van snelkoppelingen die kunnen wijzen op bestanden en mappen. Een symlink lijkt net als een regelmatig bestand of map in een venster Bestandsbeheer. Het verschijnt ook als een vermelding in een bestandsvermelding in een terminalvenster. Het bestand of de map waartoe de Symlink-punten overal in het bestandssysteemboom kan zijn.

Laten we bijvoorbeeld zeggen dat je een symlink in je thuismap hebt genaamd "Dave-Link" die wijst op een bestand met de naam "Text-File.txt" die ergens anders in de Boom van het bestandssysteem bevindt. Opdrachten die u gebruikt op de Symlink worden automatisch toegepast op het bestand waarnaar IT IT-punten. Als u probeert te gebruiken kat of minder Op de Symlink ziet u de inhoud van het bestand "Text-file.txt" daadwerkelijk.

Een standaard Linux-installatie bevat veel symlinks. Zelfs als je jezelf niet maakt, gebruikt het besturingssysteem ze. Toepassing Installatie-routines gebruiken vaak symlinks om te wijzen op executables-bestanden. Wanneer de software wordt bijgewerkt, wordt het binaire bestand vervangen door de nieuwe versie, en alle symlinks voeren het werken op, zolang de naam van het nieuwe bestand hetzelfde is als het oude.

We kunnen eenvoudig sommige symlinks zien door gebruik te maken ls in de hoofdmap. Sommige van de inzendingen worden weergegeven in een andere kleur-op onze Ubuntu 20.10 Testmachine, ze worden weergegeven in lichtblauw.

We typen het volgende:

  LS /  

We kunnen een diepere uitstraling nemen door de -L (lang vermelding) optie. We typen de volgende opdracht om alle "lib" -vermeldingen en de single "bin" -invoer te bekijken:

 LS -L / LIB * / BIN 

Aan het begin van elke regel is een "L", die aangeeft dat het artikel een symlink is. De tekst na "- & GT; shows over wat de symlink wijzen. In ons voorbeeld zijn de doelen allemaal directory's.

De machtigingen worden vermeld als gelezen, schrijven en uitvoeren voor de eigenaar, de groep en anderen. Dit zijn standaard nep-inzendingen. Ze weerspiegelen niet de feitelijke machtigingen op de objecten waarbij het symlinkt punt. Het zijn de rechten op het doelbestand of de map die voorrang hebben en worden gehonoreerd door het bestandssysteem.

Gebroken symlinks

Een Symlink is kapot (of links bungelend) wanneer het bestand waarop IT-punten wordt verwijderd of verplaatst naar een andere locatie. Als de verwijderingsroutine van een toepassing niet goed werkt, of wordt onderbroken voordat het is voltooid, kan u mogelijk met gebroken symlinks worden achtergelaten.

Als iemand handmatig een bestand verwijdert zonder Symlinks erop te kennen, zullen die symlinks niet langer werken. Ze zullen als verkeersborden zijn die naar een stad zijn die in bulldozed is.

We kunnen dit gedrag gemakkelijk zien met behulp van een symlink genaamd "Hallo" in de huidige map. We typen het volgende, met ls het zien:

 LS -L 

Het wijst naar een programma genaamd "HTG" in een directory met de naam "Bin". Als we de symlink "uitvoeren", voert het het programma voor ons uit:

 ./ Hallo 

We kunnen nu controleren of dit gebeurt door het programma rechtstreeks te draaien:

 ../ bin / htg 

Zoals verwacht, krijgen we hetzelfde antwoord. Laten we het programmabestand verwijderen:

 RM ../bin/htg

Nu, wanneer we naar de symlink kijken, zien we dat het in het rood wordt vermeld omdat Linux weet dat het kapot is. Het vertelt ons ook over wat het voor het gewend was, zodat we het bestand kunnen vervangen, het programma opnieuw compileren, of doen wat nodig is om de symlink te repareren.

Merk op dat als we proberen de Symlink uit te voeren, de fout die we krijgen verwijst naar de naam van Symlink, in plaats van de naam van het programma waarop de Symlink-punten.

We typen het volgende:

 ./ Hallo 

Het vinden van gebroken symlinks

Meest moderne versies van vind hebben de xtype (uitgebreid type) optie, wat vereenvoudigt met het vinden van gebroken symlinks . We gebruiken de l met xtype , om het te vertellen om naar links te zoeken. Gebruik makend van vind en xtype als volgt, zonder een van de ander type vlaggen, krachten xtype om gebroken links te retourneren:

 Zoek. -XTYPE L 

Het opdracht uitvoeren in onze test Home Directory vindt nogal wat gebroken symlinks. Merk op dat de zoekopdracht standaard recursief is, zodat deze automatisch alle subdirectories doorzoekt.

De Symlink "Hallo" die we opzettelijk braken, wordt vermeld, zoals we hadden verwacht. Een van de andere symlinks is gerelateerd aan de Firefox-browser en de rest is geassocieerd met snaps.

Als we de uitvoer pijpen wc met de -L (regels) Optie, we kunnen de lijnen tellen, wat hetzelfde is als het tellen van de gebroken symlinks.

We typen het volgende:

 Zoek. -XTYPE L | WC -L 

We hebben op de hoogte gebracht dat we 24 gebroken symlinks hebben die naar Niets wijzen.

Zoek, review en verwijder vervolgens

Voordat je je binnenkijkt en alle gebroken symlinks verwijdert, kijk dan door de resultaten van de vind opdracht. Kijk of er een geldige reden is voor een van de gebroken symblinks.

Soms is de symlink misschien het probleem, in plaats van het doelbestand. Als de symlink onjuist is gemaakt, kan het op niets wijzen, maar het echte doelwit is aanwezig. Het opnieuw creëren van de symlink zou in dat geval de oplossing zijn.

Het is ook mogelijk dat een blijkbaar verbroken symlink wordt gebruikt als iets anders, zoals een indicator van een bestandslot of andere GO / NO GO-indicator. Firefox doet dit; Dat is wat de eerste symlink in onze lijst is. Firefox wordt echter niet gebruikt op onze testmachine, dus het is veilig voor ons om het te verwijderen.

Het is ook mogelijk dat het doel alleen periodiek aanwezig is, en dit is het verwachte (en gewenste) gedrag van die specifieke software. Misschien wordt het doelbestand gekopieerd van een andere machine of de cloud, het uitvoert zijn functie en wordt vervolgens opnieuw verwijderd, alleen om te worden vervangen door een ander programma in de volgende cyclus.

De gebroken symlink kan ook een symptoom zijn van een software-installatie die is mislukt. In dat geval, in plaats van het verwijderen van de symlink, moet u het handmatig oplossen of de installatie herhalen.

Wanneer u de kapotte links hebt opgelost, moet u het opdracht herhalen om de zoekopdracht uit te voeren. De vaste symlinks moeten dan afwezig zijn bij de zoekresultaten.

Omwille van de veiligheid is het het beste om uw Symlink-verhuizingen te beperken tot uw eigen mappen. Wees uiterst op hun hoede om deze opdrachten als root of op systeemmappen te draaien.

Het verwijderen van gebroken symlinks

De -exec (Execute) Optie wordt opdrachten uitgevoerd op de vind Zoekresultaten. We gaan gebruiken rm om elke gebroken symlink te verwijderen. De {} String wordt vervangen door de naam van elke gebroken symlink, zoals ze worden ontdekt door vind .

We moeten een puntkomma gebruiken ( ; ) Om de lijst met opdrachten te beëindigen die we willen -exec rennen. We gebruiken een backslash ( \ ) om de puntkolom te "ontsnappen", dus het wordt behandeld als onderdeel van de vind commando, in plaats van iets Bash zou moeten handelen.

We typen het volgende:

 Zoek. -XTYPE L -EXEC RM {} \; 

We zijn teruggestuurd naar de opdrachtprompt zonder aanwijzing dat er iets is gebeurd. Om te controleren of de gebroken links zijn verwijderd, herhalen we de opdracht om ze te zoeken, als volgt:

 Zoek. -XTYPE L 

Er zijn geen passende resultaten, wat betekent dat de gebroken symlinks zijn verwijderd.

Vergeet niet om eerst te beoordelen

Nogmaals, neem altijd de tijd om een ​​lijst met symlinks te bekijken voordat u de opdracht uitvoert om ze te verwijderen. U kunt vermijden dat u ergens ongetwijfeld wilt verwijderen door de opdracht uit te voeren om ze in de juiste mappen te verwijderen.

Hierboven hadden we bijvoorbeeld de opdracht in de map ".Snap" kunnen uitvoeren en vervolgens de eenzame "Hallo" -symlink handmatig verwijderen. Dit zou het Firefox Lock Symlink onaangeroerd hebben verlaten.


Linux - Meest populaire artikelen

Hoe Kill Zombie Processen op Linux

Linux Nov 25, 2024

Fatmawati achmad zaenuri / shutterstock Programma's die slecht zijn geschreven of slecht kunnen uitvoeren, kunnen vertrekken zombieprocessen op de l..


Linux-servers beheren met de Cockpit-webinterface

Linux Dec 9, 2024

Fatmawati achmad zaenuri / shutterstock U kunt eenvoudig meerdere Linux-computers controleren en beheren met cockpit, een op browser gebaseerde administratie e..


Hoe gebruiken “Hier documenten” in Bash op Linux

Linux Mar 31, 2025

Fatmawati achmad zaenuri / shutterstock De vreemd genoemde "hier documenten" laat u invoer / uitverwijderingen in de bash-scripts op Linux gebruiken. Ze zijn e..


Hoe te gebruiken strace om Monitor Linux Systeemaanroepen

Linux Jun 23, 2025

fatmawati achmad zaenuri / shutterstock.com Linux-programma's vragen het kernel om wat dingen voor hen te doen. De strace opdracht onth..


Wat is Pop! _OS?

Linux Oct 20, 2025

Als je hebt gehoord POP! _OS , misschien heb je mensen vaak gezien als het beste Windows-alternatieve of de ideale Linux-distributie voor gaming. Dit is wat anders is over dez..


Wat is nieuw in Fedora 35

Linux Nov 2, 2024

Fedora 35, rode Hoed Gratis Linux-distributie (Distro), werd uitgebracht op 2 november 2021. Van een bijgewerkte desktopervaring tot achter-de-scènes tweaks, we kijk..


5 Ubuntu Linux -functies die u zou moeten gebruiken

Linux Dec 6, 2024

Ubuntu Linux is functie rijk en wordt geleverd met een samengestelde selectie vooraf geïnstalleerde software. Graaf echter een beetje dieper en je zult enkele functies vinden die je zou moeten..


10 nuttige voorbeelden van de opdracht Linux rsync

Linux Oct 24, 2025

De Linux rsync Opdracht is een krachtig hulpmiddel voor het kopiëren van bestanden en map. Hier zijn tien veel voorkomende use-cases die u op uw eigen systemen goed kunt gebruiken. ..


Categorieën