Unix / Linux işletim sistemlerinde standart ve / veya ortak dizinler


25

Windows dünyasından geldiğimde, klasör dizini adlarının çoğunu oldukça sezgisel buldum :

  • \Program Files programlar tarafından kullanılan dosyaları içerir (sürpriz!)

  • \Program Files (x86) 64 bit işletim sistemlerinde 32 bit programlar tarafından kullanılan dosyaları içerir

  • \Users(eskiden Documents and Settings) kullanıcıların dosyalarını, yani dokümanları ve ayarları içerir

    • \Users\USER\Application Data uygulamaya özel veri içerir

    • \Users\USER\Documents kullanıcıya ait belgeleri içerir

  • \Windows Windows işlemine ait dosyaları içerir

    • \Windows\Fonts yazı tipi dosyalarını depolar (sürpriz!)

    • \Windows\Temp küresel bir geçici klasördür

Et cetera. Bu klasörlerin ne yaptığı hakkında hiçbir fikrim olmasa bile, isimlerinden iyi doğrulukla tahmin edebilirim.

Şimdi Linux'a iyi bakıyorum ve dosya sistemindeki yolumu nasıl bulacağımı merak ediyorum.

Örneğin:

  • /binİkili dosyalar içerir. Ama bunu yapmak /sbin, /usr/bin, /usr/sbin, ve muhtemelen daha ben bilmem söyledi. Hangisi hangisi?? Onların arasındaki fark ne? İkili yapmak ve sistem genelinde bir yere koymak istersem, nereye koyarım?

  • /mediaharici medya dosya sistemlerini içerir. Ama aynen öyle /mnt. Ve ikisi de şu anda sistemimde hiçbir şey içermiyor; her şey içeride gözüküyor /dev. Fark ne? Nerede gibi benim sabit disk üzerinde başka bölümler vardır C:ve D:bu Windows idi?

  • /homekullanıcı dosyalarını ve ayarları içerir. Bu çok sezgiseldir, ama sonra neye girmesi gerekiyor /usr? Ve /rootdosya ve ayarlara sahip bir kullanıcı olmasına rağmen nasıl oluyor hala ayrı?

  • /libDLL'ler gibi paylaşılan kütüphaneleri içerir. Ama aynen öyle /usr/lib. Fark ne?

  • Ne olduğunu /etc ? Gerçekten "et cetera" ya da başka bir şey anlamına mı geliyor? Ne tür dosyalar içeri girmeli - küresel mi, yerel mi? Kimsenin nereye koyacağını bilmediği şeyler için bir sorun değil mi, yoksa bunun için belirli bir kullanım durumu var mı?

  • Ne /opt, /procve /var? Neyi temsil ediyorlar ve ne için kullanılıyorlar? Windows'ta * onlar gibi bir şey görmedim ve ne için olduklarını çözemiyorum.

Herhangi biri, bilmesi iyi olabilecek diğer standart yerleri düşünebiliyorsa, soruyu eklemek için çekinmeyin; umarım bu, benim gibi, * nix sistemlerine alışmaya başlayan insanlar için iyi bir referans olabilir.

* Tamam, bu bir yalan. WinObj'de de benzer şeyler gördüm, ama belli ki düzenli olarak değil. Yine de bunların Linux'ta ne yaptığını bilmiyorum.


1
İyi bir öğrenme ruhunu sakladığınız için teşekkür ederiz. Bu konu genellikle çekişmeli. Windows ve Linux'taki dosya sistemi yapıları arasındaki temel farklılıklar hakkında bazı ek açıklamalar için bu soruya cevabımı görün .
Caleb,

"Usr" ı "kullanıcının" ve "Unix Sistem Kaynakları" nın kısaltması olarak düşünmeyin (muhtemelen yıllar önce kullanıcıların dizinlerini içerdiğinden beri bir backronym olsa bile) ( linux-training.be/files/books/html /fun/ch09s08.html ).
lgeorget

Unix / Linux / etc 'nin şifreli dizini Windows'a (veya Mac OS X) göre isimlendirmeye çalışmanın faydası yoktur. Bu sadece nasıl.
Andrew Wolfe

2017 itibariyle, Windows klasör yapısı tam bir karışıklık. C:\Program Files, C:\ProgramData, %HOME%\AppData\Local, %HOME%\AppData\LocalLow, C:\Windows\SystemApps... bir Windows yürütülebilir bulabilirsiniz tüm örnekler. Ve yapılandırma dosyaları ve kayıt defteri hakkında bile konuşmayacağım, daha fazla depresyona girmek istemiyorum. Not: Ben öncelikle Windows'ta çalışıyorum.
rsenna

Yanıtlar:


29

Linux dağıtımları FHS kullanır: http://www.pathname.com/fhs/pub/fhs-2.3.html

Ayrıca deneyebilirsiniz man hier.

Sorularınızın cevaplarını başımın üstünden toplamaya çalışacağım, ancak FHS’yi okumanızı şiddetle tavsiye ediyorum:

  • / bin superuser olmayan sistem ikili dosyaları içindir.
  • / sbin, superuser (root) system binaries
  • / usr / bin & / usr / sbin, sırasıyla kritik olmayan paylaşılan süper kullanıcı veya süper kullanıcı ikili dosyaları içindir.
  • / mnt geçici olarak bir bölme monte etmek içindir
  • / medya bir kerede çıkarılabilir medyayı birleştirmek için
  • / dev sistem aygıt dosyalarınızı içerir; uzun Hikaye :)
  • / Usr klasörü ve alt klasörleri diğer sistemlerle paylaşılabilir, böylece bir yerde kurulu aynı programlara / dosyalara erişebilirler. / Usr genellikle ayrı bir dosya sisteminde olduğundan, sistemi çevrimiçi hale getirmek için gerekli olan ikili dosyaları içermez.
  • / root ayrıdır, çünkü sistemi ayrı bölümler / sabit sürücüler / sunucularda olabilecek diğer dizinleri monte etmeden çevrimiçi hale getirmek gerekebilir
  • Evet, / etc "et cetera" anlamına gelir. Yerel sistem için yapılandırma dosyaları burada saklanır.
  • / opt, indirdiğiniz / derlediğiniz programları yükleyebileceğiniz bir yerdir. Bu şekilde, tüm dosyaları tek bir yerde olacak şekilde, onları sistemin geri kalanından ayrı tutabilirsiniz.
  • / proc, çekirdek ve çalışan işlemler hakkında bilgi içerir
  • / var, günlükler, posta, web sayfaları vb. gibi değişken boyutlu dosyalar içerir.

Bir sisteme erişmek için genellikle / var, / opt, / usr, / home; sistemdeki potansiyel olarak en büyük dizinlerin bazıları.

Bazılarının kullanmadığı favorilerimden biri / srv. Http / ftp / samba gibi servislerle barındırılan veriler içindir. Bunun için çok kullanıldığını / var olduğunu gördüm, ki bu onun amacı değildi.


Belirli soruları ele alan iyi bir genel bakış. Bazı dağıtımların /home/users/usernamekullanıcılar ve /home/services/servicenameneden bahsettiğiniz /srciçin kullandığını unutmayın. Bunun daha iyi sonuçlandığını düşünüyorum çünkü bölümlere ayrılmanın çok yönlü olduğunu düşünüyorum. Bunu kendi bölümlerinde bulundurabilir veya aynı bölümü ve kullanıcı verilerinizi kullanabilirsiniz, ki bu genellikle yapmak istediğim şeydir.
Caleb,

+1 bağlantı ve açıklamalar için teşekkürler, bunlar harika! :)
Mehrdad

/ usr, işletim sistemindeki uygulamalara ve / veya üçüncü taraf dosyalara özgü dosyaları içermelidir. Özünde paylaşılabilir değil! Her ne kadar LSB bunların tutulmayacağını savunuyor. / usr / share öte yandan, farklı mimariler / OS versiyonlarındaki makineler arasında paylaşılabilen dosyalar içerebilir. Bunların hepsi yine de sözleşmeler! Tamamen farklı bir yapı kullanmak epeyce mümkün (bir çok zor iş olsa da). Yine de başka sözleşmeler de var - Oracle'ın Optimal Esnek Mimarisi gibi
symcbean

1
Unix hakkında akılda tutulması gereken bir başka şey " her şey bir dosyadır " (ya da en azından birine benziyor) kavramıdır . Örneğin, / proc içindeki dosyalar dosyalara ve dizinlere benziyor, ancak içeriğe eriştiğinizde içerikler çekirdek tarafından gerçekten dinamik olarak yaratılıyor. Bu, bu bilgilere erişmek için aynı araçları (ls, cat vb.) Kullanabileceğiniz anlamına gelir.
KeithB

1
@symcbean FHS'den: "... / usr paylaşılabilir, salt okunur veridir. Bu, / usr'ın çeşitli FHS uyumlu ana bilgisayarlar arasında paylaşılabilir olması gerektiği anlamına gelir ...". Açıkçası, bazı dosyalar mimariye bağımlıdır ve bazı dağıtımlar çok farklı dizin hiyerarşileri beklemektedir. Çözüm, ödevinizi iyi bir yönetici gibi
yapmaktır

18

Hepsinin ne anlama geldiği hakkında cevap vermeyeceğim (diğerlerinin de var), fakat biraz tarihsel bağlamda.

Öncelikle, UNIX'in kağıt bant günlerine ve ana bilgisayarlara 300 baud kodlanmış terminallerine geri döndüğü için 40 yaşına yaklaştığını unutmayın (Windows XP sistemi 10 yaşına yakın). Yazma yavaştı ve yazmada verimlilik ihtiyacı diğer birçok düşünceye göre daha ağır basardı. Çok kısa temel komutların nedeni budur (yani 'ls', 'cat', 'cc', 'dd', vs.). Aynısı dizin yapılarıyla da oldu. Düşünce, komutun üç veya dört karakterden fazla olması durumunda, adın çok uzun olmasıydı.

/ Usr dizini, komutların çoğu / bin ve tüm aygıt dosyaları / dev içerdiğinden başlangıçta kullanıcının ana dizinlerini içeriyordu. Daha sonra birincil sürücüyü (kök dosya sistemi, '/') daha hızlı önyükleme süreleri için küçük yapmak düşünülüyordu. Böylece / usr / bin, / usr / include ve / usr / lib gibi diğer yapılar ortaya çıktı, / usr ayrı bir "sürücü" idi. Çok sonraları, kullanıcının ev dizinlerini / ev içinde, bir başka sürücüde olduğu düşünülüyordu. Ve bundan çok sonra, / var (değişken / değişken için kısa). / Etc dizini, 'et cetera' anlamına geliyordu çünkü tüm sistem konfigürasyon dosyalarının hepsini yakaladı. / Mnt, bir sürücüye (genellikle bir yedek sürücüye) erişmek için geçici bir yer olarak kullanıldı. / Opt, / proc ve / media gibi dizinler çok daha sonra geldi.

Dışarıda bırakılan çok şey var (/ usr / local ve / net gibi), ancak bu adların neden daha az sezgisel olduğunu açıklıyor.


2
+1 Tarihsel bağlamı seviyorum, beynimi düzenliyor. :) Bu yazmaya zaman ayırdığınız için teşekkürler!
Mehrdad

5

Burada daha önce de belirtildiği gibi, Linux dağıtımları çoğunlukla FHS'yi kullanır, bu pencereden gelen biri için özellikle uygun olan, öğretici bir genel bakış için buraya bakın .

Not olarak, Windows dizinleri yüzeysel olarak sezgisel görünmektedir . Fakat bir programın ayarlarının nerelere ait olduğunu, *.iniprogramlar klasöründeki bir dosya olarak Documents and Settings\User( \Application Dataveya \Local Settings\Application Data) ya da rezil kayıt defterinde olduğunu soracağım. kimse bilmiyor, hatta Microsoft bile. Ve böylece devam edebiliriz.


1
Klasörlerin Windows 7 adlarının daha iyi olduğunu düşünüyorum. yani AppData \ Roaming vs. AppData \ Local - orada bulunan veri türünü tanımlar. Konfigürasyon bilgisine gelince: Sanırım gördüğümde nereye koyacağımı bildiğimi biliyorum ama iyi tanımlayamıyorum, aynı fikirdeyim. :)
Mehrdad
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.