Unidad 5.1: Procesos - ps, top, pgrep y kill
Identificacion y control seguro de procesos
Unidad 5.1: Procesos - ps, top, pgrep y kill
Introduccion
En el brochure del curso, la Unidad 5 inicia con lo esencial para operar un servidor bajo presion: ver procesos (ps/top), encontrarlos (pgrep) y controlarlos (kill).
Esto se usa en situaciones reales como:
- “El servidor esta lento” (CPU/RAM/IO)
- “Un servicio no responde” (procesos colgados)
- “Necesito detener un proceso sin reiniciar el servidor”
Tiempo estimado: 60-90 minutos
Conceptos minimos
- PID: identificador del proceso.
- CPU/MEM: consumo aproximado (snapshot).
- SIGTERM vs SIGKILL: terminar ordenado vs forzado.
ps: snapshot reproducible
BASH
1$ ps aux | head -n 6
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 168500 12120 ? Ss 08:00 0:02 /sbin/init
root 725 0.1 0.9 982300 74200 ? Ssl 08:01 0:10 /usr/bin/containerd
www-data 2459 2.4 0.7 210312 118004 ? S 10:44 0:12 nginx: worker process- 1
- ps aux lista procesos del sistema con usuario, CPU/MEM y comando
Ordenar por CPU y memoria:
BASH
1$ ps aux --sort=-%cpu | head -n 6
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1821 15.2 1.8 933612 293020 ? Ssl 08:10 18:22 /usr/bin/dockerd -H fd://
mysql 1330 6.4 7.9 1928300 1301200 ? Ssl 07:55 24:10 /usr/sbin/mysqld- 1
- ps aux –sort=-%cpu entrega un top rapido por CPU (snapshot)
top: monitoreo en vivo
BASH
1$ top- 1
- top abre un monitor interactivo para observar CPU, memoria y procesos
pgrep: encontrar PID por nombre/patron
BASH
1$ pgrep -a nginx
2458 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
2459 nginx: worker process- 1
- pgrep -a imprime PID y el comando completo asociado (util antes de matar)
kill: terminar un proceso (recomendado: SIGTERM primero)
BASH
- 1
- pgrep -a identifica el PID y el comando real
- 2
- kill -TERM pide terminacion ordenada (primera opcion)
- 3
- ps -p verifica si el proceso sigue presente
- 4
- kill -KILL fuerza terminacion (ultima instancia)
Evita usar kill -KILL (SIGKILL) como primer paso.
Lo que podria salir mal: - Corrupcion de archivos temporales/locks. - Perdida de logs o buffers sin flush.
Como prevenirlo: 1. Usa SIGTERM primero y espera unos segundos. 2. Verifica con ps -p <PID>. 3. Usa SIGKILL solo si el proceso no responde.
Ejemplos practicos multi-SO
Linux
BASH
1$ ps aux | head -n 5
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 168500 12120 ? Ss 08:00 0:02 /sbin/init- 1
- ps aux muestra un snapshot de procesos del sistema
macOS
BASH
1$ ps aux | head -n 5
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
usuario 9012 12.3 0.8 4123456 132000 s001 S+ 9:10AM 0:30.12 -zsh- 1
- ps aux funciona en macOS con columnas similares
Windows
POWERSHELL
1PS> Get-Process | Select-Object -First 5 Name,Id,CPU,WS
Name Id CPU WS
---- -- --- --
pwsh 12456 12.10 182222848- 1
- Get-Process lista procesos (equivalente conceptual a ps)
Linux
- 1
- pgrep -a encuentra el proceso objetivo
- 2
- kill -TERM solicita el cierre ordenado
macOS
BASH
- 1
- pgrep -a identifica PID por nombre
- 2
- kill -TERM solicita terminacion
Windows
POWERSHELL
- 1
- Get-Process -Name encuentra el proceso
- 2
- Stop-Process detiene el proceso
| Aspecto | Linux | macOS | Windows |
|---|---|---|---|
| Listar procesos | ps |
ps |
Get-Process |
| Buscar PID | pgrep -a |
pgrep -a |
Get-Process -Name |
| Terminar proceso | kill -TERM |
kill -TERM |
Stop-Process |
Mejores practicas
Diagnostico rapido antes de actuar.
Casos de uso: - Servidor lento. - Servicio colgado.
Cuando aplicar: 1. Snapshot: ps aux --sort=-%cpu y ps aux --sort=-%mem. 2. Observacion: top por 30-60 segundos. 3. Accion: kill -TERM y verificacion.
Resumen
pssirve para evidencia reproducible.topsirve para observar en tiempo real.pgrepacelera la busqueda de PIDs.killcontrola procesos (SIGTERM primero).