Comando Find

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 10

TEMA: MONITORIZACIÓN DEL SISTEMA

Para conocer el comportamiento del sistema es necesario obtener información


sobre las prestaciones de los diferentes subsistemas que lo componen. En
Linux se dispone, por una parte, de una serie de comandos que proporcionan
datos sobre el rendimiento del hardware y del sistema operativo y, por otra
parte, de una aplicación cliente-servidor que registra los eventos que suceden
en el equipo.

Herramientas básicas

Según el tipo de información que presentan, los comandos se pueden clasificar


en:

 Procesos: muestra información sobre los procesos que se están ejecutando


en el sistema.
 Almacenamiento: proporcionan información sobre la entrada y salida al
subsistema de almacenamiento.
 Memoria: proporcionan información sobre el espacio de memoria real y
swap.
 Red: facilitan estadísticas de uso de las interfaces de red.
 Polivalentes: muestran información sobre distintos subsistemas del equipo.

Comandos

 ps: muestra el estado de los procesos que se están ejecutando en el equipo


en el formato USUARIO TERMINAL TIEMPO COMANDO. Si utilizamos el
comando ps aux nos dará mayor información:

 USER: usuario con el que se ejecuta el proceso.


 PID: ID del proceso.
 %CPU: porcentaje de tiempo que el proceso estuvo en ejecución desde
que se inició.
 %MEM: porcentaje de memoria física utilizada.
 VSZ: memoria virtual del proceso medida en KB.
 RSS: "resident set size", es la cantidad de memoria física no swappeada
que la tarea ha utilizado (en KB).
 TT: terminal que controla el proceso (tty).
 STAT: código de estado del proceso (información detallada más adelante).
 STARTED: fecha de inicio del proceso.
 TIME: tiempo de CPU acumulado.
 COMMAND: comando con todos sus argumentos.

Los códigos de estado del proceso pueden ser:

 D: suspendido no interrumpible (generalmente esperando E/S).


 R: en ejecución o listo para ejecutarse (en cola).
 S: suspendido interrumpible (esperando que se complete un evento).
 T: detenido, por una señal de control de trabajo o porque está siendo
traceado.
 W: paginado (no válido a partir del kernel 2.6.xx).
 X: muerto (nunca debe ser visto).
 Z: proceso difunto ("zombie"), terminado pero no reclamado por el proceso
padre.

 df: Muestra el espacio libre del sistema de ficheros. Su formato es:


SISTEMA DE FICH BLOQUES(1KB) USADO DISPONIBLE USO(%)
PUNTO DE MONTAJE.
Si utilizamos df –i, nos da la misma información pero por inodos.

 du: Muestra el espacio ocupado a partir de un determinado directorio de


manera recursiva. Para conocer quién está gastando más memoria,
podemos utilizar el siguiente comando:
du –max-depth=1 –m /home

 free: proporciona información relativa a la cantidad de memoria física,


espacio de swap libre y usado por el sistema operativo, estado de los
buffers y memoria caché utilizada por el núcleo. Su formato es TOTAL
USADO LIBRE SHARED BUFFERS CACHED

Shared = memoria distribuida compartida

 pmap: proporciona información referente a la utilización de la memoria por


parte de un determinado proceso, que tenemos que indicar por su PID. Nos
da la dirección de memoria de los archivos involucrados de ese proceso,
cuánto ocupan y sus permios.

 dstat: permite realizar estadísticas de CPU, utilización de disco, red,


paginación y estado del sistema (EN TIEMPO REAL).

 iostat: permite ver la carga de CPU y del disco duro. Por device, te indica el
número de transferencias por segundo y el número total y por segundo de
kB transferidos.

 top: informa en tiempo real sobre la actividad del sistema. Proporciona


información sobre la carga del sistema operativo, grado de utilización de la
CPU, memoria y swap, y los procesos que se encuentran en ejecución.
(Dando a > y <, podemos ordenar por columnas)

 vmstat: muestra información sobre los procesos que se están ejecutando


en el equipo, la memoria, las operaciones de E/S a disco y la utilización de
la CPU. Es una aplicación clásica en los sistemas.

 who: permite ver de forma resumida el tiempo que lleva activo el sistema
(uptime), la carga del sistema y la actividad de los usuarios que se
encuentran conectados al sistema.

 xosview: es una aplicación gráfica que proporciona información sobre el


uso de CPU, memoria, cantidad del sistema, red, interrupciones y swap en
espacio de usuario.
 ifstat: muestra la estadística de tráfico de entrada y salida de las interfaces
de red.

 iftop: muestra las conexiones de red de un equipo.

 iptraf: es una completa herramienta que permite mostrar las estadísticas de


red en tiempo real.

 netstat: proporciona estadísticas e información de estado sobre tablas de


rutas, interfaces de red, conexiones establecidas, etc..

 ping: permite comprobar el estado de una conexión.

 traceroute: permite obtener el camino que se sigue un paquete para


establecer una comunicación con un destinatario, es decir, los routers que
se atraviesan.

Directorio /proc

El núcleo de Linux almacena información relativa a su funcionamiento en


archivos situados en el directorio /proc, de tal forma que, para analizar el
comportamiento de un sistema, también se puede recurrir a la consulta de los
archivos de este sistema de ficheros. De hecho, prácticamente todas las
herramientas analizadas obtienen sus datos de esta fuente.

Archivos de registro (syslog)

Existen muchos motivos por lo que se pueden generar mensajes. Entre los más
frecuentes se encuentran los fallos del servidor, de autenticación o por la
utilización de un servicio. Estos mensajes se pueden encontrar en el
directorio /var/log (sobre todo, en syslog).

El registro de todos los mensajes del sistema lo realiza el servicio syslogd, el


ucal no es exclusivo de los servicios del sistema sino que nosotros también
puede registrar sus propios mensajes usando syslog.

Archivos de inicialización generales

Los archivos de inicialización de los usuarios son:

 /etc/profile. Contiene la configuración del perfil de arranque del login. Se


ejecuta cada vez que un usuario entra en el sistema. Se puede ejecutar:
se analiza el contenido de /etc/motd, se establecen los parámetros por
defecto para el terminal y visualización del mensaje de aviso.
 /etc/bashrc. Contiene funciones de configuración como umask y PS1. Se
ejecuta cada vez que se invoca el Shell.
 /etc/motd. Mensaje del día para todos los usuarios, que será mostrado al
inicio de la sesión.
 /etc/default/useradd. Configuración de los valores predeterminados al
crear el usuario, como puede ser el directorio personal y el grupo
principal.
 /etc/login.defs. configuración de los valores predeterminados al crear al
usuario, como el número de usuario y los valores de la contraseña.
 /etc/issue. Contiene el banner que se mostrará en el momento del login
local.
 /etc/issue.net. contienen el banner que se mostrará en el momento del
login remoto, por ejemplo al acceder por telnet.

Archivos de configuración del usuario

Dichos archivos se encuentran en el directorio personal, están ocultos y se


copian desde /etc/skell en el momento de crear la cuenta del usuario.

.bash_profile. Configura la variable PATH y las variables de entorno y llama al


fichero .bashrc.
.bashrc. se encarga de la definición de los alias y de llamar al fichero
/etc/bashrc.
.bash_history. Guarda los comandos ejecutados por el usuario, que se
muestran con el comando history.
.bash_logout. Se lee cuando el usuario ejecuta el comando exit.

Tras la lectura del fichero /etc/profile, el sistema operativo intentará leer alguno
de los siguientes ficheros, en este orden.

Comando wall

Envía un mensaje a todos los usuarios activos del sistema. Se utiliza para
enviar mensajes urgentes, como, por ejemplo, avisar que se va a apagar el
equipo, etc…

Ejemplos:

cat mensaje | wall

wall < mensaje

Para activar la visualización de los mensajes debe utilizar:

mesg y

Y para desactivarlos:

mesg n
Búsqueda de ficheros

Find es uno de los comandos más utilizados y tiene una gran utilidad a la hora
de desarrollar scripts. El modo de funcionamiento de find es sencillo: desciende
por la estructura de directorios, localiza aquellos archivos que cumplen con el
criterio de búsqueda y lleva a cabo diversas acciones sobre los mismos. Si
desea mostrar todos los archivos y directorios desde el directorio actual hacia
abajo, debe utilizar:

find dirOrigen

Siendo dirOrigen es el directorio desde el cual find comenzará a buscar. Por


ejemplo, para listar todos los ficheros y directorios desde el directorio actual,
ejecute:

find . –print

El modificador –print se utiliza para mostrar el nombre (path) de los ficheros


encontrados. Por defecto, utiliza el delimitador \n para separar cada fichero,
pero se le puede indicar cualquier otro mediante –print0, que utiliza el
delimitador \0. Esto es muy útil si desea buscar ficheros que contienen
espacios en su nombre.

Find es un comando dotado de una gran variedad de opciones, muy potentes a


la hora de realizar acciones relacionadas con las búsquedas de ficheros.

Búsqueda por nombre o expresiones regulares:

El parámetro –name se utiliza para llevar a cabo la búsqueda por el nombre del
fichero, el cual permite el uso de comodines (*,?). Además, se pueden
concatenar parámetros, por ejemplo –print para imprimir los ficheros que
cumplen con la condición indicada.

Por ejemplo: para listar todos los ficheros con extensión txt a partir de su
directorio /home, debe utilizar:

find /home –iname “*.txt” –print

Los parámetros son los siguientes:

-iname: realiza las búsquedas ignorando las mayúsculas/minúsculas en el


nombre de fichero.
-or: operación lógica or que se puede utilizar para combinar múltiples criterios
de búsqueda.
-path: se utiliza para buscar ficheros que cumplan con el criterio de búsqueda,
no sólo en el nombre del fichero, como sucede con –name, sino en cualquier
parte del path absoluto del mismo.
-regex: es similar a –path, pero realiza búsquedas basadas en expresiones
regulares.
-iregex: misma funcionalidad que –regex, pero no es sensible a mayúsculas y
minúsculas.

Negando argumentos

Find admite la negación de sus argumentos mediante “!”. Por ejemplo, para
listar todos los ficheros menos aquellos cuya extensión sea .txt, se utiliza:

find . ! –name “*.txt” –print

Búsqueda basada en el tipo de archivo

Find permite restringir la búsqueda dependiendo del tipo de archivo, para lo


cual se debe utilizar el parámetro –type. La tabla de parámetros es el
siguiente:

Argument Tipo de fichero


o
F Archivo regular
l Enlace simbólico
d Directorio
c Dispositivo especial
b Dispositivo de bloques
s Socket
p Cauce

Búsqueda basada en la profundidad del directorio

Cuando se utiliza el comando find, se busca recursivamente en el árbol de


directorios hasta llegar a las hojas del mismo. Si lo desea, puede restringir la
profundidad de la búsqueda mediante los argumentos –maxdepth (profundidad
máxima) y –mindepth (profundidad mínima).

En la mayoría de los casos, sólo es necesario buscar en el directorio actual. En


tal caso, se puede restringir la profundidad. Si se desea acceder como máximo
al primer nivel de subdirectorios del directorio actual, debe indicar una
profundidad máxima (-maxdetph) de uno; si se desea descender dos niveles,
se indica una profundidad de dos; etc.. Por ejemplo:

find . –mindepth 2 –type f -print

Lista todos aquellos archives que se encuentren al menos a dos subdirectorios


de distancia del directorio actual.

Búsqueda basada en sellos de tiempo

Linux dispone de tres tipos de sellos temporales para cada archivo:


Argumento Descripción
-atime [+|-] numeroDias Tiempo de acceso: momento en el que se
-amin [+|-] numeroMinutos accedió al fichero por última vez.
-mtime [+|-] numeroDias Tiempo de modificación: momento en el cual el
-mmin [+|-] numeroMinutos fichero fue modificado por última vez.
Tiempo de cambio: momento en el cual los
-ctime [+|-] numeroDias
metadatos del fichero (como los permisos o la
-cmin [+|-] numeroMinutos
propiedad) fueron modificados.
Especifica un fichero de referencia con el que
-newer ficheroReferencia
comparar el sello temporal.

Búsqueda basada en el tamaño del archivo

Mediante la utilización del parámetro –size se puede realizar una búsqueda


basada en el tamaño del fichero. Al igual que sucede con las búsquedas
basadas en sellos temporales, se pueden utilizar los símbolos + y – para
indicar un mayor o menor tamaño de fichero. El tamaño del fichero debe ser
numérico e ir acompañado de un indicador del tipo de medida a emplear. Por
ejemplo:

find . –type f –size +2M

find . –type f –size 2M

find . –type f –size -2M

Los parámetros son:

b  bloques de 512 bytes.


c  bytes
w  palabras de 2 bytes.
k  kilobyte
M  Megabyte
G  Gigabyte

Borrado de ficheros

El parámetro –delete se utiliza para eliminar los archivos que cumplan con las
restricciones de búsqueda. Por ejemplo:

find . –type f –name “*.swp” –delete

Búsqueda basada en permisos y propiedad del archivo

Es posible llevar a cabo búsquedas basadas en los permisos del archivo,


utilizando el argumento –perm seguido de la tripla númerica del permisos. Por
ejemplo:

find . –type f –perm 644 –print


Este tipo de búsqueda es de gran utilidad. Por ejemplo, los ficheros PHP del
mismo deben ser asignados los adecuados permisos para su ejecución. Si
desea localizar aquellos archivos que no dispongan de estos permisos, puede
ejecutar:

find . –type f –name “*.php” ! –perm 644 –print

Por otro lado, para llevar a cabo búsquedas basadas en la propiedad del
fichero, se debe utilizar el parámetro –user, seguido del nombre de usuario o
del UID del mismo.

Ejecutar comandos o acciones junto a la búsqueda

El comando find puede ir acompañado de muchos otros comandos mediante la


utilización del parámetro –exec, el cual es una de las características más
potentes de find.

Retomando el ejemplo de los permisos de los ficheros del servidor Apache, al


igual que se utiliza –perm para localizar a aquellos archivos que no tienen los
permisos necesarios, puede ser necesario cambiar la propiedad de todos los
archivos de cierto usuario a otro usuario, para lo cual se deben localizar los
ficheros correspondientes al root mediante el parámetro –user y cambiar la
propiedad de dichos ficheros mediante –exec.

Se debe ejecutar el comando find como root para poder llevar a cabo cambios
de propiedad.

Ejemplo:

find . –type f –user root –exec chown pepe {} \;

En él, aparecen los caracteres especiales {} que acompañan al parámetro –


exec. Por cada coincidencia en la búsqueda, {} se reemplaza por el nombre del
fichero que la cumple antes de llevar a cabo la ejecución del comando indicado
con –exec.

Por ejemplo, si la búsqueda mediante find devuelve dos ficheros (fichero1 y


fichero2), que son propiedad del root, “chown pepe{}” se resuelve como “chown
pepe fichero1” y “chown pepe fichero2”.

Otro posible ejemplo de uso es concatenar todos los ficheros de un programa


en C++ de un directorio dado en un único fichero txt. Para esto debe ejecutar:

find . –type f –name “*.cpp” –exec cat {} \; > concatenados.txt

Para redireccionar la salida hacia un fichero se utilize >. Nótese que no se


emplea el operador de concatenación (>>), dado que la salida completo del
comando find forma un único flujo de datos. Sólo debe utilizar >> si múltiples
flujos de datos anexan datos al mismo fichero.
Omitir diretorios de la búsqueda

En ocasiones, es necesario omitir ciertos directorios de la búsqueda. Por


ejemplo, cuando un programador busca un determinado fichero a través del
árbol de directorios de desarrollo, el cual se encuentra bajo un sistema de
control de versiones como Git, existe el directorio .git (almacena la información
de control de versiones en cada directorio) dentro de cada directorio. Dado que
dicho directorio no contiene información relevante para la búsqueda, se puede
excluir de la misma. La técnica de excluir directorios de la búsqueda se conoce
como poda, siendo el parámetro –prune.

find desarrollo/programas \ ( -name “.git” –prune \) –o \( -type f –print \)

El ejemplo anterior lista todos los ficheros menos los que se encuentren en
directorios .git. Para ello se ha dividido el proceso en dos partes. En la primera,
se realiza la exclusión de directorios y en la segunda, se indica la acción a
realizar.

Copias de seguridad

Un adecuado plan de copias de seguridad es imprescindible para todo


administrador de sistemas. A su vez, y dada la cantidad de datos procesados,
es necesario llevar a cabo una comprensión de los mismos junto a dicha copia.
Igualmente, la encriptación es un proceso necesario para la protección de los
datos.

 Archivando con tar: el comando tar se utiliza para archivar ficheros. Este
comando permite almacenar múltiples ficheros y directorios en un único archivo
(se va a denominar archivador), almacenando incluso los atributos de dichos
ficheros. Los ficheros de origen pueden ser tanto ficheros como directorios,
expresados individualmente o mediante el uso de comodines.

Tar está incluido por defecto en todos los sistemas GNU/Linux, tiene una
sintaxis sencilla y crea formatos de archivo portables. Dispone, además, de
múltiples argumentos. Los más utilizados son:

-A: añade ficheros a un archivador.


-a o –auto-compress: utiliza formatos de compresión sin indicar explícitamente
el algoritmo de comprensión. Para ello, tar puede comprimir observando la
extensión dada para el archivador o la extensión de los ficheros a añadir.
-c: crea un archivador.
-C directorioDestino: indica un directorio de extracción específico.
-d: busca diferencias entre los ficheros del archivador y el sistema de ficheros.
--delete ficheros: elimina ficheros del archivador.
--exclude fichero [Patrón]: excluye del archivado los ficheros cuyo nombre
cumpla con el patrón indicado.
-f: especifica el nombre del archivador.
-j: comprime el archivador mediante Bzip.
--lzma: comprime el archivador mediante Izma.
-r: añade ficheros al final del archivador.
-t: lista el contenido del archivador.
--totals: indica el tamaño de los ficheros copiados al archivador.
-u: añade sólo archivos nuevos al archivador.
-v o –vv: muestra el proceso de archivado/desarchivado.
-x: extrae archivos del archivador.
-z: comprime el archivador mediante gzip.

Ejemplos:

tar –cf fichero.tar [ficherosOrigen]  Crea el archivador con los ficheros


indicados, o bien con todos los ficheros del directorio actual si no se indica
nada.

tar –xf fichero.tar  extrae el archivador en el directorio actual.

tar –xf fichero.tar –C /directorioDestino  extrae los ficheros del archivador en


el directorio de destino indicado.

tar –xf fichero.tar fichero1 fichero2  limita los ficheros a extraer del
archivador.

tar –rvf ficheroOriginal.tar nuevoFichero  añade un nuevo fichero a un


archivador existente.

tar –tf fichero.tar  lista el contenido de un archivador.

tar –A fichero1.tar fichero2.tar  mezcla el contenido de fichero1.tar y


fichero2.tar.

tar –uf fichero.tar fichero  se indica que añade archivos solo si son más
recientes que los que se encuentran en el archivador con –u.

tar –f fichero.tar –delete fichero1 fichero2 …  elimina del archivador los


ficheros indicados.

tar –cf fichero.tar * --exclude [patrón]  excluye del archivador aquellos


ficheros que cumplen con el patrón dado.

tar –cf fichero.tar * -X listado  excluye del archivador aquellos ficheros que se
indican en el fichero listado.

tar –zcvf fichero.tar.gz [ficheros]  crea un archivador con los ficheros


indicados y lo comprime mediante gzip.

tar –xavf fichero.tar –C /destino  descomprime el archivador, detectando el


formato de comprensión (-a) del directorio de destino indicado.

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy