Bir klasörün aslında bir bağlantı olup olmadığını nasıl anlarım ve bozuksa nasıl düzeltebilirim?


28

Linux'ta bir bağlantı, bir tür kısayol veya bir klasör olup olmadığını nasıl anlarım? Lütfen aşağıdaki ekran görüntüsüne bakınız.

linux kabuğundaki sembolik bağ

Gördüğünüz gibi, lskomut bazılarının koyu mavi renkte olduğu, bazılarının ise açık mavi renkteki nesneleri (camgöbeği) listeler. Bu mavi renkli nesneler nelerdir? Bunlar gerçek sembolik bağlar mı?

Gördüğünüz gibi, cdhdd denilen birine yapamam

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

Yönlendirmesi gerektiğini düşünüyorum /media/hddve hdd klasörünün eksik olduğunu farkettim.

Bunu düzeltmenin bir yolu var mı?

Güncelleme: İşte ls -alkomutun sonuçları .

linux kabuğundaki sembolik bağ 2

Gördüğünüz gibi diyor hdd -> /media/hddve kırmızı renkte. Bu, fiziksel bir hdd bağlandığında kırıldığı veya otomatik olduğu anlamına mı geliyor?

Güncelleme: İşte grep media /etc/auto*komutun sonucu .

linux kabuğundaki 3 sembolik bağ

Bunlar /etc/auto.master:/media/netve /etc/auto.networkgirişler ne yapar?

İşte ls -Fal /mediakomutun sonuçları .

linux kabuğundaki sembolik link 4

Bu herhangi bir yardım var mı?

İşte sonuçlarıdır statve filekomutları yanı sıra / usr ve / bin listeleri.

linux kabuğunda 5 sembolik bağlantı

Bu bana herhangi bir şekilde yardımcı oldu mu?

Bir tarafı olarak bilmemeniz gereken, bunun BusyBox ile Linux tabanlı bir STB olmasıdır, gömülü bir sistemdir. Dolayısıyla tüm komutlar desteklenmeyebilir.

Güncelleme: / sbin ve / usr / sbin içindeki dosyaları ve desteklenen komutları gösteren son ekran görüntüsü.

linux kabuğundaki sembolik bağ 6

Güncelleme: Yeni paylaşım eklendi ...

Şimdi eski payımı kaldırdım ve eskisi gibi aynı adı taşıyan bir tane yeniden yarattım ve şimdi de ikinci bir paylaşım ekledim. Şimdi onlardan iki tane var.

SHARES
remote share   local share
mydream        dream1
mydream2       dream2

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

Kayıtlar / media / net / dream1 / movie içine yerleştirilir.

Ayrıca, paylaşım rüyası2 için, HDD’de birden fazla hareket etmenin mümkün olmadığını düşündüğümden, bunu Mount Manager’da bir HDD yerine takmamayı seçtim. Nerede kayıt olur? Her iki yere de mi? Veri hızı iki katına çıkarsa ... ... bunun mümkün olduğunu sanmıyorum.

Yani bu nedenle dream2 payı için film adında bir alt klasör yok. Yalnızca oluşturulduğunda HDD değişimi olarak belirtilenler film alt klasörünü alır.

cdKökten hdd'ye gidersem , gider /media/net/dream1. Ben ise cdhiç ..(ana) geri gider root (/).

Kökte ls -alverir hdd -> media/hdd. ls -al hddverir hdd -> media/hdd. ls -al mediaverir /media/net/dream1.

Ayrıca, eğer ben cdhiç /mediabaşka yoktur hddsymlink. Daha önce farketmedim. Bunun bir paylaşım monte edildiğinde otomatik olarak oluşturulduğunu düşünüyorum. Ve eğer cdbu hdd'ye gidersem/media/net/dream1 .

Sırasıyla paylaşım klasörüne (/ media / net / dream1) hddişaret eden başka bir hddsembolik linke (/ hdd) (/ media / hdd)?

Enigma2 görüntüsünün 3.2.3 versiyonundan veya en az 3.2.0 öncesinde böyle değildi.

Düzenleme: İkinci paylaşım ayarının bir HDD değişimi olarak işlev görmesiyle kayıt için aktif paylaşım haline gelir. Aynı zamanda, daha önce bir HDD değişimi olarak ayarlanmış olan paylaşım, halen "evet" olarak ayarlanmış olsa bile, artık etkin değildir (HDD değişimi olarak davran).

Dream1 ilk önce HDD değiştirme olarak kullanılmışsa ("evet" olarak değiştirildi) ve sonra dream2 HDD değiştirme olarak ayarlandıysa, kayıt için yeni paylaşım haline gelir. Dream1'de depolanan video dosyalarını hala görebilir ve görüntüleyebilirim ancak artık kaydedemiyorum. Dream1'i kayıt için kullanmaya geri dönmek istersem, önce dream2'yi "hayır" (HDD değiştirme olarak davranmayı durdur) ve sonra dream1'i "evet" olarak ayarlamam gerekir.

Yani hayır, aynı anda iki hisse kaydedemez. Onlardan birinin gitmesi gerek. Yani ya rüya1 ya da rüya2, ikisi de değil. Her ne kadar aynı transponderde ise birden fazla servisi (tv kanalı) kaydetmenin mümkün olduğunu belirtmeme rağmen, "ücretsiz tuner yok" mesajını alamıyorsanız. Bu sadece bir alıcının bulunduğu bir STB.


3
Lütfen metin için ekran görüntüleri yapıştırmayın. metni kopyalayıp yapıştırın ve girintiyi / biçimlendirmeyi korumak için ön veya kod etiketlerini veya geri tuşlarını kullanın. ve metni, göstermeye çalıştığınız şeyi göstermek için gereken en aza indirgeyin. BTW, ekran görüntüleriyle ilgili bir sorun, daha küçük çözünürlüklü yazı tiplerinin daha da küçük hale gelmesidir - okunamayan noktaya kadar - daha yüksek çözünürlüklü ekranlarda (örneğin 1920x1200 veya 2566x1440) görüntülendiğinde pikseller sabitlenir, metin ölçeklenebilir.
Cas

@CraigSanders Sanders Yüksek ... çözünürlükte! ;) Açıkça seni duyuyorum dostum! Onun bu yönünü gerçekten düşünmedim. Bahşiş için teşekkürler. Bir dahaki sefere bir kod bloğu kullanmayı deneyeceğim.
Samir

Ne ls -algerçekten does uzun (-l) Listedeki tüm dosyaları (-a) göstermesidir. Evet, bu bana daha fazla bilgi veriyor, ancak sembolik bir bağlantı tanımlamama yardımcı oluyor mu? Sağında bir ok varsa, sembolik bir bağlantı olup olmadığını nasıl söylerim? Diğer tanımlayıcı açıkça renk kodudur, ancak bazılarınız rengin güvenilir olmadığını belirtir.
Samir,

Bu artık bir sorun değil. Mount Manager eklentisi aracılığıyla bir Windows CIFS paylaşımı yaptım (Dreambox, Enigma 2, sürüm 3.2.3) ve HDD'nin yerini almayı seçtim. Bunu yaptıktan sonra ls -alkomut gösterdi hdd -> media/hdd. Ve şimdi cdhdd yapmak mümkün ve link çalışıyor. Ama ilginç olan şey ls -al mediaşovlar hdd -> /media/net/mydreamve bu gerçekte cdhdd'ye gittiğim yer . "Mydream", payın adıdır. Neden farklı sonuçlar alıyorum?
Samir,

Tahminim, / hdd sembolik bağlantısının hangi cihaza veya paylaşıma bağlı olduğunu gösterecek şekilde güncellendiğinden emin olmak için bazı mekanizmalar (muhtemelen bir udev kuralı) olduğudur, böylece diğer programlar ve komut dosyaları sadece / hdd'yi kullanabilir (bu dizini test ettikten sonra). işaret ettiği fs). sadece merak dışında, ikinci bir sürücü takar ya da paylaşırsanız ne olur? / Hde sembolik bağlantısı veriyor mu? veya dreambox bir kayıt diziniyle sınırlı mı?
cas

Yanıtlar:


29

Dosya, stat veya ls kullanabilirsiniz.

dosya:

File komutu, dosya türüne (sembolik bağlantı, dizin, cihaz) veya içeriğine (metin, gzip, resim, tar, ..., uzantılarına bakmaksızın) dayalı olarak sınıflandırmak için kullanılır:

$ file / dev / stdout
/ dev / stdout: `/ proc / self / fd / 1 'sembolik bağlantısı
$ file / proc / self / fd / 1
/ proc / self / fd / 1: `/ dev / pts / 0 'sembolik bağlantısı
$ dosya / dev / puan / 0
/ dev / pts / 0: özel karakter (136/0)
$ file / etc / passwd
/ etc / passwd: ASCII metni

ls:

$ ls -al / dev / stdout
lrwxrwxrwx 1 kök kökü 15 Oca 27 07:55 / dev / stdout -> / proc / self / fd / 1

Stat:

stat komutu izinler, boyut, blok sayısı ve benzeri dosya meta verilerini yazdırır ...

$ stat / dev / stdout
  Dosya: '/ dev / stdout' -> '/ proc / self / fd / 1'
  Ebat: 15 Blok: 0 IO Blok: 4096 sembolik link
Cihaz: 5h / 5d Inode: 1212 Bağlantılar: 1
Erişim: (0777 / lrwxrwxrwx) Uid: (0 / root) Gid: (0 / root)
Erişim: 2014-01-27 11: 22: 47.971187828 -0200
Değişiklik: 2014-01-27 07: 55: 13.996981285 -0200
Değişiklik: 2014-01-27 07: 55: 13.996981285 -0200
 Doğum: -

Neyi file hddkastediyor?
Anlamıyorum

stat hddBana verir -sh: stat: not found.
Samir

Bence stat komutunuz yok (ya da $ PATH'nuzda değil). Her neyse, dosya komutu size bir şans verebilir ...
filipenf

Mac terminalindeki bash için dosya komutu varsayılan olarak sembolik bağlantıları izler. Bunun bir sembolik bağlantı olup olmadığını görmek için -h komutunu ekleyin. Bu da sembolik bağlantıları izlemiyor.
ClintM

7

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

3

Belirli bir dosyanın ne tür bir varlık olduğunu görmenin en kolay yolu filekomutu kullanmaktır . lsSınıflandırıcı işaretlerinin ne olduğunu hatırlamanıza gerek kalmadan veya kullanıcıdan kullanıcıya ve makineden makineye değişebilen renkli çıktıya güvenmenize gerek kalmadan net, aklı başında bir çıktıya sahiptir . Örneğin:

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'

Kendinizi sensiz bir sistemde filebulursanız, statne tür bir dosya girişi olduğunu ve nereye işaret ettiğini söyleyen komutu kullanabilirsiniz . Bir bağlantının stat -Lkopup kırılmadığını bulmak için daha sonra bağlantı koparsa hata veren referans bağlantılarına başvurmanız gerekir .

Sorunuzun ikinci kısmına gelince, mediadizin genellikle bir tür otomatik sayıcılar tarafından yönetilir. /media/hddGiriş USB yığın depolama cihazları için sistem tarafından kullanılıyor olabilir, hatta sabit sürücünün doğru tür (ATA, SCSI vs Xen blok cihazına vs) bekliyor olabilir. Bir program bunları kullanmaya çalışmadıkça bozuk bağlantılar hiçbir şeye zarar vermez ve medya bağlantıları gerçekten sizin rahatınız için. /hddBağlantıyı güvenle bırakabilir veya istediğiniz gibi kaldırabilirsiniz.


Sen dosyası gibi görünüyor burada bir komut değil, haklısınız, diyor -sh: file: not foundyaptığımda fileve girin.
Samir

Görünüşe göre $ PATH biraz kısıtlı. Bunun yerine doğrudan çalıştırmayı deneyin:/usr/bin/file
joruffin 27:12

Diğer yorumunuzdan set üstü bir kutuda olduğunuzu görüyorum. Yüklü Busybox dışında başka bir şey olmayabilir ve Busybox filekomutu taklit etmez , ancak statderlenmişse komutu destekliyor olabilir. Hala $ PATH'inizin dışında olabilir veya / sbin / stat veya / usr / sbin / hemen.
joruffin

Ya fileda ya desteği varmış gibi görünmüyor stat. Bahsettiğiniz yolları kontrol ettim (yukarıdaki ekran görüntüsüne bakın). Her neyse ... demek istediğin, ideal bir Linux sisteminde, filehedef dosya veya klasörün arama yolunu izleyen komutun bana ne tür bir varlık olduğunu göstereceği?
Samir

2
Busybox'taki desteklenen komutlara gelince çalıştırabilirsiniz /usr/bin/busyboxve komutlar yüklü olmasa bile, desteklediği tüm komutları gösterir. Meşgul kutu komutunu kullanmak için çalıştırabilirsiniz /usr/bin/busybox <command> <parameters>. Yani stat komutunu desteklediğini söylüyorsa koşabilirsiniz /usr/bin/busybox stat /hdd. Kolay kullanım için, çağırılacak komutun adıyla Busybox için sembolik bağlantılar oluşturabilirsiniz. Stat komutunu destekliyorsa çalıştırmayı kolaylaştırabilirsiniz ln -s /usr/bin/busybox /usr/bin/stat.
joruffin

1
  1. Evet camgöbeği sembolik bağlardır
  2. Nereye gittiklerini görmek için: ls -Fal
  3. Çıktı ls -Fal /media

Bu muhtemelen bir çeşit oto-nokta.

grep media /etc/auto* Bir vuruş yapabilir.


Bir otomatik sayı nedir? Yani ... ... fiziksel bir SATA disk sürücüsü taktığımda bu noktaya takılıyor mu? ... bu bir Linux STB ve yerleşik bir HDD'si yok, ancak arkasında bir eSATA portu var. Bu, bu amaç için tahsis edilebilir.
Samir

@Sammy Evet /media, PnP cihazları için standart montaj noktasıdır .
Nils
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.