web-dev-qa-db-fra.com

Comment savoir si un dossier est en fait un lien symbolique et comment le corriger s'il est cassé?

Comment savoir si j'ai un lien symbolique, un raccourci quelconque ou un dossier sous Linux? Veuillez voir la capture d'écran suivante.

symbolic link in linux Shell

Comme vous pouvez le voir, la commande ls répertorie les objets dont certains sont colorés en bleu foncé tandis que d'autres sont colorés en bleu clair (cyan). Quels sont ces objets de couleur cyan? S'agit-il de véritables liens symboliques?

Comme vous pouvez le voir, je ne peux pas cd vers celui appelé hdd.

root@dm500hd:/# cd hdd
-sh: cd: can't cd to hdd

Je pense qu'il doit rediriger vers /media/hdd Et j'ai remarqué que le dossier hdd est manquant.

Y'a t'il un moyen d'arranger cela?

pdate: Voici les résultats de la commande ls -al.

symbolic link in linux Shell 2

Comme vous pouvez le voir, il dit hdd -> /media/hdd Et il est coloré en rouge. Cela signifie-t-il qu'il est cassé ou qu'il est monté automatiquement, c'est-à-dire lorsqu'un disque dur physique est connecté?

pdate: Voici le résultat de la commande grep media /etc/auto*.

symbolic link in linux Shell 3

Que font ces entrées /etc/auto.master:/media/net Et /etc/auto.network?

Voici les résultats de la commande ls -Fal /media.

symbolic link in linux Shell 4

Est-ce utile? ...

Voici les résultats des commandes stat et file, ainsi que les listes de/usr et/bin.

symbolic link in linux Shell 5

Est-ce que cela m'aide d'une quelconque manière? ... est-ce que cela vous aide à m'aider? ...

Par ailleurs, ce que vous devez savoir, c'est que c'est un STB basé sur Linux avec BusyBox, c'est un système embarqué. Par conséquent, toutes les commandes ne sont pas prises en charge.

Mise à jour: Dernière capture d'écran, montrant les fichiers et les commandes prises en charge dans/sbin et/usr/sbin.

symbolic link in linux Shell 6

Mise à jour: Nouveau partage ajouté ...

J'ai maintenant supprimé cet ancien partage et en ai recréé un avec le même nom qu'avant et j'ai également ajouté un deuxième partage maintenant. Alors maintenant, j'en ai deux.

SHARES
remote share   local share
mydream        dream1
mydream2       dream2

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

Les enregistrements sont placés dans/media/net/dream1/movie.

De plus, pour le partage dream2, j'ai choisi de ne pas le monter en remplacement du disque dur dans le Mount Manager, car je soupçonne qu'il n'est pas possible d'avoir plus d'un acte en tant que disque dur. Où enregistrerait-il? Aux deux endroits? Avec le double du débit? ... Je ne pense pas que ce soit possible.

Donc, pour cette raison, il n'y a pas de sous-dossier nommé film pour le partage dream2. Seuls ceux qui sont spécifiés comme remplacement du disque dur lors de la création obtiennent le sous-dossier du film.

Si je cd vers hdd depuis root, il passe à /media/net/dream1. Si je cd à .. (Parent), cela revient à root (/).

À la racine, ls -al Donne hdd -> media/hdd. ls -al hdd Donne hdd -> media/hdd. ls -al media Donne /media/net/dream1.

De plus, si je cd vers /media Il y a un autre lien symbolique hdd. Je ne l'ai pas remarqué auparavant. Je pense que cela est créé automatiquement lorsqu'un partage est monté. Et si je cd vers ce disque dur, il passe à /media/net/dream1.

Un lien symbolique hdd (/ hdd) qui pointe vers un autre hdd symlink (/ media/hdd), qui à son tour pointe vers le dossier de partage (/ media/net/dream1)? ... .. je deviens étourdi ...

Ce n'était pas comme ça avant la version 3.2.3 ou au moins 3.2.0 de l'image Enigma2.

Edit: En réglant le deuxième partage pour agir comme un remplacement de disque dur, il devient le partage actif pour l'enregistrement. Dans le même temps, le partage qui était précédemment défini pour agir comme remplacement de disque dur n'est plus actif, même s'il est toujours défini sur "oui" (agir comme remplacement de disque dur).

Si dream1 a d'abord été utilisé comme remplacement de disque dur ("oui" pour remplacer), puis dream2 est configuré pour agir comme remplacement de disque dur, il devient le nouveau partage d'enregistrement. Je peux toujours voir et visualiser les fichiers vidéo stockés dans dream1 mais je ne peux plus y enregistrer. Si je veux recommencer à utiliser dream1 pour l'enregistrement, je dois d'abord régler dream2 sur "non" (arrêter d'agir comme remplacement de disque dur), puis réinitialiser dream1 sur "oui".

Donc non, il ne peut pas enregistrer sur deux parts en même temps. L'un d'eux doit partir. C'est donc dream1 ou dream2, pas les deux. Bien que je devrais mentionner qu'il est possible d'enregistrer plus d'un service (chaîne de télévision) s'ils sont tous les deux sur le même transpondeur, sinon vous obtenez le message "pas de tuner gratuit". Il s'agit d'un décodeur avec un seul tuner.

30
Samir

Vous pouvez utiliser file, stat ou ls.

fichier:

La commande file permet de classer les fichiers selon leur type (lien symbolique, répertoire, périphérique) ou leur contenu (texte, gzip, image, tar, ..., quelle que soit leur extension):

 $ file /dev/stdout[.____.[/dev/stdout: lien symbolique vers `/proc/self/fd/1'[.____. diplomatique$ file/proc/self/fd/1 
/proc/self/fd/1: lien symbolique vers le fichier `/dev/pts/0'[.____.[$$ /dev/pts/0[.____.[/dev/pts/0: caractère spécial (136/0) 
 $ fichier /etc/passwd[.____.[/etc/passwd: ASCII texte 

ls:

 $ ls -al /dev/stdout[.____.[lrwxrwxrwx 1 root root 15 27 janvier 07:55/dev/stdout -> /proc/self/fd/1

stat:

la commande stat imprime les métadonnées des fichiers comme les autorisations, la taille, le nombre de blocs et ainsi de suite ...

$ stat /dev/stdout
 Fichier: '/ dev/stdout' -> '/proc/self/fd/1'
 Taille: 15 Blocs: 0 IO Block : 4096 lien symbolique 
 Appareil: 5h/5d Inode: 1212 Liens: 1 
 Accès: (0777/lrwxrwxrwx) Uid: (0/root) Gid: (0/root) 
 Accès: 2014-01-27 11: 22: 47.971187828 -0200 
 Modifier: 2014-01-27 07: 55: 13.996981285 -0200 
 Modification: 2014-01-27 07:55: 13.996981285 -0200 
 Naissance: - 
30
filipenf

frapper:

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
8
glenn jackman

Le moyen le plus simple de voir le type d'entité d'un fichier donné serait d'utiliser la commande file. Il a une sortie claire et sensée sans vous obliger à vous rappeler ce que sont les marques de classificateur ls, ou en s'appuyant sur une sortie colorée qui peut varier d'un utilisateur à l'autre et d'une machine à l'autre. Par exemple:

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'

Si vous vous trouvez sur un système sans file, vous pouvez utiliser la commande stat qui vous indiquera de quel type d'entrée de fichier il s'agit et où il pointe. Pour savoir si un lien est rompu, vous devez alors exécuter stat -L aux liens de déréférencement, ce qui donnera une erreur si le lien est rompu.

En ce qui concerne la deuxième partie de votre question, le répertoire media est souvent géré par des monteurs automatiques de quelque sorte. Le /media/hdd l'entrée peut être utilisée par votre système pour les périphériques de stockage de masse USB ou peut même attendre le bon type de disque dur (ATA vs SCSI vs Xen block device). Les liens brisés ne blesseront rien à moins qu'un programme n'essaye de les utiliser, et les liens multimédias sont vraiment pour votre commodité. Vous pouvez quitter le /hdd liez-le ou supprimez-le à votre guise.

3
joruffin
  1. Oui cyan sont des liens symboliques
  2. Pour voir où ils pointent: ls -Fal
  3. Production ls -Fal /media

Il s'agit probablement d'un point de montage automatique quelconque.

grep media /etc/auto* pourrait produire un hit.

1
Nils