Os links simbólicos no Linux são uma característica fantástica, mas podem se tornar quebradas e deixadas apontando para nada. Veja como localizar links simbólicos quebrados, revisá-los e removê-los do seu sistema, se precisar.
Links simbólicos 101.
Links simbólicos , também chamado de "links suaves" e "symlinks", são uma forma de atalhos que podem apontar para arquivos e diretórios. Um symlink parece apenas como um arquivo ou diretório regular em uma janela do Gerenciador de arquivos. Também aparece como uma entrada em uma listagem de arquivos em uma janela de terminal. O arquivo ou diretório para o qual os pontos do symlink podem ser em qualquer lugar da árvore do sistema de arquivos.
Por exemplo, digamos que você tenha um link no seu diretório home chamado "Dave-link" que aponta para um arquivo chamado "Text-file.txt" localizado em outro lugar na árvore do sistema de arquivos. Comandos que você usa no symlink são aplicados automaticamente ao arquivo ao qual ele aponta. Se você tentar usar
gato
ou
menos
No symlink, você realmente verá o conteúdo do arquivo "Text-file.txt".
Uma instalação padrão do Linux contém muitos links de links. Mesmo se você não criar nenhum, o sistema operacional os usa. As rotinas de instalação do aplicativo geralmente usam links symlinks para apontar para arquivos de execução. Quando o software é atualizado, o arquivo binário é substituído pela nova versão e todos os links simétricos continuam funcionando como antes, desde que o novo nome do novo arquivo seja o mesmo que o antigo.
Podemos facilmente ver alguns links simétricos usando
ls.
no diretório raiz. Algumas das entradas são exibidas em uma cor diferente
Ubuntu 20.10.
máquina de teste, eles são exibidos em azul claro.
Digimos o seguinte:
ls /
Podemos dar uma aparência mais profunda usando o
-eu
Opção (Long Listing). Digitos o seguinte comando para olhar todas as entradas "lib" e a entrada única "bin":
ls -l / lib * / bin
No início de cada linha é um "L", o que indica que o item é um link Symlink. O texto após "- & gt;" mostra no que o symlink está apontando. Em nosso exemplo, os alvos 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 sobre os objetos em que o ponto de links simbólicos. São as permissões no arquivo de destino ou diretório que recebe precedência e são honrados pelo sistema de arquivos.
Links quebrados
Um symlink é quebrado (ou deixado pendurado) quando o arquivo em que ponto é excluído ou movido para outro local. Se a rotina de desinstalação de um aplicativo não funcionar corretamente ou ser interrompida antes, poderá ser deixada com links de links quebrados.
Se alguém excluir manualmente um arquivo sem saber, os links simbólicos não funcionarão mais. Eles serão como sinais de trânsito apontando para uma cidade que foi arrogante.
Podemos ver facilmente esse comportamento usando um symlink chamado "Hello" no diretório atual. Digimos o seguinte, usando
ls.
Para ver:
ls -l
Aponta para um programa chamado "HTG" em um diretório chamado "bin". Se "executarmos" o symlink, executará o programa para nós:
. Ola
Agora podemos verificar se é isso que está acontecendo executando o programa diretamente:
../ bin / htg
Como esperado, recebemos a mesma resposta. Vamos excluir o arquivo do programa:
rm ../bin/htg
Agora, quando olhamos para o symlink, vemos que está listado em vermelho porque o Linux sabe que está quebrado. Também nos diz no que costumava apontar, para que possamos substituir o arquivo, recompile o programa ou faça o que for necessário para reparar o link Symlink.
Observe que, se tentarmos executar o symlink, o erro recebemos referências o nome do link, em vez do nome do programa para o qual os pontos do link.
Digimos o seguinte:
. Ola
Encontrando sylinks quebrados
Mais modernas versões de
achar
tenha o
XTYPE.
(Tipo Extended) Opção,
que simplifica encontrar links simpáticos quebrados
. Nós vamos usar o.
eu
bandeira com
XTYPE.
para dizer para procurar links. Usando
achar
e
XTYPE.
como segue, sem qualquer um dos outros
modelo
Bandeiras, forças
XTYPE.
Para retornar links quebrados:
encontrar. -xtype l
Executar o comando no nosso diretório home de teste encontra alguns links simbólicos quebrados. Observe que a pesquisa é recursiva por padrão, portanto, pesquisa todos os subdiretórios automaticamente.
O symlink "Olá" que quebramos de propósito é listado, como esperávamos. Um dos outros symlinks está relacionado ao navegador do Firefox, e o restante está associado a Snaps.
Se nós pipamos a saída através
banheiro
com o
-eu
Opção (linhas), podemos contar as linhas, o que é o mesmo que contando os links símbolos quebrados.
Digimos o seguinte:
encontrar. -XTYPE L | WC -L
Estamos informados de que temos 24 links quebrados apontando para nada.
Encontrar, revisar e remover
Antes de se apressar e excluir todos os links quebrados, olhe através dos resultados do
achar
comando. Veja se há um motivo válido para qualquer um dos links partidários quebrados.
Às vezes, o symlink pode ser o problema, em vez do arquivo de destino. Se o symlink foi criado incorretamente, ele poderá apontar para nada, mas o alvo real está presente. Recriando o symlink seria a correção nesse caso.
Também é possível que um symlink aparentemente quebrado esteja sendo usado como outra coisa, como um indicador de um bloqueio de arquivo ou outro indicador de Go / No Go. O Firefox faz isso; Isso é o que o primeiro symlink da nossa lista é. O Firefox não é usado em nossa máquina de teste, por isso, é seguro para nós deletá-lo.
Também é possível que o alvo esteja apenas presente periodicamente, e este é o comportamento esperado (e desejado) desse software específico. Talvez o arquivo de destino seja copiado de outra máquina ou da nuvem, ele executa sua função e é excluído novamente, apenas para ser substituído por um programa diferente no próximo ciclo.
O symlink quebrado também pode ser um sintoma de uma instalação de software que falhou. Nesse caso, em vez de excluir o link do symlink, você deve consertá-lo manualmente ou repetir a instalação.
Quando você corrigiu os links quebrados, você precisa manter, repita o comando para executar a pesquisa. Os links fixos devem então estar ausentes dos resultados da pesquisa.
Por causa da segurança, é melhor limitar suas remoções de links symlink aos seus próprios diretórios. Seja extremamente cauteloso de executar esses comandos como diretórios de root ou em sistemas.
Removendo links de links quebrados
o
-exec.
Opção (Execute) Executa comandos no
achar
Procurar Resultados. Nós vamos usar
rm.
para excluir cada symlink quebrado. o
{}
A string é substituída pelo nome de cada link quebrado como cada um é descoberto por
achar
.
Temos que usar um ponto e vírgula (
;
) Para encerrar a lista de comandos que queremos
-exec.
para correr. Nós vamos usar uma barra invertida (
\
) "escapar" o ponto-e-vírgula, por isso é tratado como parte do
achar
comando, em vez de algo
Bash.
deve agir.
Digimos o seguinte:
encontrar. -xtype l -exec rm {} \;
Somos retornados ao prompt de comando sem nenhuma indicação de que qualquer coisa aconteceu. Para verificar se os links quebrados foram removidos, repetimos o comando para procurar por eles, da seguinte maneira:
encontrar. -xtype l
Não há resultados correspondentes, o que significa que os links quebrados foram removidos.
Lembre-se de revisar primeiro
Mais uma vez, observe sempre o tempo para revisar uma lista de links simpáticos antes de executar o comando para excluí-los. Você pode evitar excluir qualquer pessoa que você não tem certeza de executar o comando para deletá-los nos diretórios apropriados.
Por exemplo, acima, poderíamos ter executado o comando no diretório ".snap" e, em seguida, removeu manualmente o symlink solitário "Hello". Isso teria deixado o link de bloqueio do Firefox intocado.