Linux Professional Institute Learning Logo.
Pasar al contenido principal
  • Inicio
    • Todos los recursos
    • LPI Learning Materials
    • Conviértete en colaborador
    • Publishing Partners
    • Conviértase en un Publishing Partner
    • Acerca de nosotros
    • FAQ
    • Colaboradores
    • Roadmap
    • Contáctenos
  • LPI.org
104.7 Lección 1
Tema 101: Arquitectura del Sistema
101.1 Determinar y configurar los ajustes de hardware
  • 101.1 Lección 1
101.2 Arranque del sistema
  • 101.2 Lección 1
101.3 Cambiar los niveles de ejecución / objetivos de arranque y apagar o reiniciar el sistema
  • 101.3 Lección 1
Tema 102: Instalación de Linux y gestión de paquetes
102.1 Diseño del esquema de particionado del disco duro duro
  • 102.1 Lección 1
102.2 Instalar un gestor de arranque
  • 102.2 Lección 1
102.3 Gestión de librerías compartidas
  • 102.3 Lección 1
102.4 Gestión de paquetes Debian
  • 102.4 Lección 1
102.5 Gestión de paquetes RPM y YUM
  • 102.5 Lección 1
102.6 Linux como sistema virtualizado
  • 102.6 Lección 1
Tema 103: Comandos GNU y Unix
103.1 Trabajar desde la línea de comandos
  • 103.1 Lección 1
  • 103.1 Lección 2
103.2 Procesar secuencias de texto usando filtros
  • 103.2 Lección 1
103.3 Administración básica de archivos
  • 103.3 Lección 1
  • 103.3 Lección 2
103.4 Uso de secuencias de texto, tuberías y redireccionamientos
  • 103.4 Lección 1
  • 103.4 Lección 2
103.5 Crear, supervisar y matar procesos
  • 103.5 Lección 1
  • 103.5 Lección 2
103.6 Modificar la prioridad de ejecución de los procesos
  • 103.6 Lección 1
103.7 Realizar búsquedas en archivos de texto usando expresiones regulares
  • 103.7 Lección 1
  • 103.7 Lección 2
103.8 Edición básica de archivos
  • 103.8 Lección 1
Tema 104: Dispositivos, sistemas de archivos Linux y el estándar de jerarquía de archivos
104.1 Creación de particiones y sistemas de archivos
  • 104.1 Lección 1
104.2 Mantener la integridad de los sistemas de archivos
  • 104.2 Lección 1
104.3 Controlar el montaje y desmontaje de los sistemas de archivos
  • 104.3 Lección 1
104.5 Administración de los permisos y los propietarios de los archivos
  • 104.5 Lección 1
104.6 Crear y cambiar enlaces duros y simbólicos
  • 104.6 Lección 1
104.7 Encontrar archivos de sistema y ubicar archivos en el lugar correspondiente
  • 104.7 Lección 1
How to get certified
  1. Tema 104: Dispositivos, sistemas de archivos Linux y el estándar de jerarquía de archivos
  2. 104.7 Encontrar archivos de sistema y ubicar archivos en el lugar correspondiente
  3. 104.7 Lección 1

104.7 Lección 1

Certificación:

LPIC-1

Versión:

5.0

Tema:

104 Dispositivos, sistemas de archivos Linux, estándar de jerarquía del sistema de archivos

Objetivo:

104.7 Buscar archivos del sistema y colocar archivos en la ubicación correcta

Lección:

1 de 1

Introducción

Las distribuciones de Linux vienen en todas las formas y tamaños, pero una cosa que casi todas comparten es que siguen el Filesystem Hierarchy Standard (FHS), que define un “diseño estándar” para el sistema de archivos, lo que facilita mucho la interoperación y la administración del sistema. En esta lección, aprenderá más sobre este estándar y cómo encontrar archivos en un sistema Linux.

El estándar de jerarquía del sistema de archivos

El Estándar de jerarquía del sistema de archivos (FHS) es un esfuerzo de la Fundación Linux para estandarizar la estructura y el contenido del directorio en los sistemas Linux. El cumplimiento del estándar no es obligatorio, pero la mayoría de las distribuciones lo siguen.

Note

Aquellos interesados en los detalles de la organización del sistema de archivos pueden leer la especificación FHS 3.0, disponible en múltiples formatos en: http://refspecs.linuxfoundation.org/fhs.shtml

Según el estándar, la estructura básica de directorios es la siguiente:

/

Este es el directorio raíz, el directorio más alto de la jerarquía. Todos los demás directorios se encuentran dentro de él. Un sistema de archivos a menudo se compara con un “árbol”, por lo que este sería el “tronco” al que están conectadas todas las ramas.

/bin

Binarios esenciales, disponibles para todos los usuarios.

/boot

Archivos necesarios para el proceso de arranque, incluido el disco RAM inicial (initrd) y el propio kernel de Linux.

/dev

Archivos de dispositivo. Estos pueden ser dispositivos físicos conectados al sistema (por ejemplo, /dev/sda sería el primer disco SCSI o SATA) o dispositivos virtuales proporcionados por el kernel.

/etc

Archivos de configuración específicos del host. Los programas pueden crear subdirectorios en /etc para almacenar múltiples archivos de configuración si es necesario.

/home

Cada usuario del sistema tiene un directorio “home” para almacenar archivos personales y preferencias, y la mayoría de ellos se encuentran en /home. Por lo general, el directorio de inicio es el mismo que el nombre de usuario, por lo que el usuario John tendría su directorio en /home/john. Las excepciones son el superusuario (root), que tiene un directorio separado (/root) y algunos usuarios del sistema.

/lib

Se necesitan bibliotecas compartidas para arrancar el sistema operativo y ejecutar los archivos binarios en /bin y /sbin.

/media

Los medios extraíbles montables por el usuario, como unidades flash, lectores de CD y DVD-ROM, disquetes, tarjetas de memoria y discos externos se montan aquí.

/mnt

Punto de montaje para sistemas de archivos montados temporalmente.

/opt

Paquetes de software de aplicación.

/root

Directorio de inicio del superusuario (root).

/run

Datos variables en tiempo de ejecución.

/sbin

Binarios del sistema

/srv

Datos servidos por el sistema. Por ejemplo, las páginas servidas por un servidor web podrían almacenarse en /srv/www.

/tmp

Archivos temporales.

/usr

Datos de usuario de solo lectura, incluidos los datos que necesitan algunas aplicaciones y utilidades secundarias.

/proc

Sistema de archivos virtual que contiene datos relacionados con los procesos en ejecución.

/var

Datos variables escritos durante el funcionamiento del sistema, incluida la cola de impresión, datos de registro, buzones de correo, archivos temporales, caché del navegador, etc.

Tenga en cuenta que algunos de esos directorios, como /etc, /usr y /var, contienen una jerarquía completa de subdirectorios debajo de ellos.

Archivos Temporales

Los archivos temporales son archivos que utilizan los programas para almacenar datos que solo se necesitan durante un período breve. Estos pueden ser los datos de procesos en ejecución, registros de fallos, archivos temporales de un guardado automático, archivos intermediarios utilizados durante una conversión de archivos, archivos de caché, etc.

Ubicación de los Archivos Temporales

La versión 3.0 del Filesystem Hierarchy Standard (FHS) define ubicaciones estándares para archivos temporales en sistemas Linux. Cada ubicación tiene un propósito y comportamiento diferente, y se recomienda que los desarrolladores sigan las convenciones establecidas por FHS al escribir datos temporales en el disco.

/tmp

Según la FHS, los programas no deben asumir que los archivos escritos aquí se conservarán entre las invocaciones de un programa. La recomendación es que este directorio se borre (todos los archivos borrados) durante el arranque del sistema, aunque esto no es obligatorio.

/var/tmp

Otra ubicación para archivos temporales, pero esta no debe borrarse durante el arranque del sistema. Los archivos almacenados aquí generalmente persistirán entre reinicios.

/run

Este directorio contiene datos variables en tiempo de ejecución que utilizan los procesos en ejecución, como los archivos de identificación de procesos (.pid). Los programas que necesitan más de un archivo en tiempo de ejecución pueden crear subdirectorios aquí. Esta ubicación debe borrarse durante el arranque del sistema. El propósito de este directorio alguna vez fue servido por /var/run, y en algunos sistemas /var/run puede ser un enlace simbólico a /run.

Tenga en cuenta que no hay nada que impida que un programa cree archivos temporales en otra parte del sistema, pero es una buena práctica respetar las convenciones establecidas por la FHS.

Buscar archivos

Para buscar archivos en un sistema Linux, puede usar el comando find. Esta es una herramienta muy poderosa, llena de parámetros que pueden adaptarse a su comportamiento y modificar la salida exactamente a sus necesidades.

Para empezar, find necesita dos argumentos: un punto de partida y qué buscar. Por ejemplo, para buscar todos los archivos en el directorio actual (y subdirectorios) cuyos nombres terminan en .jpg, puede usar:

$ find . -name '*.jpg'
./pixel_3a_seethrough_1.jpg
./Mate3.jpg
./Expert.jpg
./Pentaro.jpg
./Mate1.jpg
./Mate2.jpg
./Sala.jpg
./Hotbit.jpg

Esto coincidirá con cualquier archivo cuyos últimos cuatro caracteres del nombre sean .jpg, sin importar lo que venga antes, ya que * es un comodín para “cualquier cosa”. Sin embargo, vea lo que sucede si se agrega otro * al final del patrón:

$ find . -name '*.jpg*'
./pixel_3a_seethrough_1.jpg
./Pentaro.jpg.zip
./Mate3.jpg
./Expert.jpg
./Pentaro.jpg
./Mate1.jpg
./Mate2.jpg
./Sala.jpg
./Hotbit.jpg

El archivo Pentaro.jpg.zip (resaltado arriba) no se incluyó en la lista anterior, porque incluso si contiene .jpg en su nombre, no coincidía con el patrón ya que había caracteres adicionales después de él. El nuevo patrón significa “cualquier cosa .jpg cualquier cosa”, por lo que coincide.

Tip

Tenga en cuenta que el parámetro -name distingue entre mayúsculas y minúsculas. Si desea realizar una búsqueda que no distinga entre mayúsculas y minúsculas, utilice -iname.

La expresión * .jpg debe colocarse entre comillas simples, para evitar que el shell interprete el patrón en sí. Pruebe sin las comillas y vea qué sucede.

De forma predeterminada, find comenzará en el punto de partida y descenderá a través de los subdirectorios (y subdirectorios de esos subdirectorios) que se encuentren. Puede restringir este comportamiento con los parámetros -maxdepth N, donde N es el número máximo de niveles.

Para buscar solo en el directorio actual, usaría -maxdepth 1. Suponga que tiene la siguiente estructura de directorios:

directory
├── clients.txt
├── partners.txt -> clients.txt
└── somedir
    ├── anotherdir
    └── clients.txt

Para buscar dentro de somedir, necesitaría usar -maxdepth 2 (el directorio actual +1 nivel hacia abajo). Para buscar dentro de anotherdir, se necesitaría -maxdepth 3 (el directorio actual +2 niveles hacia abajo). El parámetro -mindepth N funciona de manera opuesta buscando solo en directorios al menos N niveles hacia abajo.

El parámetro -mount puede usarse para evitar que find caiga dentro de los sistemas de archivos montados. También puede restringir la búsqueda a tipos específicos de sistemas de archivos usando el parámetro -fstype. Así que find /mnt -fstype exfat -iname "\ report" solo buscaría dentro de los sistemas de archivos exFAT montados en /mnt.

Búsqueda por atributos

Puede utilizar los siguientes parámetros para buscar archivos con atributos específicos, como los que su usuario puede escribir, tienen un conjunto específico de permisos o tienen un tamaño determinado:

-user USERNAME

Coincide con los archivos propiedad del usuario USERNAME.

-group GROUPNAME

Coincide con archivos propiedad del grupo GROUPNAME.

-readable

Coincide con archivos que son legibles por el usuario actual.

-writable

Coincide con archivos en los que el usuario actual puede escribir.

-executable

Busca archivos que son ejecutables por el usuario actual. En el caso de directorios, esto coincidirá con cualquier directorio que el usuario pueda ingresar (permiso x).

-perm NNNN

Esto coincidirá con cualquier archivo que tenga exactamente el permiso NNNN. Por ejemplo, -perm 0664 coincidirá con cualquier archivo que el usuario y el grupo puedan leer y escribir y que otros puedan leer (o rw-rw-r--).

Puede agregar un - antes de NNNN para buscar archivos que tengan al menos el permiso especificado. Por ejemplo, -perm -644 coincidiría con archivos que tengan al menos permisos 644 (rw-r—​r--). Esto incluye un archivo con 664 (rw-rw-r--) o incluso 775 (rwxrwx-r-x).

-empty

Coincidirá con archivos y directorios vacíos.

-size N

Coincidirá con cualquier archivo de tamaño N, donde N por defecto es un número de bloques de 512 bytes. Puede agregar sufijos a N para otras unidades: Nc contará el tamaño en bytes, Nk en kibibytes (KiB, múltiplos de 1024 bytes), NM en mebibytes (MiB, múltiplos de 1024 * 1024) y NG para gibibytes (GiB, múltiplos de 1024 * 1024 * 1024).

Nuevamente, puede agregar los prefijos + o - (aquí significa más grande que ó más pequeño que) para buscar tamaños relativos. Por ejemplo, -size -10M coincidirá con cualquier archivo de menos de 10 MiB de tamaño.

Por ejemplo, para buscar archivos en su directorio de inicio que contengan el patrón report sin distinguir entre mayúsculas y minúsculas en cualquier parte del nombre, tengan permisos 0644, hayan sido accedidos hace 10 días y cuyo tamaño sea de al menos 1 Mib, podría utilizar

$ find ~ -iname "*report*" -perm 0644 -atime 10 -size +1M

Búsqueda por tiempo

Además de buscar atributos, también puede realizar búsquedas por tiempo, encontrando archivos a los que se accedió, se les cambiaron los atributos o se modificaron durante un período de tiempo específico. Los parámetros son:

-amin N, -cmin N, -mmin N

Esto coincidirá con los archivos a los que se ha accedido, se han cambiado los atributos o se han modificado (respectivamente) N minutos atrás.

-atime N, -ctime N, -mtime N

Esto coincidirá con los archivos a los que se accedió, se cambiaron los atributos o se modificaron N*24 horas atrás.

Para -cmin N y -ctime N, cualquier cambio de atributo provocará una coincidencia, incluido un cambio en los permisos, lectura o escritura en el archivo. Esto hace que estos parámetros sean especialmente poderosos, ya que prácticamente cualquier operación que involucre el archivo activará una coincidencia.

El siguiente ejemplo coincidiría con cualquier archivo del directorio actual que se haya modificado hace menos de 24 horas y tenga un tamaño superior a 100 MiB:

$ find . -mtime -1 -size +100M

Usando locate y updatedb

location y updatedb son comandos que pueden usarse para encontrar rápidamente un archivo que coincida con un patrón dado en un sistema Linux. Pero a diferencia de find, locate no buscará el patrón en el sistema de archivos: en su lugar, lo buscará en una base de datos construida ejecutando el comando updatedb. Esto le da resultados muy rápidos, pero pueden ser imprecisos dependiendo de cuándo se actualizó la base de datos por última vez.

La forma más sencilla de usar locate es simplemente darle un patrón para buscar. Por ejemplo, para encontrar todas las imágenes JPEG en su sistema, usaría locate jpg. La lista de resultados puede ser bastante extensa, pero debería verse así:

$ locate jpg
/home/carol/Downloads/Expert.jpg
/home/carol/Downloads/Hotbit.jpg
/home/carol/Downloads/Mate1.jpg
/home/carol/Downloads/Mate2.jpg
/home/carol/Downloads/Mate3.jpg
/home/carol/Downloads/Pentaro.jpg
/home/carol/Downloads/Sala.jpg
/home/carol/Downloads/pixel_3a_seethrough_1.jpg
/home/carol/Downloads/jpg_specs.doc

Cuando se le solicite el patrón jpg, locate mostrará todo lo que contenga este patrón, sin importar lo que venga antes o después. Puede ver un ejemplo de esto en el archivo jpg_specs.doc en la lista de arriba: contiene el patrón, pero la extensión no es jpg.

Tip

Recuerde que con locate está haciendo coincidir patrones, no extensiones de archivo.

Por defecto, el patrón distingue entre mayúsculas y minúsculas. Esto significa que los archivos que contienen .JPG no se mostrarán ya que el patrón está en minúsculas. Para evitar esto, pase el parámetro -i a locate. Repitiendo nuestro ejemplo anterior:

$ locate -i .jpg
/home/carol/Downloads/Expert.jpg
/home/carol/Downloads/Hotbit.jpg
/home/carol/Downloads/Mate1.jpg
/home/carol/Downloads/Mate1_old.JPG
/home/carol/Downloads/Mate2.jpg
/home/carol/Downloads/Mate3.jpg
/home/carol/Downloads/Pentaro.jpg
/home/carol/Downloads/Sala.jpg
/home/carol/Downloads/pixel_3a_seethrough_1.jpg

Observe que el archivo Mate1_old.JPG, en negritas arriba, no estaba presente en la lista anterior.

Puede pasar varios patrones para locate, simplemente sepárelos con espacios. El siguiente ejemplo haría una búsqueda que no distingue entre mayúsculas y minúsculas para cualquier archivo que coincida con los patrones zip y jpg:

$ locate -i zip jpg
/home/carol/Downloads/Expert.jpg
/home/carol/Downloads/Hotbit.jpg
/home/carol/Downloads/Mate1.jpg
/home/carol/Downloads/Mate1_old.JPG
/home/carol/Downloads/Mate2.jpg
/home/carol/Downloads/Mate3.jpg
/home/carol/Downloads/OPENMSXPIHAT.zip
/home/carol/Downloads/Pentaro.jpg
/home/carol/Downloads/Sala.jpg
/home/carol/Downloads/gbs-control-master.zip
/home/carol/Downloads/lineage-16.0-20190711-MOD-quark.zip
/home/carol/Downloads/pixel_3a_seethrough_1.jpg
/home/carol/Downloads/jpg_specs.doc

Cuando utilice varios patrones, puede solicitar la ubicación para mostrar solo los archivos que coincidan con todos. Esto se hace con la opción -A. El siguiente ejemplo mostraría cualquier archivo que coincida con los patrones .jpg y los patrones .zip:

$ locate -A .jpg .zip
/home/carol/Downloads/Pentaro.jpg.zip

Si desea contar el número de archivos que coinciden con un patrón dado en lugar de mostrar su ruta completa, puede usar la opción -c. Por ejemplo, para contar el número de archivos .jpg en un sistema:

$ locate -c .jpg
1174

Un problema con locate es que solo muestra las entradas presentes en la base de datos generada por updatedb (ubicada en /var/lib/mlocate.db). Si la base de datos está desactualizada, la salida podría mostrar archivos que se han eliminado desde la última vez que se actualizó. Una forma de evitar esto es agregar el parámetro -e, que hará que verifique si el archivo todavía existe antes de mostrarlo en la salida.

Por supuesto, esto no resolverá el problema de los archivos creados después de que la última actualización de la base de datos no aparezca. Para ello tendrá que actualizar la base de datos con el comando updatedb. El tiempo que llevará esto dependerá de la cantidad de archivos de su disco.

Controlar el comportamiento de updatedb

El comportamiento de updatedb puede ser controlado por el archivo /etc/updatedb.conf. Este es un archivo de texto donde cada línea controla una variable. Las líneas en blanco se ignoran y las líneas que comienzan con el caracter # se tratan como comentarios.

PRUNEFS=

Cualquier tipo de sistema de archivos indicado después de este parámetro no será escaneado por updatedb. La lista de tipos debe estar separada por espacios y los tipos en sí no distinguen entre mayúsculas y minúsculas, por lo que NFS y nfs son lo mismo.

PRUNENAMES=

Esta es una lista de nombres de directorios separados por espacios que no deberían ser escaneados por updatedb.

PRUNEPATHS=

Esta es una lista de nombres de ruta que deben ser ignorados por updatedb. Los nombres de las rutas deben estar separados por espacios y especificados de la misma manera que se mostrarían con updatedb (por ejemplo, /var/spool/media)

PRUNE_BIND_MOUNTS=

Esta es una variable simple sí o no. Si se establece en yes, los montajes de enlace (los directorios montados en otro lugar con el comando mount --bind) serán ignorados.

Búsqueda de binarios, páginas del manual y código fuente

which es un comando muy útil que muestra la ruta completa a un ejecutable. Por ejemplo, si desea ubicar el ejecutable de bash, puede usar:

$ which bash
/usr/bin/bash

Si se agrega la opción -a, el comando mostrará todos los nombres de ruta que coincidan con el ejecutable. Observa la diferencia:

$ which mkfs.ext3
/usr/sbin/mkfs.ext3

$ which -a mkfs.ext3
/usr/sbin/mkfs.ext3
/sbin/mkfs.ext3
Tip

Para encontrar qué directorios están en el PATH use el comando echo $PATH. Esto imprimirá (echo) el contenido de la variable PATH ($PATH) en su terminal.

type es un comando similar que mostrará información sobre un binario, incluyendo dónde se encuentra y su tipo. Simplemente use type seguido del nombre del comando:

$ type locate
locate is /usr/bin/locate

El parámetro -a funciona de la misma manera que en which, mostrando todos los nombres de ruta que coinciden con el ejecutable. Al igual que:

$ type -a locate
locate is /usr/bin/locate
locate is /bin/locate

Y el parámetro -t mostrará el tipo de archivo del comando, que puede ser alias, keyword, function, builtin o file. Por ejemplo:

$ type -t locate
file

$ type -t ll
alias

$ type -t type
type is a built-in shell command

El comando whereis es más versátil y, además de los binarios, también se puede usar para mostrar la ubicación de las páginas de manual o incluso el código fuente de un programa (si está disponible en su sistema). Simplemente escriba whereis seguido del nombre binario:

$ whereis locate
locate: /usr/bin/locate /usr/share/man/man1/locate.1.gz

Los resultados anteriores incluyen binarios (/usr/bin/locate) y páginas de manual comprimidas (/usr/share/man/man1/locate.1.gz).

Puede filtrar rápidamente los resultados utilizando modificadores de línea de comandos como -b, que los limitará solo a los binarios, -m, que los limitará solo a páginas de manual, o -s, que los limitará solo al código fuente. Repitiendo el ejemplo anterior, obtendría:

$ whereis -b locate
locate: /usr/bin/locate

$ whereis -m locate
locate: /usr/share/man/man1/locate.1.gz

Ejercicios Guiados

  1. Imagine que un programa necesita crear un archivo temporal de un solo uso que nunca más será necesario después de que se cierre el programa. ¿Cuál sería el directorio correcto para crear este archivo?

  2. ¿Cuál es el directorio temporal que debe borrarse durante el proceso de arranque?

  3. Usando find, busque solo en el directorio actual los archivos que el usuario pueda escribir, que hayan sido modificados en los últimos 10 días y tengan más de 4 GiB.

  4. Usando locate, busque cualquier archivo que contenga tanto los patrones report como updated, update o updating en sus nombres.

  5. ¿Cómo puede encontrar dónde se almacena la página de manual de ifconfig?

  6. ¿Qué variable debe agregarse a /etc/updatedb.conf para que updatedb ignore los sistemas de archivos ntfs?

  7. Un administrador del sistema desea montar un disco interno (/dev/sdc1). Según la FHS, ¿en qué directorio se debe montar este disco?

Ejercicios Exploratorios

  1. Cuando se usa locate, los resultados se extraen de una base de datos generada por updatedb. Sin embargo, esta base de datos puede estar desactualizada, lo que hace que locate muestre archivos que ya no existen. ¿Cómo se puede hacer que locate muestre solo los archivos existentes en su salida?

  2. Busque cualquier archivo en el directorio o subdirectorios actuales hasta 2 niveles hacia abajo, excluyendo los sistemas de archivos montados, que contengan el patrón Status o statute en sus nombres.

  3. Limitando la búsqueda a los sistemas de archivos ext4, busque cualquier archivo en /mnt que tenga al menos permisos de ejecución para el grupo, sea legible para el usuario actual y haya cambiado algún atributo en las últimas 2 horas.

  4. Busque archivos vacíos creados hace más de 30 días y que estén al menos dos niveles por debajo del directorio actual

  5. Considere que los usuarios carol y john son parte del grupo mkt. Busque en el directorio de inicio de john cualquier archivo que también sea legible por carol.

Resumen

En esta lección, aprendió acerca de la organización básica del sistema de archivos en una máquina Linux, según el FHS, y cómo buscar binarios y archivos, ya sea por nombre o por atributos. Los siguientes comandos se discutieron en esta lección:

find

Un comando versátil que se utiliza para buscar archivos y carpetas según una variedad de criterios de búsqueda.

locate

Una utilidad que utiliza una base de datos local que contiene las ubicaciones de los archivos almacenados localmente.

Updatedb

Actualiza la base de datos local utilizada por el comando locate.

which

Muestra la ruta completa a un ejecutable.

whereis

Muestra las ubicaciones de las páginas del manual, los binarios y el código fuente en el sistema.

type

Muestra la ubicación de un binario y el tipo de aplicación que es (como un programa que está instalado, un programa Bash integrado y más).

Respuestas a los ejercicios guiados

  1. Imagine que un programa necesita crear un archivo temporal de un solo uso que nunca más será necesario después de que se cierre el programa. ¿Cuál sería el directorio correcto para crear este archivo?

    Como no nos importa el archivo después de que el programa termine de ejecutarse, el directorio correcto es /tmp.

  2. ¿Cuál es el directorio temporal que debe borrarse durante el proceso de arranque?

    El directorio es /run o, en algunos sistemas, /var/run.

  3. Usando find, busque solo en el directorio actual los archivos que el usuario pueda escribir, que hayan sido modificados en los últimos 10 días y tengan un tamaño superior a 4 GiB.

    Para ello, necesitará los parámetros -writable, -mtime y -size:

    find . -writable -mtime -10 -size +4G
  4. Usando locate, busque cualquier archivo que contenga tanto los patrones report como updated, update o updating en sus nombres.

    Dado que locate debe coincidir con todos los patrones, utilice la opción -A:

    locate -A "report" "updat"
  5. ¿Cómo puede encontrar dónde se almacena la página de manual de ifconfig?

    Utilice el parámetro -m para whereis:

    whereis -m ifconfig
  6. ¿Qué variable debe agregarse a /etc/updatedb.conf para que updatedb ignore los sistemas de archivos ntfs?

    La variable es PRUNEFS= seguida del tipo de sistema de archivos: PRUNEFS=ntfs

  7. Un administrador del sistema desea montar un disco interno (/dev/sdc1). Según la FHS, ¿en qué directorio se debe montar este disco?

    En la práctica, el disco se puede montar en cualquier lugar. Sin embargo, la FHS recomienda que los montajes temporales se realicen en /mnt

Respuestas a ejercicios exploratorios

  1. Cuando se usa locate, los resultados se extraen de una base de datos generada por updatedb. Sin embargo, esta base de datos puede estar desactualizada, lo que hace que locate muestre archivos que ya no existen. ¿Cómo se puede hacer que locate muestre solo los archivos existentes en su salida?

    Agregue el parámetro -e, como en locate -e PATTERN.

  2. Busque cualquier archivo en el directorio o subdirectorios actuales hasta 2 niveles hacia abajo, excluyendo los sistemas de archivos montados, que contengan el patrón Status o statute en sus nombres.

    Recuerde que para -maxdepth también debe considerar el directorio actual, por lo que queremos tres niveles (el actual más 2 niveles hacia abajo):

    find . -maxdepth 3  -mount -iname "*statu*"
  3. Limitando la búsqueda a los sistemas de archivos ext4, busque cualquier archivo en /mnt que tenga al menos permisos de ejecución para el grupo, sea legible para el usuario actual y haya cambiado algún atributo en las últimas 2 horas.

    Utilice el parámetro -fstype de mount para limitar la búsqueda a tipos específicos de sistemas de archivos. Un archivo legible por el usuario actual tendría al menos 4 en el primer dígito de los permisos, y un ejecutable del grupo tendría al menos 1 en el segundo dígito. Como no nos importan los permisos de los demás, podemos usar 0 para el tercer dígito. Use -cmin N para filtrar los cambios de atributos recientes, recordando que N se especifica en minutos. Entonces:

    find /mnt -fstype ext4 -perm -410 -cmin -120
  4. Busque archivos vacíos creados hace más de 30 días y que estén al menos dos niveles por debajo del directorio actual

    El parámetro -mindepth N se puede utilizar para limitar la búsqueda al menos a N niveles hacia abajo, pero recuerde que debe incluir el directorio actual en la cantidad de niveles. Use -empty para verificar archivos vacíos y -mtime N para verificar la hora de modificación. Entonces:

    find . -empty -mtime +30 -mindepth 3
  5. Considere que los usuarios carol y john son parte del grupo mkt. Busque en el directorio de inicio de john cualquier archivo que también sea legible por carol.

    Teniendo en cuenta que son miembros del mismo grupo, necesitamos al menos una r (4) en los permisos del grupo, y no nos importan los demás. Entonces:

    find /home/john -perm -040

Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

LPI es una organización sin fines de lucro.

© 2023 Linux Professional Institute (LPI) es la organización global de certificación y apoyo académico para profesionales de código abierto. Con más de 200,000 titulares de certificación, es el primer y más grande organismo de certificación no comercial del mundo para Linux y Open Source. LPI cuenta con profesionales certificados en más de 180 países, realiza exámenes en varios idiomas y tiene cientos de socios de capacitación.

Nuestro propósito es hacer que las oportunidades económicas y creativas estén disponibles para todos, haciendo que el conocimiento de código abierto y la certificación sea universalmente accesible.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contáctenos
  • Política de privacidad y cookies

¿Detecta un error o desea ayudar a mejorar esta página? Por favor háznoslo saber.

© 1999–2023 The Linux Professional Institute Inc. Todos los derechos reservados.