Sempre use caminhos absolutos ao criar links para evitar que eles quebrem se forem movidos.
Sempre verifique com
ls -l a fim de ver para onde o link aponta antes de apagá-lo.
Encontrar links quebrados no diretório atual:
$ sudo find . -xtype l
Remover todos os links quebrados no diretório atual:
$ sudo find . -xtype l -delete
Ou:
$ unlink "/caminho/para/o/link"
Recriar/Atualizar um Link Específico
Se você sabe que o arquivo original mudou de lugar pode forçar o link a apontar para o novo destino com a opção
-f (force):
$ ln -sf /caminho/para/novo_original /caminho/para/link_quebrado
Listar links quebrados utilizando Symlinks:
$ sudo apt install symlinks (Ubuntu/Debian)
Ou:
$ sudo dnf install symlinks (Fedora).
$ symlinks -d /diretorio/alvo
EXEMPLO
Supondo que temos um link simbólico quebrado, por exemplo:
$ cd /etc/systemd/system/multi-user.target.wants
usuario@usuario:/etc/systemd/system$ sudo find . -xtype l
./slurmctld.service
$ ls -l /etc/systemd/system/multi-user.target.wants/slurmctld.service
lrwxrwxrwx 1 root root 37 jan 25 20:07 /etc/systemd/system/multi-user.target.wants/slurmctld.service -> /etc/systemd/system/slurmctld.service
Porém, nenhum dos dois arquivos
slurmctld.service existem:
$ cat /etc/systemd/system/multi-user.target.wants/slurmctld.service
cat: /etc/systemd/system/multi-user.target.wants/slurmctld.service: Arquivo ou diretório inexistente
$ cat /etc/systemd/system/slurmctld.service
cat: /etc/systemd/system/slurmctld.service: Arquivo ou diretório inexistente
Outro exemplo:
usuario@usuario:/etc/systemd/system$ sudo find . -xtype l
./dkms.service
$ ls -l /etc/systemd/system/multi-user.target.wants/dkms.service
lrwxrwxrwx 1 root root 36 ago 16 13:59 /etc/systemd/system/multi-user.target.wants/dkms.service -> /usr/lib/systemd/system/dkms.service
$ cat /etc/systemd/system/dkms.service
cat: /etc/systemd/system/dkms.service: Arquivo ou diretório inexistente
$ cat /usr/lib/systemd/system/dkms.service
cat: /usr/lib/systemd/system/dkms.service: Arquivo ou diretório inexistente
Provavelmente foi uma falha pontual durante a instalação.
No Debian, dependendo do ambiente gráfico, o link fica com o nome em vermelho com o fundo preto.
O Debian 13 usa o sistema
UsrMerge por padrão, e durante a transição de arquivos de
/lib para /usr/lib, links simbólicos antigos de instalações anteriores podem entrar em conflito com o novo esquema.
CORRIGINDO
Pesquisando pelo arquivo:
$ sudo ln -sf /lib/systemd/system/slurmctld.service /etc/systemd/system/slurmctld.service
Ou:
$ sudo find / | grep slurmctld.service
Ou:
$ dpkg -L slurmctld | grep service
Verificando se tem conteúdo:
$ cat /usr/lib/systemd/system/slurmctld.service
[Unit]
Description=Slurm controller daemon
After=network-online.target remote-fs.target munge.service sssd.service
...
Depois de ter certeza de que o arquivo existe podemos apagar os links:
$ sudo rm -rf /etc/systemd/system/slurmctld.service
$ sudo rm -rf /etc/systemd/system/multi-user.target.wants/slurmctld.service
Systemd gerenciando o link (recriando automaticamente):
$ sudo systemctl reenable slurmctld
Ou:
$ ln -s /caminho/do/arquivo_original /caminho/do/link_simbolico
Conferindo:
$ ls -l /etc/systemd/system/multi-user.target.wants/slurmctld.service
lrwxrwxrwx 1 root root 41 jan 26 17:26 /etc/systemd/system/multi-user.target.wants/slurmctld.service -> /usr/lib/systemd/system/slurmctld.service
Agora vemos que está correto. O arquivo está em
/usr/lib/systemd/system/slurmctld.service.
Podemos acessar o arquivo:
$ sudo vim /etc/systemd/system/multi-user.target.wants/slurmctld.service (recomendado)
Ou:
$ sudo vima /usr/lib/systemd/system/slurmctld.service
Para Arquivos:
$ ln -s /caminho/do/arquivo_original /caminho/do/link_simbolico
Para Diretórios (Pastas):
$ ln -s /caminho/da/pasta_original /caminho/do/link_da_pasta
Nenhum comentário foi encontrado.