Categories: Tecnologia

Como encontrar e excluir links simbólicos quebrados no Linux

Fatmawati Achmad Zaenuri / Shutterstock

Os links simbólicos no Linux são um recurso fantástico, mas podem quebrar e ficar apontando para nada. Veja como localizar links simbólicos quebrados, revê-los e removê-los de seu sistema, se necessário.

Links Simbólicos 101

Links simbólicos , também chamados de “links simbólicos” e “links simbólicos”, são uma forma de atalhos que podem apontar para arquivos e diretórios. Um link simbólico se parece com um arquivo ou diretório normal em uma janela do gerenciador de arquivos. Ele também aparece como uma entrada em uma lista de arquivos em uma janela de terminal. O arquivo ou diretório para o qual o link simbólico aponta pode estar em qualquer lugar na árvore do sistema de arquivos.

Por exemplo, digamos que você tenha um link simbólico em seu diretório inicial chamado “dave-link” que aponta para um arquivo chamado “text-file.txt” localizado em algum outro lugar na árvore do sistema de arquivos. Os comandos que você usa no link simbólico são aplicados automaticamente ao arquivo para o qual ele aponta. Se você tentar usar catou lessno link simbólico, verá o conteúdo do arquivo “text-file.txt”.

Uma instalação padrão do Linux contém muitos links simbólicos. Mesmo que você não os crie, o sistema operacional os usa. As rotinas de instalação de aplicativos geralmente usam links simbólicos para apontar para arquivos executáveis. Quando o software é atualizado, o arquivo binário é substituído pela nova versão, e todos os links simbólicos continuam funcionando como antes, desde que o nome do novo arquivo seja igual ao antigo.

Podemos ver facilmente alguns links simbólicos usando lsno diretório raiz. Algumas das entradas são exibidas em uma cor diferente – em nossa máquina de teste Ubuntu 20.10 , elas são exibidas em azul claro.

Nós digitamos o seguinte:

ls /

Podemos dar uma olhada mais detalhada usando a opção -l(lista longa). Digitamos o seguinte comando para ver todas as entradas “lib” e a única entrada “bin”:

ls -l / lib * / bin

No início de cada linha há um “l”, que indica que o item é um link simbólico. O texto após “->” mostra para onde o link simbólico está apontando. Em nosso exemplo, os destinos são todos os diretórios.

As permissões são listadas como leitura, gravação e execução para o proprietário, o grupo e outros. Estas são entradas falsas padrão. Eles não refletem as permissões reais nos objetos para os quais os links simbólicos apontam. São as permissões no arquivo ou diretório de destino que têm precedência e são respeitadas pelo sistema de arquivos.

Symlinks quebrados

Um link simbólico é quebrado (ou deixado pendurado) quando o arquivo para o qual ele aponta é excluído ou movido para outro local. Se a rotina de desinstalação de um aplicativo não funcionar corretamente ou for interrompida antes de ser concluída, você pode ficar com links simbólicos corrompidos.

Se alguém excluir manualmente um arquivo sem saber que os links simbólicos apontam para ele, esses links simbólicos não funcionarão mais. Eles serão como sinais de trânsito apontando para uma cidade que foi destruída.

Podemos ver facilmente esse comportamento usando um link simbólico chamado “hello” no diretório atual. Nós digitamos o seguinte, usando lspara vê-lo:

ls -l

Ele aponta para um programa chamado “htg” em um diretório chamado “bin”. Se “executarmos” o link simbólico, ele executa o programa para nós:

./Olá

Agora podemos verificar se é isso que está acontecendo, executando o programa diretamente:

../bin/htg

Como esperado, obtemos a mesma resposta. Vamos deletar o arquivo do programa:

rm ../bin/htg

Agora, quando olhamos o link simbólico, vemos que ele está listado em vermelho porque o Linux sabe que está quebrado. Também nos diz o que costumava apontar, para que possamos substituir o arquivo, recompilar o programa ou fazer o que for necessário para reparar o link simbólico.

Observe que se tentarmos executar o link simbólico, o erro que obtermos fará referência ao nome do link simbólico, em vez do nome do programa para o qual o link aponta.

Nós digitamos o seguinte:

./Olá

Encontrando links simbólicos quebrados

A maioria das versões modernas do findtem a opção xtype(tipo estendido), que simplifica a localização de links simbólicos quebrados . Usaremos a lbandeira com xtype, para instruí-lo a pesquisar links. Usar finde da xtype seguinte forma, sem nenhuma das outras typesinalizações, força xtypea retornar links quebrados:

encontrar . -xtipo l

Executar o comando em nosso diretório inicial de teste encontra alguns links simbólicos corrompidos. Observe que a pesquisa é recursiva por padrão, portanto, ela pesquisa todos os subdiretórios automaticamente.

O link simbólico “olá” que quebramos propositalmente está listado, como esperávamos. Um dos outros links simbólicos está relacionado ao navegador Firefox e os demais estão associados a snaps.

Se canalizarmos a saída wccom a -lopção (linhas), podemos contar as linhas, que é o mesmo que contar os links simbólicos quebrados.

Nós digitamos o seguinte:

encontrar . -xtype l | wc -l

Fomos informados de que temos 24 links simbólicos quebrados apontando para nada.

Encontre, revise e remova

Antes de você se apressar e deletar todos os links simbólicos quebrados, examine os resultados do findcomando. Veja se há uma razão válida para algum dos links simbólicos quebrados.

Às vezes, o link simbólico pode ser o problema, em vez do arquivo de destino. Se o link simbólico foi criado incorretamente, pode não apontar para nada, mas o alvo real está presente. Recriar o link simbólico seria a solução nesse caso.

Também é possível que um link simbólico aparentemente quebrado esteja sendo usado como outra coisa, como um indicador de bloqueio de arquivo ou outro indicador go / no go. O Firefox faz isso; esse é o primeiro link simbólico em nossa lista. O Firefox não é usado em nossa máquina de teste, portanto, é seguro excluí-lo.

Também é possível que o destino esteja presente apenas periodicamente, e este é o comportamento esperado (e desejado) daquele software específico. Talvez o arquivo de destino seja copiado de outra máquina ou da nuvem, ele executa sua função e, em seguida, é excluído novamente, apenas para ser substituído por um programa diferente no próximo ciclo.

O link simbólico quebrado também pode ser um sintoma de uma instalação de software que falhou. Nesse caso, em vez de excluir o link simbólico, você deve corrigi-lo manualmente ou repetir a instalação.

Depois de consertar os links quebrados que você precisa manter, repita o comando para realizar a pesquisa. Os links simbólicos fixos devem estar ausentes dos resultados da pesquisa.

Por segurança, é melhor limitar suas remoções de links simbólicos para seus próprios diretórios. Seja extremamente cauteloso ao executar esses comandos como root ou em diretórios do sistema.

Removendo links simbólicos quebrados

A -execopção (executar) executa comandos nos findresultados da pesquisa. Vamos usar rmpara excluir cada link simbólico quebrado. A {}string é substituída pelo nome de cada link simbólico quebrado à medida que cada um é descoberto por find.

Temos que usar um ponto-e-vírgula ( ;) para encerrar a lista de comandos que queremos -execexecutar. Usaremos uma barra invertida ( \) para “escapar” do ponto-e-vírgula, portanto, ele é tratado como parte do findcomando, ao invés de algo que Bashdeve ser usado.

Nós digitamos o seguinte:

encontrar . -xtype l -exec rm {} \;

Voltamos ao prompt de comando sem nenhuma indicação de que algo aconteceu. Para verificar se os links quebrados foram removidos, repetimos o comando para procurá-los, da seguinte maneira:

encontrar . -xtipo l

Não há nenhum resultado correspondente, o que significa que os links simbólicos quebrados foram removidos.

Lembre-se de revisar primeiro

Novamente, sempre reserve um tempo para revisar uma lista de links simbólicos antes de executar o comando para excluí-los. Você pode evitar a exclusão de qualquer um sobre o qual não tenha certeza, executando o comando para excluí-lo nos diretórios apropriados.

Por exemplo, acima, poderíamos ter executado o comando no diretório “.snap” e, em seguida, removido manualmente o link simbólico solitário “hello”. Isso teria deixado o link simbólico de bloqueio do Firefox intocado.

maisroot

Recent Posts

O novo aplicativo “PC Manager” da Microsoft se parece muito com o CCleaner

Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…

7 meses ago

Como reiniciar um PS4

Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…

7 meses ago

Veja por que as reticências são tão assustadoras ao enviar mensagens de texto…

A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…

7 meses ago

O telescópio James Webb acaba de capturar os “Pilares da Criação”

A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…

7 meses ago

Você poderá baixar o Proton Drive mais cedo do que pensa

O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…

7 meses ago

Como aumentar o zoom no Photoshop

Para ver suas fotos mais de perto ou para uma edição precisa , você pode…

7 meses ago