it-swarm.com.de

Wie kann ich feststellen, ob ein Ordner tatsächlich ein Symlink ist, und wie kann ich ihn reparieren, wenn er defekt ist?

Wie kann ich feststellen, ob ich unter Linux einen Symlink, eine Verknüpfung oder einen Ordner habe? Bitte sehen Sie den folgenden Screenshot.

symbolic link in linux Shell

Wie Sie sehen können, listet der Befehl ls Objekte auf, bei denen einige dunkelblau und andere hellblau (cyan) gefärbt sind. Was sind diese cyanfarbenen Objekte? Sind das eigentlich symbolische Links?

Wie Sie sehen können, kann ich nicht zu dem mit dem Namen hdd cd.

[email protected]:/# cd hdd
-sh: cd: can't cd to hdd

Ich denke, es muss zu /media/hdd Umgeleitet werden und ich habe festgestellt, dass der HDD-Ordner fehlt.

Gibt es eine Möglichkeit, dies zu beheben?

pdate : Hier sind die Ergebnisse des Befehls ls -al.

symbolic link in linux Shell 2

Wie Sie sehen können, steht dort hdd -> /media/hdd Und es ist rot gefärbt. Bedeutet dies, dass es defekt ist oder automatisch montiert wird, d. H. Wenn eine physische Festplatte angeschlossen ist?

pdate : Hier ist das Ergebnis des Befehls grep media /etc/auto*.

symbolic link in linux Shell 3

Was machen diese Einträge /etc/auto.master:/media/net Und /etc/auto.network?

Hier sind die Ergebnisse des Befehls ls -Fal /media.

symbolic link in linux Shell 4

Hilft das? ...

Hier sind die Ergebnisse der Befehle stat und file sowie die Auflistungen von/usr und/bin.

symbolic link in linux Shell 5

Hilft mir das irgendwie? ... hilft es dir, mir zu helfen? ...

Nebenbei sollten Sie wissen, dass dies eine Linux-basierte STB mit BusyBox ist, es ist ein eingebettetes System. Daher werden möglicherweise nicht alle Befehle unterstützt.

pdate : Letzter Screenshot mit Dateien und unterstützten Befehlen in/sbin und/usr/sbin.

symbolic link in linux Shell 6

pdate : Neue Freigabe hinzugefügt ...

Ich habe jetzt diese alte Freigabe entfernt und eine mit demselben Namen wie zuvor neu erstellt und jetzt auch eine zweite Freigabe hinzugefügt. Jetzt habe ich zwei davon.

SHARES
remote share   local share
mydream        dream1
mydream2       dream2

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

Die Aufnahmen befinden sich in/media/net/dream1/movie.

Außerdem habe ich mich für die Freigabe dream2 entschieden, sie nicht als Festplattenersatz im Mount Manager bereitzustellen, da ich vermute, dass nicht mehr als eine Festplatte als Festplatte fungieren kann. Wo würde es aufnehmen? Zu beiden Standorten? Mit der doppelten Datenrate? ... Ich denke nicht, dass es möglich ist.

Aus diesem Grund gibt es keinen Unterordner mit dem Namen movie für die dream2-Freigabe. Nur diejenigen, die beim Erstellen als Festplattenersatz angegeben wurden, erhalten den Film-Unterordner.

Wenn ich cd von root auf hdd gehe, geht es zu /media/net/dream1. Wenn ich cd zu .. (Übergeordnet) gehe, geht es zurück zu root (/).

An der Wurzel gibt ls -alhdd -> media/hdd. ls -al hdd Gibt hdd -> media/hdd. ls -al media Gibt /media/net/dream1.

Auch wenn ich cd zu /media, Gibt es einen anderen hdd Symlink. Ich habe es vorher nicht bemerkt. Ich denke, dies wird automatisch erstellt, wenn eine Freigabe bereitgestellt wird. Und wenn ich cd zu dieser Festplatte gehe, geht es zu /media/net/dream1.

Ein Symlink hdd (/ hdd), der auf einen anderen hdd Symlink (/ media/hdd) verweist, der wiederum auf den Freigabeordner (/ media/net/dream1) verweist? ... .. Mir wird schwindelig ...

Vor Version 3.2.3 oder mindestens 3.2.0 des Enigma2-Images war dies nicht der Fall.

Bearbeiten: Durch Einstellen der zweiten Freigabe, die als Festplattenersatz fungiert, wird sie zur aktiven Freigabe für die Aufzeichnung. Gleichzeitig ist die Freigabe, die zuvor als Festplattenersatz festgelegt wurde, nicht mehr aktiv, auch wenn sie immer noch auf "Ja" eingestellt ist (als Festplattenersatz fungieren).

Wenn dream1 zuerst als HDD-Ersatz verwendet wurde ("Ja" als Ersatz) und dann dream2 als HDD-Ersatz eingestellt ist, wird es zur neuen Freigabe für die Aufnahme. Ich kann weiterhin in dream1 gespeicherte Videodateien anzeigen und anzeigen, aber ich kann nicht mehr darauf aufnehmen. Wenn ich wieder Dream1 für die Aufnahme verwenden möchte, muss ich Dream2 zuerst auf "Nein" setzen (nicht mehr als Festplattenersatz fungieren) und dann Dream1 auf "Ja" zurücksetzen.

Nein, es kann nicht gleichzeitig auf zwei Aktien aufgezeichnet werden. Einer von ihnen muss gehen. Es ist also entweder Traum1 oder Traum2, nicht beides. Obwohl ich erwähnen sollte, dass es möglich ist, mehr als einen Dienst (Fernsehkanal) aufzunehmen, wenn sich beide auf demselben Transponder befinden, wenn nicht, erhalten Sie die Meldung "kein freier Tuner". Dies ist eine STB mit nur einem Tuner.

30
Samir

Sie können file, stat oder ls verwenden.

Datei :

Mit dem Befehl file werden Dateien anhand ihres Typs (Symlink, Verzeichnis, Gerät) oder Inhalts (Text, GZIP, Bild, Tar, ..., unabhängig von ihrer Erweiterung) klassifiziert:

 $ file /dev/stdout[.____.‹/dev/stdout: symbolischer Link zu `/proc/self/fd/1'[.____.‹$ file/proc/self/fd/1 
/proc/self/fd/1: symbolischer Link zu `/dev/pts/0'[.____.‹$ file /dev/pts/0[.____.‹/dev/pts/0: Zeichen 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 :

der Befehl stat druckt Dateimetadaten wie Berechtigungen, Größe, Anzahl der Blöcke usw. aus.

$ stat /dev/stdout
 Datei: '/ dev/stdout' -> '/proc/self/fd/1'
 Größe: 15 Blöcke: 0 IO Block : 4096 symbolischer Link 
 Gerät: 5h/5d Inode: 1212 Links: 1 
 Zugriff: (0777/lrwxrwxrwx) Uid: (0/root) Gid: (0/root) 
 Zugriff: 2014-01-27 11: 22: 47.971187828 -0200 
 Ändern: 2014-01-27 07: 55: 13.996981285 -0200 
 Änderung: 2014-01-27 07:55: 13.996981285 -0200 
 Geburt: - 
30
filipenf

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

Der einfachste Weg, um festzustellen, um welche Art von Entität es sich bei einer bestimmten Datei handelt, ist die Verwendung des Befehls file. Es hat eine klare, vernünftige Ausgabe, ohne dass Sie sich merken müssen, was die Klassifikatormarkierungen ls sind, oder sich auf farbige Ausgaben verlassen müssen, die von Benutzer zu Benutzer und von Maschine zu Maschine variieren können. Zum Beispiel:

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'

Wenn Sie sich auf einem System ohne file befinden, können Sie den Befehl stat verwenden, der Ihnen sagt, um welche Art von Dateieintrag es sich handelt und wohin er zeigt. Um herauszufinden, ob ein Link defekt ist, müssen Sie stat -L Ausführen, um Links zu dereferenzieren. Dies führt zu einem Fehler, wenn der Link defekt ist.

Was den zweiten Teil Ihrer Frage betrifft, wird das Verzeichnis media häufig von Automountern verwaltet. Der Eintrag /media/hdd Kann von Ihrem System für USB-Massenspeichergeräte verwendet werden oder wartet sogar auf die richtige Art von Festplatte (ATA vs SCSI vs Xen-Blockgerät). Unterbrochene Links schaden nichts, es sei denn, ein Programm versucht, sie zu verwenden, und die Medienlinks dienen wirklich Ihrer Bequemlichkeit. Sie können den Link /hdd Sicher verlassen oder nach Belieben entfernen.

3
joruffin
  1. Ja, Cyan sind symbolische Links
  2. Um zu sehen, wohin sie zeigen: ls -Fal
  3. Ausgabe ls -Fal /media

Dies ist wahrscheinlich eine Art Automount-Punkt.

grep media /etc/auto* könnte einen Treffer erzeugen.

1
Nils