Módulo 5 - Administración de archivos y procesos del sistema
Módulo 5 - Administración de archivos y procesos del sistema
Comando Tar
tares una herramienta clave en administración Linux.- Agrupa múltiples archivos o directorios en uno solo.
- No comprime por defecto, solo empaqueta el contenido.
- Ideal para respaldos, transferencias y organización.
- La sintaxis general es:
tar [opciones] archivo.tar files. - Es compatible con muchas opciones para extraer y listar • Su uso es común en scripts de mantenimiento y backups.
| Comando | Descripción |
|---|---|
tar -cf backup.tar * | Crear un archivo .tar con todo el contenido de la ubicación actual. |
mv backup.tar /var | Se recomienda siempre mover el archivo .tar a otra ubicación para una mejor manipulación. |
tar -xf backup.tar | Permite extraer el contenido del archivo .tar creado. |
tar -czf etc-back.tar.gz etc/ | Crear un archivo .tar comprimido formato gzip del directorio /etc. |
gzip -d etc-back.tar.gz | Descomprime el archivo. Posteriormente se debe de extraer el archivo .tar |
Comando gzip
gzipreduce el tamaño de archivos eficientemente.- Ayuda a ahorrar espacio y acelerar transferencias.
- Comprime codificando los datos sin perder información.
- Es útil en backups, servidores y medios digitales.
- Preserva la integridad del archivo original comprimido.
- Se utiliza junto a
tarpara empaquetar y comprimir. - Soporta descompresión con
gunzipogzip -d.
| Comando | Descripción | Ejemplo |
|---|---|---|
gzip -k | Mantiene el archivo original y crea el archivo comprimido. | gzip -k etc-back.tar |
gzip | Crea el archivo comprimido sobre el archivo original. | gzip backup.tar |
gzip file1 file2 file3 | Permite comprimir varios archivos al mismo tiempo separándolos por un espacio. | |
gzip -r [directorio] | Permite comprimir de manera individual todos los archivos contenidos dentro de un directorio. | gzip -r etc/ |
gzip -9 | Permite definir el nivel de compresión sobre un archivo, siendo 1 el más "rápido" y 9 el "mejor". | gzip -5 /root/backup2.tar |
gzip -d | Permite descomprimir un archivo. | gzip -d tardoc.tar.gz |
Streams
- El sistema usa canales para comunicarse.
- Input recibe datos desde el teclado.
- Output muestra resultados al usuario.
- Error canaliza mensajes de fallo visibles.
- Son gestionados por el shell (como Bash).
- Permiten redirigir flujos entre comandos.
- Facilitan automatización y depuración eficiente.
Tipos de Streams
- Standard Input Channel: Recibe datos del usuario, montado en
/dev/stdin(valor "0"). - Standard Output Channel: Muestra resultados en pantalla, montado en
/dev/stdout(valor "1"). - Standard Error Channel: Muestra errores del sistema, montado en
/dev/stderr(valor "2").
Pipes (tuberías)
- Las tuberías conectan la salida de un comando con otro.
- Permiten ejecutar procesos en cadena de forma eficiente.
- Son útiles para automatizar tareas repetitivas.
- Transforman o filtran datos entre comandos.
- Reducen líneas innecesarias en scripts.
- Usan canales estándar de entrada y salida.
- Ejemplos:
ls | grep archivo # Filtra resultados cat /etc/passwd | grep vla cat /proc/cpuinfo | wc # Muestra la cantidad de las líneas, palabras y caracteres history | grep sudo grep -w vla /etc/passwd | cut -d ":" -f1
Comandos tee
teeredirige la salida estándar hacia un archivo mientras la muestra en pantalla.- Permite guardar y visualizar datos simultáneamente.
- Es útil para crear registros sin perder la salida visible.
- La sintaxis básica es:
comando | tee archivo.txt. - Con la opción -a añade contenido sin sobrescribir.
- Facilita el monitoreo y respaldo de información.
- Ejemplo:
cat /etc/passwd | tee passwd.txt, muestra y guarda.
Comandos xargs
xargsconvierte la entrada estándar en argumentos para otros comandos.- Permite ejecutar comandos con datos provenientes de pipes.
- Es ideal para procesar múltiples elementos de forma eficiente.
- Transforma listas en parámetros individuales automáticamente.
- Reduce la necesidad de bucles complejos en scripts.
- Ejemplo:
echo pera manzana uva | xargs touch, crea tres archivos.
Comandos tee y xargs
teeduplica la salida: pantalla + archivo.xargstransforma entradas en argumentos ejecutables.- Ambos optimizan flujos de trabajo en terminal.
- Se complementan con pipes para automatización.
- Son herramientas esenciales en administración Linux.
- Permiten procesar y guardar datos eficientemente.
- Su uso mejora la productividad en scripts y comandos.
Comando cut
- El comando
cutextrae texto por bytes, caracteres o campos. - Se usa para cortar líneas y obtener datos específicos.
- La salida puede redirigirse o encadenarse con otros comandos.
- Es útil para procesar archivos como
empleados.txt. - Permite filtrar columnas sin alterar el archivo original.
| Comando | Descripción |
|---|---|
cut -d ":" -f 1 empleados.txt | Esta orden muestra la primera columna del archivo empleados.txt, utilizando ":" como delimitador. |
cut -d ":" -f 5 empleados.txt|sort | En esta instrucción, se extrae la quinta columna del archivo empleados.txt basándose en el delimitador ":" y luego se ordena alfabéticamente utilizando el comando sort. |
cut -d ":" -f 3 empleados.txt|tail -n 2 | Al usar esta orden, se muestra la tercera columna del archivo empleados.txt y luego se muestra las últimas dos líneas de esa columna. |
cut -d ":" -f 1,3-5 empleados.txt | Con esta línea de comando se extraen la primera columna y un rango que va desde la tercera hasta la quinta columna del archivo empleados.txt. |
cut -d ":" -f 1,3-5 empleados.txt|head -n 3 | Aquí, se muestran la primera columna y las columnas del rango tercera a quinta del archivo empleados.txt, y luego se muestran solo las tres primeras líneas de esa salida. |
cut -d ":" -f 1,3 empleados.txt --complement | Utilizando el parámetro "–complement", esta orden muestra todas las columnas excepto la primera y la tercera del archivo empleados.txt. |
cut -d ":" -f 1,3 empleados.txt --output=delimiter='|' | Esta instrucción muestra las columnas primera y tercera del archivo empleados.txt, pero utilizando "|" como delimitador en lugar de \ |
Información de los procesos
- Un proceso es un conjunto de instrucciones que la CPU ejecuta en un momento dado.
- En Linux se pueden gestionar fácilmente gracias a comandos específicos.
- El comando
pspermite visualizar los procesos actualmente en ejecución. - Esto ayuda a controlar y administrar los recursos del sistema.
| Comando | Descripción |
|---|---|
ps | Muestra los procesos en ejecución. |
ps -f | Proporciona información detallada sobre los procesos, incluyendo usuario y hora de inicio. |
ps a | Muestra todos los procesos, incluso los de otros usuarios. |
ps u | Ofrece información adicional sobre los procesos del usuario actual, como el uso de CPU y memoria. |
ps x | Muestra procesos no asociados con una terminal. |
ps -A | Lista todos los procesos del sistema, incluidos los de otros usuarios. |
pstree | Presenta una representación jerárquica de los procesos en ejecución. |
ps -Al | Muestra información completa de todos los procesos del sistema, incluyendo la hora de inicio y el usuario que los inició. |
ps -e | Similar a ps -A, muestra todos los procesos del sistema. |
ps -ef | Combina -e (todos) y -f (formato completo). |
ps aux | Formato BSD extendido: muestra todos los procesos con detalles de usuario y uso de recursos (muy usado en Linux). |
ps -eo | Permite personalizar las columnas mostradas (ej: ps -eo pid,ppid,cmd,%cpu,%mem). |
ps --sort | Ordena por criterios como %cpu, %mem, pid (ej: ps aux --sort=-%cpu). |
ps -p <PID> | Muestra información de un proceso específico por su PID. |
ps -C <nombre> | Busca procesos por nombre de comando (ej: ps -C bash). |
ps -t <terminal> | Muestra procesos asociados a una terminal específica. |
ps -H | Muestra la jerarquía de procesos (árbol de procesos). |
ps -L | Muestra hilos (threads) de los procesos (columna LWP). |
ps -Z | En sistemas con SELinux, muestra el contexto de seguridad. |
ps -m | Muestra información de memoria del proceso. |
ps -o lstart | Muestra la fecha/hora exacta de inicio del proceso. |
ps --forest | Similar a pstree, muestra procesos en formato de árbol dentro de ps. |
La salida del comando ps -aux, nos proporciona lo siguiente:
| Comando | Descripción |
|---|---|
USER | Nombre del usuario que inició el proceso. |
PID | ID del proceso. |
%CPU | Porcentaje de uso de CPU por el proceso. |
%MEM | Porcentaje de uso de memoria por el proceso. |
VSZ | Tamaño total usado por el proceso en la memoria swap. |
RSS | Tamaño total usado por el proceso en la memora RAM. |
TTY | Terminal asociada con el proceso. |
STAT | Estado del proceso (como S para "durmiendo", R para "en ejecución", etc.). |
START | Hora de inicio del proceso. |
TIME | Tiempo acumulado de CPU utilizado por el proceso. |
COMMAND | Nombre del comando o programa asociado con el proceso. |
Comando top
- El comando
topes fundamental para monitorear el rendimiento del sistema en tiempo real. - Permite identificar procesos que consumen más recursos.
- Ayuda a tomar decisiones rápidas en situaciones críticas.
- Es esencial para tareas de diagnóstico y administración del sistema.
| Parámetro | Descripción |
|---|---|
t | Cambia las pantallas de la CPU a gráficos ASCII simples que muestran el porcentaje de uso de cada CPU. |
m | Muestra diferentes opciones de visualización para las estadísticas de la memoria. |
z | Agrega un color por defecto. |
y | Resalta en blanco las tareas en ejecución. |
b | Resalta en blanco las filas con tareas en ejecución. |
u | Nos abre un buscador para filtrar los procesos por usuario. |
h | Parámetro de ayuda. Muestra otros parámetros que pueden ser usados. |
n | Permite definir una cantidad de líneas a mostrar. |
k | Permite matar un proceso. |
1 | Muestra todas las CPUs/cores individualmente (alterna entre vista global y detallada). |
l | Alterna la visualización de la línea de carga promedio (load average) en la parte superior. |
s | Cambia el intervalo de actualización (delay) en segundos (ej: 2.0 para 2 segundos). |
d | Igual que s - cambia el intervalo de actualización. |
c | Alterna entre mostrar el comando completo y solo el nombre del proceso. |
i | Muestra solo procesos en ejecución (idle processes). |
P | Ordena por uso de CPU (porcentaje). |
M | Ordena por uso de memoria (RES). |
N | Ordena por ID de proceso (PID). |
T | Ordena por tiempo de ejecución (TIME+). |
R | Invierte el orden de clasificación actual. |
f | Entra al editor de campos para seleccionar qué columnas mostrar. |
o (o mayúscula) | Cambia el orden de los campos en tiempo real. |
F | Selecciona el campo por el cual ordenar. |
V | Muestra el árbol de procesos (modo jerárquico). |
H | Muestra threads/hilos individualmente (no solo procesos). |
Z | Cambia la paleta de colores global (más opciones que z). |
x | Resalta la columna de ordenación actual. |
y | Resalta procesos en ejecución (RUNNING). |
W | Guarda la configuración actual en ~/.toprc para futuras sesiones. |
q | Sale de top. |
Parámetros de línea de comandos (al iniciar):
| Parámetro | Descripción |
|---|---|
top -d segundos | Establece el intervalo de actualización (ej: top -d 1 para 1 segundo). |
top -p PID1,PID2 | Monitoriza solo procesos específicos (ej: top -p 1234,5678). |
top -u usuario | Muestra solo procesos de un usuario específico. |
top -U usuario | Igual que -u (nombre o UID). |
top -i | Inicia omitiendo procesos inactivos (idle). |
top -n veces | Ejecuta top un número fijo de veces y luego sale. |
top -b | Modo batch/por lotes, útil para redirigir a archivos o scripts. |
top -H | Muestra hilos en lugar de procesos (desde inicio). |
top -c | Muestra la línea de comando completa desde el inicio. |
top -o campo | Ordena por campo específico al inicio (ej: -o %MEM). |
top -E | Cambia la escala de memoria (KiB, MiB, GiB, etc.). |
Ejemplos prácticos:
# Monitorear cada 0.5 segundos solo procesos de MySQL
top -d 0.5 -u mysql
# Ejecutar top 5 veces y guardar salida a archivo
top -b -n 5 > top_output.txt
# Monitorear procesos específicos por PID
top -p $(pgrep -d, firefox)
# Mostrar hilos y ordenar por CPU desde inicio
top -H -o %CPU
# Modo batch para procesamiento automático
top -b -n 1 -o %MEM | head -20
Comando nice
- Cada proceso tiene un valor y prioridad únicos para acceder a los recursos del sistema.
- Los comandos
niceyrenicepermiten ajustar dicha prioridad. nicedefine la prioridad antes de ejecutar el proceso (rango: -20 a 19).- El kernel interpreta los valores de prioridad como 0 (más alta) a 39 (más baja).
- Nomenclatura de
nice:nice -[prioridad] [proceso]
- Ejecutemos un proceso que inicie con un valor de prioridad de -15:
nice --15 ping google.com
- Veamos el proceso ejecutado:
ps -Al | grep ping(acá veremos el PID y el valor de prioridad de nice -15).
Comando renice
-
niceasigna prioridad al iniciar un proceso. -
renicemodifica la prioridad de procesos activos. -
Su uso mejora el rendimiento y control del sistema.
-
Nomenclatura:
renice [val.prior] [PID] renice -1 2877 # Ejemplo -
renice [val.prior] -u [username]: Permite cambiar el valor de prioridad denicepara todos los procesos en ejecución de un usuario. Ej:renice -15 u vla -
renice [val.prior] -g [groupname]: Permite cambiar el valor de prioridad denicepara todos los procesos en ejecución de un grupo de usuarios. Ej:renice -15 -g vla
| Característica | nice | renice |
|---|---|---|
| Momento de uso | Antes de iniciar un proceso | Durante la ejecución de un proceso |
| Función principal | Asignar una prioridad inicial | Cambiar la prioridad de un proceso activo |
| Requiere PID | No | Sí |
| Sintaxis básica | nice -n [valor] comando | renice -n [valor] -p [PID] |
| Permite aumentar prioridad | Solo como root | Solo como root |
| Valor predeterminado | 0 (si no se especifica) | No aplica (modifica prioridad existente) |
| Escenario de uso real | Ejecutar un respaldo con baja prioridad:nice -n 10 ./backup.sh | Reducir carga de proceso activo:renice -n 15 -p 1234 |
Comando jobs
-
Un job es un proceso interactivo controlado directamente desde la terminal.
-
Puede enviarse al segundo plano (background) y restaurarse al primer plano (foreground).
-
Esto permite al usuario pausar, reanudar o gestionar tareas sin cerrarlas.
-
El comando
jobses fundamental para visualizar los procesos activos asociados a la terminal actual.-
Ejecutamos la visualización y edición de un archivo de texto:
nano script.sh(Para cerrar este job sin que quede en segundo plano ejecutamos ctrl+x.) -
Si ejecutamos ctrl+t y ctrl+z el job es minimizado y enviado a segundo plano (background). Veremos algo como:
[1]+ Stopped nano script.sh -
Para maximizar el job y traerlo al primer plano (foreground) lo hacemos con el comando
fg %[#job]. Ej:fg %1
-
-
El comando
jobsnos mostrará cada job en el background y su número de job-
(-): El símbolo
-indica que es el penúltimo job enviado al background. -
(+): El símbolo
+indica que es el último job enviado al background. -
fg %+: Lleva al primer plano el último job enviado al background. -
fg %-: Lleva al primer plano el penúltimo job enviado al background. -
bg %[#job]: Coloca un job que ya estaba en segundo plano como el último (+) job enviado a ese escenario, y el que estaba de último lo coloca como penúltimo (-). -
jobs %+: Muestra el último job enviado al segundo plano. -
jobs %-: Muestra el penúltimo job enviado al segundo plano.
-
Detached processes
- Proceso detached sigue tras cerrar terminal.
nohupevita que el proceso se termine.- Ideal para tareas largas sin supervisión.
- Permite continuar sin sesión activa.“Nohup” significa “no colgar”.
- Muy útil al ejecutar scripts extensos. Ejemplo: backup remoto sin interrupciones.
nohup [command] &lo envía al segundo plano.- Genera el archivo
nohup.outautomáticamente. - Se guarda donde se ejecutó el comando.
- Permite monitoreo con
tail -f nohup.outotail -f /home/user/nohup. - Terminal cerrada no afecta el proceso.
- Solo se detiene si se mata manualmente.
nohup.outguarda toda la salida generada.
Señales de procesos
- Las señales controlan procesos en ejecución.
- Pueden pausar, reiniciar o finalizar procesos.
- SIGINT (2): Interrumpe proceso (ej. ctrl+c).
- SIGKILL (9): Mata proceso de forma forzada.
- SIGTERM (15): Termina proceso de forma amigable.
- SIGSTP (20): Envía proceso al segundo plano.
- Se usan más de 25 señales distintas en Linux.
- Matar procesos es vital para liberar recursos del sistema.
- El comando
killusa por defecto SIGTERM (15). Ej:kill [PID] kill -9fuerza la finalización con SIGKILL. Ej:kill -9 [PID]xkillpermite cerrar procesos con el cursor.kill -SIGTERMfinaliza un proceso de manera amigable especificando el nombre de la señal. Ej:kill -SIGTERM [PID]killalltermina procesos por nombre (ej. ping ->killall ping).- Permite resolver bloqueos y cuelgues del sistema.
- Es clave para mantener la estabilidad del entorno.
- Ver mas información sobre señales en Linux signals
Comando watch
watchejecuta comandos repetidamente a intervalos definidos.- Permite observar cambios del sistema en tiempo real.
- Útil para monitorear procesos, disco o red sin intervención constante.
- Es clave para diagnósticos dinámicos del sistema.
| Parámetro | Descripción |
|---|---|
watch date | Muestra la ejecución del comando "date" cada 2 segundos por defecto. |
watch -n 5 date | Muestra la ejecución del comando "date" cada 5 segundos. |
watch -n 0 date | Muestra el resultado del comando "date" en tiempo real. |
Más parámetros: How to Use the Linux watch Command with Examples
Comandos filtradores de texto
head: Muestra las primeras líneas de un archivo. Se puede especificar el número de líneas conhead -[número].tail: Muestra las últimas líneas del archivo. Se puede especificar el número de líneas contail -[número].more: Visualiza archivos página por página. Presiona la barra espaciadora para avanzar,qpara salir yhpara obtener ayuda.less: Igual que more, pero con más funciones de navegacióncat: Despliega todo el contenido del archivo.cat -n [archivo]: Muestra las líneas con numeración.
- Todos facilitan lectura rápida de archivos.