procesos y trabajos
Procesos y trabajos
Section titled “Procesos y trabajos”ps # procesos de la terminal actualps aux # TODOS los procesos del sistema, formato detalladops -ef # alternativa, formato distinto (estilo System V)ps aux | grep nginx # buscar un proceso concretoLectura de ps aux
Section titled “Lectura de ps aux”USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.1 16928 9876 ? Ss 09:00 0:02 /sbin/init| Campo | Significado |
|---|---|
USER |
Propietario del proceso |
PID |
ID del proceso |
%CPU / %MEM |
Uso de CPU/memoria |
STAT |
Estado (R ejecutando, S durmiendo, Z zombie, T parado) |
TTY |
Terminal asociada (? si no tiene) |
COMMAND |
Comando que lo lanzó |
ps aux --sort=-%cpu | head # top 10 por uso de CPUps aux --sort=-%mem | head # top 10 por uso de memoriaps -p 1234 # info de un PID concretopstree -p # árbol de procesos padre/hijo, con PIDstop / htop
Section titled “top / htop”top # monitor interactivo en tiempo realhtop # versión mejorada (colores, scroll, más intuitivo)Tecla (dentro de top) |
Acción |
|---|---|
q |
Salir |
k |
Matar un proceso (pide PID) |
M |
Ordenar por memoria |
P |
Ordenar por CPU |
r |
Cambiar prioridad (renice) |
1 |
Mostrar uso por cada núcleo |
kill, killall y señales
Section titled “kill, killall y señales”kill no mata directamente: envía una señal al proceso, y es el proceso (o el kernel) quien decide qué hacer con ella.
kill PID # envía SIGTERM (petición de cierre ordenado)kill -9 PID # envía SIGKILL (terminación forzosa, inmediata)killall nombre_proceso # mata por nombre, todas las instanciaspkill -f "patrón" # mata procesos cuyo comando completo coincide con el patrón| Señal | Número | Efecto |
|---|---|---|
SIGHUP |
1 | Recarga config / cierre de terminal |
SIGINT |
2 | Interrupción (Ctrl+C) |
SIGKILL |
9 | Terminación forzosa, no se puede ignorar |
SIGTERM |
15 | Petición de cierre ordenado (por defecto) |
SIGSTOP |
19 | Pausa el proceso |
SIGCONT |
18 | Reanuda un proceso parado |
kill -l # lista todas las señales disponiblespgrep nombre_proceso # busca PID por nombre, sin ps+grep{% hint style=“info” %}
SIGKILL (-9) no da al proceso oportunidad de cerrar ficheros ni liberar recursos. Úsalo solo si SIGTERM no ha funcionado.
{% endhint %}
Foreground / background: jobs, fg, bg
Section titled “Foreground / background: jobs, fg, bg”comando & # lanza en segundo planonmap -sS 10.0.0.0/24 -oN scan.txt &
jobs # lista los trabajos de la sesión actualjobs -l # igual, con PID[1]- Running nmap -sS 10.0.0.0/24 &[2]+ Stopped vim fichero.txtCtrl+Z suspende el proceso en foreground y lo deja parado en background.
fg # trae el job actual al primer planofg %2 # trae el job número 2bg # reanuda el job actual en background (tras un Ctrl+Z)kill %1 # mata el job 1 (no el PID directamente)nohup y disown
Section titled “nohup y disown”Si cierras la terminal, los procesos en background normalmente reciben SIGHUP y mueren con ella.
nohup comando & # ignora SIGHUP, sigue vivo si cierras la terminalnohup comando > salida.log 2>&1 & # además, redirige toda la salida a un log
disown # desvincula el job actual de la shell (sigue corriendo tras cerrar)disown -a # desvincula todos los jobs{% hint style=“info” %}
Para procesos que necesitas poder recuperar después (no solo que sobrevivan), mejor usar tmux/screen — puedes volver a “ver” la sesión completa, no solo que el proceso siga vivo.
Ver 13 — tmux y screen. {% endhint %}
systemctl
Section titled “systemctl ”Gestión de servicios en sistemas con systemd.
systemctl status nginx # estado de un serviciosystemctl start nginx # arrancarsystemctl stop nginx # pararsystemctl restart nginx # reiniciarsystemctl reload nginx # recargar config sin cortar conexionessystemctl enable nginx # activar en el arranque del sistemasystemctl disable nginx # desactivar en el arranquesystemctl is-enabled nginx # comprobar si está activado en el arranquejournalctl -u nginx -f # logs del servicio en tiempo realsystemd
Section titled “systemd ”Lo visto antes (systemctl start/stop/status/enable) opera sobre “unidades” (units). Un unit file es el fichero que define cómo se comporta un servicio.
Dónde viven los unit files
Section titled “Dónde viven los unit files”/etc/systemd/system/ # unidades creadas/modificadas por el administrador (prioridad más alta)/lib/systemd/system/ # unidades instaladas por paquetes del sistemaAnatomía de un unit file (.service)
Section titled “Anatomía de un unit file (.service)”[Unit]Description=Mi servicio personalizadoAfter=network.target # arranca después de que la red esté lista
[Service]Type=simple # simple, forking, oneshot, notify...ExecStart=/usr/local/bin/mi-script.shRestart=on-failure # reinicia si el proceso fallaUser=pyrhos # usuario con el que corre el proceso
[Install]WantedBy=multi-user.target # a qué target se asocia su activación en el arranquesudo systemctl daemon-reload # recarga la configuración tras crear/editar un unit filesudo systemctl start mi-serviciosudo systemctl enable mi-servicioTargets (equivalente moderno a los runlevels)
Section titled “Targets (equivalente moderno a los runlevels)”systemctl get-default # target por defecto del sistemasystemctl list-units --type=target # listar todos los targets activossystemctl isolate multi-user.target # cambiar de target (ej. salir de modo gráfico)| Target | Equivalente runlevel clásico |
|---|---|
poweroff.target |
0 |
rescue.target |
1 (modo rescate) |
multi-user.target |
3 (multiusuario, sin GUI) |
graphical.target |
5 (multiusuario con GUI) |
reboot.target |
6 |
Ver dependencias de un servicio
Section titled “Ver dependencias de un servicio”systemctl list-dependencies nginx # qué necesita para arrancarsystemctl list-units --failed # servicios que han fallado al arrancarTimers de systemd (alternativa moderna a cron)
Section titled “Timers de systemd (alternativa moderna a cron)”systemctl list-timers # ver todos los timers activos y cuándo se disparanSe tratan con más detalle en la página de tareas programadas, junto con cron.
Logs y journald
Section titled “Logs y journald”journalctl
Section titled “journalctl”journalctl # todos los logs del sistema, paginadojournalctl -f # seguir en tiempo real (como tail -f)journalctl -u nginx # logs de un servicio concretojournalctl -u nginx -f # seguir en tiempo real, solo ese serviciojournalctl -p err # solo nivel error o superiorjournalctl --since "1 hour ago" # filtrar por tiempo relativojournalctl --since "2026-10-01" --until "2026-10-05" # rango de fechasjournalctl -b # logs solo del arranque actualjournalctl -b -1 # logs del arranque anteriorjournalctl -k # solo mensajes del kernel (equivalente a dmesg)journalctl --disk-usage # espacio ocupado por los logs{% hint style=“info” %}
journalctl centraliza en un único sitio (el journal binario) lo que antes estaba repartido en varios ficheros de texto en /var/log/. En sistemas con systemd es la primera herramienta a usar para depurar por qué un servicio no arrancó.
{% endhint %}
/var/log — logs clásicos en texto plano
Section titled “/var/log — logs clásicos en texto plano”| Fichero | Contenido |
|---|---|
/var/log/auth.log |
Autenticación: logins, sudo, SSH (Debian/Ubuntu) |
/var/log/syslog |
Log general del sistema (Debian/Ubuntu) |
/var/log/messages |
Equivalente a syslog en RedHat/CentOS |
/var/log/dmesg |
Mensajes del kernel al arrancar |
/var/log/apache2/ o /var/log/nginx/ |
Logs de servidores web, por aplicación |
tail -f /var/log/auth.log # seguir intentos de login en vivogrep "Failed password" /var/log/auth.log # intentos fallidos de SSHgrep "sudo" /var/log/auth.log # uso de sudorsyslog
Section titled “rsyslog”Demonio que gestiona el enrutado y almacenamiento de logs clásicos en texto plano. Su configuración está en /etc/rsyslog.conf y /etc/rsyslog.d/.
systemctl status rsyslog # comprobar que el servicio está activoÚtil saber que existe cuando necesitas reenviar logs a un servidor centralizado (SIEM, syslog remoto) — se configura ahí, no en journald.