Como posso saber se uma pasta é realmente um link simbólico e como corrigi-lo se estiver quebrado?

24

Como posso saber se tenho um link simbólico, um atalho de algum tipo ou uma pasta no Linux? Por favor, veja a seguinte captura de tela.

Comovocêpodever,ocomandolslistaobjetosemquealgunssãocoloridosemazulescuroenquantooutrossãocoloridosemazulclaro(ciano).Quaissãoessesobjetoscoloridosciano?Sãoesseslinkssimbólicosreais?

Comovocêpodever,nãoconsigocdparaochamadohdd.

root@dm500hd:/#cdhdd-sh:cd:can'tcdtohdd

Euachoquetemqueredirecionarpara/media/hddenoteiqueapastahddestáfaltando.

Existeumamaneiradecorrigirisso?

Atualização:Aquiestãoosresultadosdocomandols-al.

Como você pode ver, ele diz hdd -> /media/hdd e é colorido em vermelho. Isso significa que ele está quebrado ou montado automaticamente, ou seja, quando um disco rígido físico está conectado?

Atualização: Aqui está o resultado do comando grep media /etc/auto* .

Oqueessasentradas/etc/auto.master:/media/nete/etc/auto.networkfazem?

Aquiestãoosresultadosdocomandols-Fal/media.

Isso é de alguma ajuda? ...

Aqui estão os resultados dos comandos stat e file , assim como as listagens de / usr e / bin.

Issomeajudadealgumaforma?...issoajudavocêameajudar?...

Comoumladonão,oquevocêdevesaberéqueesteéumSTBbaseadoemLinuxcomBusyBox,éumsistemaembarcado.Portanto,nemtodososcomandospodemsersuportados.

Atualização:Últimatela,mostrandoarquivosecomandossuportadosem/sbine/usr/sbin.

Atualização: novo compartilhamento adicionado ...

Agora removi esse compartilhamento antigo e recriou um com o mesmo nome de antes e também adicionou um segundo compartilhamento agora. Então agora eu tenho dois deles.

SHARES
remote share   local share
mydream        dream1
mydream2       dream2

LOCATIONS
remote        local
C:\mydream    /media/net/dream1
C:\mydream2   /media/net/dream2

As gravações são colocadas em / media / net / dream1 / movie.

Além disso, para o compartilhamento dream2 optei por não montá-lo como um substituto do HDD no Gerenciador de Montagem, pois suspeito que não é possível ter mais de um ato como um HDD. Onde gravaria? Para ambos os locais? Com o dobro da taxa de dados? ... não acho possível.

Portanto, por esse motivo, não há uma subpasta chamada movie para o compartilhamento do dream2. Apenas os que são especificados como substitutos do HD quando são criados, obtêm a subpasta do filme.

Se eu cd to hdd from root ele vai para /media/net/dream1 . Se eu cd to .. (pai) ele voltar para root (/) .

Na raiz ls -alhdd -> media/hdd . ls -al hddhdd -> media/hdd . ls -al media/media/net/dream1 .

Além disso, se eu cd to /media houver outro symlink hdd . Eu não notei isso antes. Eu acho que isso é criado automaticamente quando um compartilhamento é montado. E se eu cd para este disco rígido vai para /media/net/dream1 .

Um link simbólico hdd (/ hdd) que aponta para outro link simbólico hdd (/ media / hdd), que por sua vez aponta para a pasta compartilhada (/ media / net / dream1)? ..... I estou ficando tonto ...

Não foi assim antes da versão 3.2.3 ou pelo menos 3.2.0 da imagem Enigma2.

Edit: Por configurações o segundo compartilhamento para atuar como um substituto de HDD torna-se o compartilhamento ativo para gravação. Ao mesmo tempo, o compartilhamento que foi previamente configurado para atuar como um substituto do HDD não está mais ativo, mesmo se ainda estiver definido como "yes" (atuar como substituto do HDD).

Se o dream1 foi usado pela primeira vez como substituto do HDD ("sim" para substituir) e, em seguida, o dream2 está configurado para atuar como substituto do HDD, ele se torna o novo compartilhamento para gravação. Ainda posso ver e visualizar arquivos de vídeo armazenados no dream1, mas não consigo mais gravar nele. Se eu quiser voltar a usar o dream1 para gravar, primeiro tenho que configurar o dream2 para "não" (parar de agir como substituto do HDD) e então redefinir o dream1 para "yes".

Portanto, não é possível gravar em dois compartilhamentos ao mesmo tempo. Um deles tem que ir. Então é ou sonho1 ou sonho2, não ambos. Embora eu deva mencionar que é possível gravar mais de um serviço (canal de tv) se ambos estiverem no mesmo transponder, se você não receber a mensagem "no free tuner". Este é um STB com apenas um sintonizador.

    
por Samir 27.09.2012 / 22:39

4 respostas

25

Você pode usar arquivo, stat ou ls.

arquivo:

O comando file é usado para classificar arquivos com base em seu tipo (link simbólico, diretório, dispositivo) ou conteúdo (texto, gzip, imagem, tar, ..., independentemente de sua extensão):

$ file /dev/stdout
/dev/stdout: symbolic link to '/proc/self/fd/1'
$ file /proc/self/fd/1
/proc/self/fd/1: symbolic link to '/dev/pts/0'
$ file /dev/pts/0
/dev/pts/0: character special (136/0)
$ file /etc/passwd
/etc/passwd: ASCII text

ls:

$ ls -al /dev/stdout
lrwxrwxrwx 1 root root 15 Jan 27 07:55 /dev/stdout -> /proc/self/fd/1

stat:

o comando stat imprime os metadados do arquivo como permissões, tamanho, número de blocos e assim por diante ...

$ stat /dev/stdout
  File: ‘/dev/stdout’ -> ‘/proc/self/fd/1’
  Size: 15          Blocks: 0          IO Block: 4096   symbolic link
Device: 5h/5d   Inode: 1212        Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2014-01-27 11:22:47.971187828 -0200
Modify: 2014-01-27 07:55:13.996981285 -0200
Change: 2014-01-27 07:55:13.996981285 -0200
 Birth: -
    
por 27.09.2012 / 23:10
5

bash:

if [[ -h dirname ]]; then
    echo "it's a symbolic link"
    if ! stat $(readlink dirname) &>/dev/null; then
        echo "link target does not exist"
    fi
fi
    
por 28.09.2012 / 02:43
3

A maneira mais fácil de ver que tipo de entidade é um dado arquivo seria usar o comando file . Ela tem uma saída clara e sadia sem exigir que você se lembre de quais são as marcas do ls do classificador ou dependendo da saída colorida que pode variar de usuário para usuário e de máquina para máquina. Por exemplo:

mail ~ # file /test
/test: broken symbolic link to '/nonexist'
mail ~ # file /dev
/dev: directory
mail ~ # file /dev/fd
/dev/fd: symbolic link to '/proc/self/fd'

Se você se encontrar em um sistema sem file , pode usar o comando stat , que informará que tipo de entrada de arquivo é e para onde aponta. Para descobrir se um link está quebrado, você precisará executar stat -L para remover os links de referência, o que causará um erro se o link for quebrado.

Quanto à segunda parte da sua pergunta, o diretório media é geralmente gerenciado por automounters de algum tipo. A entrada /media/hdd pode ser usada pelo seu sistema para dispositivos de armazenamento em massa USB ou pode até estar aguardando o tipo certo de disco rígido (dispositivo de bloqueio ATA vs SCSI vs. Xen). Links quebrados não afetarão nada a menos que um programa tente usá-los, e os links de mídia são realmente para sua conveniência. Você pode seguramente deixar o link /hdd ou removê-lo como quiser.

    
por 27.09.2012 / 23:21
1
  1. Sim, ciano são links simbólicos
  2. Para ver para onde estão apontando: ls -Fal
  3. Saída ls -Fal /media

Este é provavelmente um ponto de auto-montagem de algum tipo.

grep media /etc/auto* pode gerar um impacto.

    
por 27.09.2012 / 22:57