Bedeutung von Verzeichnissen auf Unix- und Unix-ähnlichen Systemen

112

Ich benutze Linux seit ein paar Jahren, aber ich habe immer noch nicht herausgefunden, woher die Verzeichnisnamen stammen oder welche Bedeutung sie auf Unix- und Unix-ähnlichen Systemen haben. ZB wofür steht etcoder var? Woher kommt der optName?

Und während wir sowieso beim Thema sind. Kann jemand eine klare Erklärung geben, welches Verzeichnis für was am besten verwendet wird. Manchmal bin ich verwirrt, wo bestimmte Software installiert ist oder in welchem ​​Verzeichnis die Software am besten installiert werden kann.

Luke
quelle
Lustige Sache, Unix ist eine Parodie auf Multics und diejenige, die überlebt ... Ich denke, Multics war seiner Zeit weit voraus.
SparK

Antworten:

134

Weitere Informationen zum Layout von Linux-Dateisystemen finden Sie im Filesystem Hierarchy Standard (jetzt in Version 2.3, wobei die Beta 3.0- Version auf den neuesten Distributionen bereitgestellt wird). Es erklärt, woher die Namen stammen:

  • / bin - Bin Widder.
  • / boot - Zum Booten erforderliche Dateien.
  • / dev - Entwicklerdateien .
  • / etc - Et c etera . Der Name wird von den frühesten Unixen geerbt, als es der Ort wurde, an dem Konfigurationsdateien abgelegt wurden.
  • / home - Hier werden die Home- Verzeichnisse gespeichert.
  • / lib - Wo Code lib raries gehalten werden.
  • / media - Ein modernere Verzeichnis, aber wo herausnehmbare Medien montiert werden.
  • / mnt - Wo temporäre Datei-Systeme sind m ou nt ed.
  • / opt - Wo opt ional Add-onSoftware installiert. Dies ist diskret aus/usr/local/Gründen, auf die ich später noch eingehen werde.
  • / run - Hierwerden variable Daten zur Laufzeit gespeichert.
  • / sbin - Wo s uper- ist widder gespeichert. Diese funktionieren normalerweise nur mit root.
  • / srv - Steht für " s e rv e". Dieses Verzeichnis ist für statische Dateien vorgesehen, die ausgeliefert werden. /srv/httpwäre für statische Websites,/srv/ftpfür einen FTP-Server.
  • / tmp - Wo t e mp orary Dateien gespeichert werden können.
  • / usr - Ein weiteres Verzeichnis aus den UnixVersionen der alten geerbt, es steht für „ U NICHTS S ystem R ESSOURCEN“. Es steht nicht für "Benutzer" (siehe das Debian-Wiki ). Dieses Verzeichnis sollte zwischen Hosts gemeinsam genutzt werden können und kann sicher über NFS auf mehreren Hosts bereitgestellt werden. Es kann schreibgeschützt montiert werden.
  • / var - Ein anderes Verzeichnis, das von den alten Unixen geerbt wurde. Es steht für " var iable". Hier können unterschiedliche Systemdaten gespeichert werden. Hier können sich beispielsweise Spool- und Cache-Verzeichnisse befinden. Wenn ein Programm in das lokale Dateisystem schreiben muss und diese Daten nicht direkt an jemanden weiterleitet, wird es hier abgelegt.

/ opt vs / usr / local

Die Faustregel, die ich gesehen habe, lässt sich am besten wie folgt beschreiben:

Verwenden Sie diese Option /usr/localfür Dinge, auf die normalerweise zugegriffen /usrwird oder die bereits vorhanden sind /usr. Verwenden Sie diese Option /optfür Dinge, die sich alle in einem Verzeichnis befinden oder auf andere Weise speziell sind.

sysadmin1138
quelle
2
Das Dokument beantwortet die erste Hälfte meiner Frage sehr gut. Woher die Namen stammen, ist jedoch immer noch ein Rätsel. Ich würde es gerne wissen, weil ich denke, dass es mir mehr Kontext gibt.
Luke
Die Benennung ist fast selbsterklärend. Vor allem, wenn Sie die Beschreibungen in diesem Link durchlesen.
Dan Carley
3
Nein, ist es nicht. Es erklärt, wofür 'etc' verwendet wird, aber es erklärt nicht, woher der Name kommt oder wofür er steht.
Luke
@ sysadmin1138, /runbezieht sich das also im Grunde auf den RAM?
Pacerier
@Pacerier Es ist ein Dateisystem, kann aber sicher als RAM-Disk gemountet werden. Das heißt, viele Programme nehmen dort eine festgelegte Struktur an, erfordern also tatsächlich Persistenz.
sysadmin1138
22

Historisch /etcsteht für "etcetera" und /varist die Abkürzung für "Variable". Ich nehme an, das erstere liegt daran, dass eine große Sammlung nicht verwandter Systemkonfigurationsdateien abgelegt wird /etc. Letzteres liegt daran, dass die Dateien in /vargeändert werden sollen. Sie können häufig /usrund /schreibgeschützt bereitstellen (außer bei der Durchführung von Aktualisierungen), jedoch niemals /varschreibgeschützt bereitstellen. Es enthält Systemprotokolldateien, Sperrdateien, Spooldateien und andere Dinge, die sich dynamisch ändern.

Andere Leute gaben Ihnen Hinweise, um herauszufinden, was wohin am besten passt.

Eddie
quelle
22

Es tut mir leid, einen alten Thread wiederzubeleben, aber ich bin der Meinung, dass dieses Detail eine wichtige Klarstellung für alle zukünftigen Suchenden dieser Informationen darstellt:

  • / opt steht für optional (wie in optionalen Add-On-Paketen).
  • / bin steht für binary (enthält ausführbare Dateien, die vom Betriebssystem verwendet werden).
  • / lib steht für library (enthält gemeinsam genutzte Bibliotheken, die vom Dateisystem und zum Booten verwendet werden, wahrscheinlich von den ausführbaren Dateien in bin)
  • / proc steht für Prozesse.
  • / root bedeutet root-Benutzer.
  • / home enthält die Home-Unterverzeichnisse für alle Nicht-Root-Benutzer.
  • / dev steht für device (enthält Spezial- und Gerätedateien).
  • / tmp steht für temporär.
  • / srv steht für Aufschlag.
  • / mnt steht für mount point (hier ein temporäres Dateisystem einhängen).
  • / include enthält # include-Dateien, dh Header-Dateien (z. B. stdio.h).
  • / var steht für Variable
  • / etc steht für etcetera

  • / usr steht für Unix System Resources ( Quelle )

Mike
quelle
Schöne Antwort: prägnant, auf die Ebene der Frage gerichtet und keine Notwendigkeit, andere Links nachzuschlagen. +1
Scott Biggs
Ich habe srv noch nie gesehen. Ich bevorzuge Konventionen gegenüber Konfigurationen, solange dies sinnvoll ist und durchgesetzt wird. Offensichtlich liefert Apache nicht immer Dateien aus dem Verzeichnis / srv.
user148298
19

Versuche dies:

$ man hier
Anonym
quelle
1
Schön. Genau wie in dem Dokument, auf das in anderen Antworten verwiesen wird, wird in dieser Manpage jedoch nur erläutert, wofür die Verzeichnisse verwendet werden. Ich bin auch daran interessiert, warum bestimmte Namen ausgewählt wurden, z. B. / etc
Luke
2
Die Antwort auf Ihre Frage zu / etc ist hier: en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
Anonymous
1

Wenn Sie mehrere Arten von Unix-Betriebssystemen beobachten, werden Sie einige Unterschiede in den Verzeichnisnamen feststellen, aber die meisten der gebräuchlichen werden im Folgenden erklärt ...

/ bin steht für binary (enthält Binärdateien und enthält Befehle, die hauptsächlich von Benutzern verwendet werden. Dies ist auch der Standardpfad für die Befehlsausführung.)

/ sbin (enthält die speziellen Befehle, die normalerweise vom Superuser ausgelöst werden)

/ lib steht für library (enthält gemeinsam genutzte Bibliotheken, die vom Dateisystem und zum Booten verwendet werden, wahrscheinlich von den ausführbaren Dateien in bin) nichts als Prozessnummer, die Sie per ps überprüfen können - ef)

/ root bedeutet root-Benutzer. (Standardverzeichnis für root-Benutzer) / home (alle Nicht-root-Benutzer haben dort ein home-Verzeichnis unter diesem Verzeichnis) / dev steht für device (enthält spezielle und Gerätedateien, wenn Sie in diesem Verzeichnis über ls suchen - In diesem Verzeichnis werden auch die Haupt- und Nebennummern des Befehls sowie der am Anfang jeder Zeile angezeigte Gerätetyp angezeigt. - B bedeutet Block-Sondergerät, c bedeutet Zeichen-Sondergerät. / tmp steht für temporär (temporäre Ressourcen, die für einige Prozesse benötigt werden, die hier temporär aufbewahrt werden) / mnt steht für mount point (hier ein temporäres Dateisystem bereitstellen). / var steht für variable (enthält variable Daten, das darin enthaltene Verzeichnis ändert sich jedes Mal in der Größe) / opt steht für optional (in diesem Verzeichnis wird normalerweise Software von Drittanbietern installiert). / usr steht für Unix System Resources.

Anwar Khan
quelle