Una guía detallada del estándar de jerarquía del sistema de archivos de Linux

La estructura de directorios (carpetas) en los sistemas operativos basados ??en Linux sigue la estructura de LinuxEstándar de jerarquía del sistema de archivos(FHS) definido y mantenido por la Fundación Linux. Tener un estándar bien definido facilita que los usuarios y los desarrolladores de software conozcan la ubicación de los binarios instalados, los archivos del sistema, la información del sistema, etc. De esta manera, las aplicaciones de Linux no tienen que adaptarse a una distribución en particular y pueden usarse universalmente. .

En este artículo, veremos en detalle la estructura de directorios en Linux y discutiremos las funciones de todos los directorios uno por uno con ejemplos.

Tabla de contenido

Estándar de jerarquía del sistema de archivos de Linux

El latest versión de FHSfue lanzado por Linux Foundation en 2015. Esta es la estructura de directorio compatible con FHS.

/ (raíz)

Este es el comienzo de la jerarquía del sistema de archivos de Linux. Todas las rutas de archivo se originan en la raíz. Los directorios enumerados anteriormente o los enlaces simbólicos a esos directorios son necesarios en / de lo contrario, la estructura del archivo no cumple con FSH.

/compartimiento

  • Almacena binarios de comandos esenciales que pueden ser utilizados tanto por el administrador del sistema como por el usuario, como cat, ls, mv, ps, mount, etc.
  • Estos comandos se usan para iniciar un sistema (acceder a archivos de inicio, montar unidades) y se pueden usar mientras se repara un sistema cuando los archivos binarios en /usr no están disponibles.

USAR: En la captura de pantalla anterior, es posible que vea que /bin no solo contiene los archivos binarios esenciales sino también los no esenciales como 7z.Para obtener una explicación completa, consulte la sección de fusión /usr

/ tirar

  • Este directorio contiene todos los archivos necesarios para que el sistema arranque
  • Esto incluye los archivos del kernel, initrd, initramfs, gestor de arranque, etc.
Directorio de arranque 1

/desarrollo

  • Contiene archivos de dispositivo para todos los dispositivos físicos y virtuales montados en el sistema.
  • Los archivos de dispositivo no son archivos en el sentido tradicional. Son una forma para que los controladores de dispositivos accedan e interactúen con dicho dispositivo.
  • Por lo general, el almacenamiento primario se llamasda(/dev/sda)
Directorio de desarrollo

/etc

  • Este directorio contiene archivos de configuración de su sistema.
  • El nombre de su dispositivo, sus contraseñas, su configuración de red, DNS, crontabs, fecha y hora, etc. se almacenan aquí en archivos de configuración.
  • Este directorio no puede contener ningún archivo ejecutable binario según FHS.
  • Estos archivos de configuración afectan a todos los usuarios del sistema. Si desea realizar cambios de configuración para un usuario específico,~/.conf/debe usarse en lugar de/etc/
Etc Directorio

/hogar

  • El hogar contiene todos los archivos personales específicos del usuario. Contiene directorios separados para cada usuario a los que se puede acceder mediante cd /home/username
  • Aquí es donde haces la mayor parte de tu trabajo. Todas las descargas, imágenes, música, etc. en su sistema están en /home.
  • El archivo de configuración específico del usuario para cada aplicación se puede encontrar en /home/[username]/.conf
  • Puede ir al directorio de inicio de cualquier usuario ejecutando cd ~[username] . Si solo hay un usuario en el sistema, simplementecd ~construcción.

/lib

  • Las bibliotecas son archivos de código estándar que definen los comandos utilizados en un lenguaje de programación. Durante la compilación, un compilador busca estas bibliotecas para dar sentido al código de la misma manera que podríamos buscar en un diccionario para comprender el significado de las palabras mientras leemos un libro.
  • Este directorio contiene todas las bibliotecas necesarias para iniciar el sistema y para que se ejecuten los comandos en /bin y /sbin.
  • Esto también contiene módulos del núcleo que controlan gran parte del funcionamiento de su hardware y dispositivo.
  • Muchas veces, existen diferentes bibliotecas de 32 y 64 bits con el mismo nombre. Para evitar cualquier colusión, estos archivos binarios se guardan en dos directorios separados llamados /lib32 y /lib64..
Directorio de bibliotecas

/medios de comunicación

  • Este directorio contiene varios subdirectorios donde el sistema monta dispositivos extraíbles, como unidades USB.

/mnt

  • Este directorio puede ser utilizado por un usuario para montar manualmente un dispositivo. (a diferencia de /media que solo usa el sistema)
  • La convención actual entre los usuarios es crear un subdirectorio separado en /mnt y montar el dispositivo en ese subdirectorio, mientras que la tradición más antigua es montar el dispositivo directamente en /mnt.

/elegir

  • /opt contiene bibliotecas y archivos binarios relacionados con paquetes que no instalan los administradores de paquetes de su sistema, pero que se instalan a través de medios de terceros, como usar Discordbotón de actualización en la aplicación.
  • /opt es una alternativa menos popular que /usr/local. Es el proveedor quien decide adónde van las bibliotecas y los archivos binarios, pero por lo general el software más monolítico y propietario como zoom usa /opt.
Directorio de opciones

/correr

  • Este directorio contiene los metadatos del dispositivo desde el último arranque.
  • Esto incluye datos de todos los procesos y demonios del sistema que se ejecutaron en la sesión actual.
  • Los archivos de este directorio se borran (eliminan o truncan) al comienzo del proceso de arranque.
Ejecutar directorio

/sbin

  • Al igual que /bin, /sbin también contiene archivos binarios esenciales del sistema. Sin embargo, estos archivos binarios solo están destinados a ser utilizados por un administrador del sistema en lugar de un usuario normal.
  • Estos binarios se utilizan principalmente para la gestión de dispositivos. Para examplefdisk, fsck, mkfs, ifconfig, reiniciar.
Directorio Sbin

USAR: En la captura de pantalla anterior, es posible que vea que /sbin no solo contiene los archivos binarios esenciales, sino también los no esenciales.Para obtener una explicación completa, consulte la sección de fusión /usr

/srv

  • Solo usará este directorio si su dispositivo está actuando como un servidor web, ya que este directorio contiene todos los archivos relacionados con los servidores web.
  • Para example si aloja una conexión FTP, todos los archivos que deben compartirse deben ir por defecto en /srv/ftp.

/tmp

  • Contiene archivos temporales de los procesos que se están ejecutando actualmente.
  • Estos datos también se vacían después de cada arranque.
Directorio Tmp

/proceso

  • Al igual que /dev, que proporciona dispositivos como archivos, esta carpeta contiene información del sistema e información del kernel como archivos.
  • Esto incluye información sobre la memoria, las particiones, el hardware (batería, temperatura, etc.), todos los módulos del kernel cargados, etc.
Directorio de procesos

/sys (específico de la distribución)

  • Contiene información similar contenida en /proc/, pero muestra una vista jerárquica de información específica del dispositivo con respecto a los dispositivos de conexión en caliente.
Directorio del sistema

/era

  • Contiene datos variables sobre los procesos en ejecución.
  • Esto incluye elregistros, caché y carretespara todas las aplicaciones.
  • Los spools son los datos que están a la espera de un procesamiento posterior. Para exampleUn documento en espera en la cola de la impresora o un encabezado de correo electrónico en espera de ser enviado.
Directorio Var

/perdido+encontrado (función ext4)

  • Si bien no figura en el FHS, fsck genera automáticamente este directorio.
  • Almacena todos los archivos huérfanos y dañados en esta carpeta.
  • Esto incluye los archivos que no pudo guardar debido a un corte de energía, los archivos dañados debido a un proceso de actualización fallido, etc.

/raíz (opcional)

  • Se supone que este es el directorio de inicio para el usuario root, a diferencia de /home, que es el directorio de inicio para los usuarios que no son root.

/usr

El directorio /usr tiene orígenes muy interesantes. En el momento de su formación, se suponía que debía actuar como el directorio /home, pero cuando las personas se quedaron sin espacio en /bin, comenzaron a almacenar los archivos binarios no esenciales en /usr. Puedes leer toda la historiaaquí.

Con el tiempo, este directorio se ha diseñado para almacenar los archivos binarios y las bibliotecas de las aplicaciones que instala el usuario. Entonces para exampletiempo bash está en /bin (ya que puede ser utilizado por todos los usuarios) y fdisk está en /sbin (ya que solo deben utilizarlo los administradores), aplicaciones instaladas por el usuario comovlcestán en /usr/bin.

De esta manera/usrtiene su propia jerarquía al igual que la / (raíz).

/usr/bin

  • Este es el directorio principal de comandos ejecutables en el sistema.
  • Contiene todos los binarios de comandos instalados por el usuario y
  • Si desea ejecutar sus scripts usando un solo comando, generalmente los coloca en /usr/bin/

/usr/sbin

  • Contiene archivos binarios de comandos instalados por el usuario que solo pueden utilizar los administradores del sistema.

/usr/lib

  • Contiene las bibliotecas esenciales para paquetes en /usr/bin y /usr/sbin al igual que /lib.

/usr/local

  • Esto se usa para todos los paquetes que el administrador del sistema compila manualmente desde la fuente.
  • Este directorio tiene su propia jerarquía con todas las carpetas bin, sbin y lib que contienen los archivos binarios y las aplicaciones del software compilado.

/usr/compartir

  • Contiene varios archivos misceláneos independientes de la arquitectura.
  • Aquí se incluyen archivos man, listas de palabras (diccionarios) y archivos de definición.

El caso de la combinación de /usr: ¿existe realmente una diferencia entre /bin y /usr/bin?

Históricamente, la necesidad de mover archivos binarios no esenciales a una carpeta diferente surgió de la falta de espacio en el disco duro /bin. Sin embargo, eso fue en 1971. Hoy, más de 50 años después, ya no enfrentamos problemas del mismo tamaño. Esto ha hecho que dos carpetas separadas para binarios predeterminados e instalados por el usuario sean inútiles. Con el tiempo, esto también ha causado una mezcolanza en los sistemas de archivos, ya que ambos directorios tienen archivos binarios redundantes, lo que los hace confusos.

Por esta razóna lo largo de los años, muchas distribuciones (Debian, FedoraUbuntu, Arch, etc.) fusionaron /usr/bin y /bin en el mismo directorio.

De manera similar, /usr/sbin ? /sbin y /usr/lib ? /lib se fusionaron en el mismo directorio para simplificar la estructura del directorio. Ahora la carpeta /bin es solo un enlace simbólico al directorio /usr/bin y lo mismo para otras fusiones.

Puede leer más sobre la discusión sobre estas fusiones.aquíyaquí.

Fusión de usr/bin , /sbin y /lib (incluidas sus variantes) están vinculados a sus contrapartes /usr

Conclusión

Desde 1993, el estándar de jerarquía del sistema de archivos ha sido la guía para las estructuras de directorios tipo Unix. Requiere que la partición del directorio raíz contenga todos los archivos que el sistema necesita para arrancar y montar particiones adicionales.

En 2015, FHS se integró en Linux Standard Base (LSB) y ahora es mantenido por Linux Foundation. Para leer más sobre el estándar FHS actual, le recomiendo que consulte eltexto completodel último lanzamiento en 2015. ¡Sigue explorando!

Artículos Relacionados