Guía de Comandos de Linux 3: Procesos , Redes y redireccciones

Guía de Comandos de Linux 3: Procesos , Redes y redireccciones- Linux, Tutoriales

🐧 Linux ·

Comandos Básicos de Linux 3

Bloques 8–10: Procesos · Red básica · Redirecciones y tuberías

08 Procesos

En Linux, cada programa en ejecución es un proceso. El sistema operativo asigna a cada proceso un identificador único llamado PID (Process ID). Saber gestionar los procesos es esencial para controlar qué está haciendo el sistema en cada momento.

8.1 ps — Listar procesos

El comando ps (Process Status) muestra una instantánea de los procesos que están corriendo en el sistema en el momento de ejecutarlo.

Sintaxis: ps [opciones]

UsoDescripción
psMuestra solo los procesos de la sesión actual
ps auxMuestra TODOS los procesos del sistema (formato BSD)
ps -efMuestra TODOS los procesos en formato completo (estilo Unix)
ps -u usuarioMuestra los procesos de un usuario concreto
ps -p PIDMuestra información de un proceso concreto por su PID

Columnas de la salida de ps aux

ColumnaDescripción
USERUsuario propietario del proceso
PIDIdentificador único del proceso
%CPUPorcentaje de CPU que consume
%MEMPorcentaje de memoria RAM que consume
STATEstado: R=corriendo, S=dormido, Z=zombie…
COMMANDComando que inició el proceso
$ ps → procesos de mi sesión actual
$ ps aux → todos los procesos del sistema
$ ps aux | grep firefox → busca el proceso de Firefox
$ ps -u alumno → procesos del usuario alumno
$ ps -p 1234 → info del proceso con PID 1234
💡
Truco habitual ps aux | grep nombre es la forma más habitual de localizar el PID de un proceso concreto para después actuar sobre él.

8.2 top y htop — Monitor de procesos en tiempo real

A diferencia de ps, top y htop muestran los procesos actualizándose continuamente, como un monitor de actividad en tiempo real.

top

$ top
TeclaAcción dentro de top
qSale de top
kMata un proceso (pide el PID)
rCambia la prioridad de un proceso (renice)
MOrdena por uso de memoria
POrdena por uso de CPU (por defecto)
uFiltra por usuario
1Muestra el uso individual de cada núcleo de CPU
hMuestra la ayuda

htop (versión mejorada de top)

htop es una versión mejorada y más visual de top. Muestra barras de color para CPU y RAM, permite usar el ratón y es más fácil de usar. Puede que necesites instalarlo primero.

$ sudo apt install htop → instala htop si no está disponible
$ htop → lanza el monitor
TeclaAcción dentro de htop
F3 / /Busca un proceso por nombre
F4Filtra procesos
F5Vista de árbol (muestra procesos padre-hijo)
F6Cambia el criterio de ordenación
F9Matar proceso (muestra señales disponibles)
F10 / qSale de htop
💡
Recuerda htop es mucho más cómodo que top. Si no está instalado en tu sistema, instálalo: lo usarás constantemente.

8.3 kill y killall — Terminar procesos

Cuando un proceso se queda bloqueado o queremos detenerlo, usamos kill (por PID) o killall (por nombre). En realidad, estos comandos envían señales al proceso.

Señales más importantes

SeñalDescripción
SIGTERM (15)Pide al proceso que termine de forma ordenada (por defecto)
SIGKILL (9)Fuerza la terminación inmediata. El proceso no puede ignorarla
SIGHUP (1)Hace que el proceso relea su configuración (reinicio suave)

kill — Terminar por PID

Sintaxis: kill [señal] PID

$ kill 1234 → envía SIGTERM al proceso 1234
$ kill -9 1234 → fuerza el cierre del proceso 1234
$ kill -15 1234 → equivalente al kill sin señal
$ kill -SIGKILL 1234 → igual que kill -9

killall — Terminar por nombre

Sintaxis: killall [opciones] nombre_proceso

$ killall firefox → cierra todos los procesos de Firefox
$ killall -9 firefox → fuerza el cierre de Firefox
$ killall -u alumno → termina todos los procesos del usuario alumno
⚠️
SIGTERM antes que SIGKILL Usa siempre kill (SIGTERM) antes de recurrir a kill -9 (SIGKILL). SIGTERM permite al proceso guardar datos y cerrar limpiamente; SIGKILL no da esa oportunidad.

8.4 Procesos en segundo plano

Linux permite ejecutar procesos en segundo plano (background) para poder seguir usando la terminal mientras el proceso corre.

Operador / ComandoDescripción
comando &Lanza el comando en segundo plano desde el inicio
Ctrl + ZPausa el proceso actual y lo manda al fondo
bgReanuda en segundo plano el proceso pausado
fgTrae el proceso de fondo al primer plano
jobsLista los procesos en segundo plano de la sesión actual
$ sleep 100 & → lanza sleep en segundo plano
[1] 5678 → [número de trabajo] PID asignado
$ jobs → lista trabajos en segundo plano
[1]+ Ejecutando sleep 100 &
$ fg 1 → trae el trabajo 1 al primer plano
$ bg 1 → reanuda en background el trabajo 1
💡
nohup: procesos persistentes nohup comando & permite que el proceso siga corriendo aunque cerremos la terminal. Muy útil para tareas largas en servidores.

09 Red básica

Linux incluye herramientas muy potentes para diagnosticar y gestionar conexiones de red. Conocerlas es fundamental tanto para administrar sistemas como para resolver problemas de conectividad.

9.1 ping — Comprobar conectividad

El comando ping envía paquetes ICMP a un host para comprobar si está accesible y medir el tiempo de respuesta. Es la primera herramienta de diagnóstico de red.

Sintaxis: ping [opciones] host

OpciónDescripción
-c NEnvía solo N paquetes (sin esto, ping no para)
-i NIntervalo en segundos entre paquetes (por defecto 1s)
-t NTTL (Time To Live): número máximo de saltos en la red
-s NTamaño del paquete en bytes
-qModo silencioso: solo muestra el resumen final
$ ping google.com → ping continuo (Ctrl+C para parar)
$ ping -c 4 google.com → envía exactamente 4 paquetes
$ ping -c 4 192.168.1.1 → comprueba si el router responde
$ ping -c 3 -i 0.5 google.com → 3 paquetes con 0.5s de intervalo
# Ejemplo de salida
$ ping -c 3 google.com
PING google.com (142.250.185.46): 56 bytes de datos
64 bytes de 142.250.185.46: icmp_seq=0 ttl=118 time=12.4 ms
64 bytes de 142.250.185.46: icmp_seq=1 ttl=118 time=11.8 ms
64 bytes de 142.250.185.46: icmp_seq=2 ttl=118 time=12.1 ms
— google.com estadísticas de ping —
3 paquetes transmitidos, 3 recibidos, 0% pérdida de paquetes
💡
Diagnóstico rápido Si ping no funciona hacia internet pero sí hacia el router (192.168.1.1), el problema es del proveedor o la conexión exterior, no de tu equipo.

9.2 ip e ifconfig — Ver la configuración de red

Estos comandos muestran y gestionan las interfaces de red del sistema: direcciones IP, máscaras de subred, estado de las interfaces, etc.

ip — Moderno y recomendado

Sintaxis: ip [opciones] objeto comando

ComandoDescripción
ip aMuestra todas las interfaces y sus direcciones IP
ip a show eth0Muestra solo la interfaz eth0
ip rMuestra la tabla de rutas
ip linkMuestra el estado de las interfaces (up/down)
ip link set eth0 upActiva la interfaz eth0
ip link set eth0 downDesactiva la interfaz eth0
$ ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>
inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
inet6 fe80::1/64 scope link

ifconfig — Comando clásico

$ ifconfig → muestra todas las interfaces activas
$ ifconfig eth0 → muestra solo eth0
$ sudo ifconfig eth0 up → activa la interfaz
$ sudo ifconfig eth0 down → desactiva la interfaz
💡
ip vs ifconfig ip es el comando moderno y recomendado. ifconfig pertenece al paquete net-tools, que ya no viene instalado por defecto en muchas distribuciones.

9.3 curl — Transferir datos por red

curl (Client URL) permite hacer peticiones a servidores web y APIs, descargar archivos, enviar datos y mucho más. Es una herramienta indispensable para trabajar con servicios web.

Sintaxis: curl [opciones] URL

OpciónDescripción
-o archivoGuarda la respuesta en un archivo con ese nombre
-OGuarda con el nombre original del archivo remoto
-LSigue redirecciones HTTP automáticamente
-IMuestra solo las cabeceras HTTP de la respuesta
-X metodoEspecifica el método HTTP: GET, POST, PUT, DELETE…
-d ‘datos’Envía datos en el cuerpo de la petición (POST)
-H ‘cabecera’Añade una cabecera HTTP personalizada
-u user:passAutenticación básica HTTP
-sModo silencioso: no muestra progreso ni errores
-vModo verbose: muestra todos los detalles de la conexión
# Descargar un archivo
$ curl -O https://ejemplo.com/archivo.zip
$ curl -o mi_nombre.zip https://ejemplo.com/archivo.zip

# Ver cabeceras de una web
$ curl -I https://www.google.com

# Consultar una API
$ curl https://api.example.com/usuarios

# Enviar datos (POST)
$ curl -X POST -d ‘nombre=Juan&edad=17’ https://api.example.com/registro

# Con cabecera de autenticación
$ curl -H ‘Authorization: Bearer TOKEN’ https://api.example.com/datos

# Seguir redirecciones
$ curl -L https://bit.ly/enlace-corto
💡
curl y las APIs REST curl es fundamental para trabajar con APIs REST. Cualquier petición que hagas desde un navegador puedes replicarla y automatizarla con curl.

9.4 wget — Descargar archivos de internet

wget está especializado en la descarga de archivos y páginas web. A diferencia de curl, es más sencillo para descargas y soporta reanudar descargas interrumpidas.

Sintaxis: wget [opciones] URL

OpciónDescripción
-O archivoGuarda con el nombre indicado
-cContinúa una descarga interrumpida
-qModo silencioso
-rDescarga recursiva (sigue enlaces)
-P directorioGuarda en el directorio indicado
–limit-rate=NLimita la velocidad de descarga (ej: 500k)
$ wget https://ejemplo.com/archivo.iso → descarga normal
$ wget -O linux.iso https://ejemplo.com/ubuntu.iso → con nombre propio
$ wget -c https://ejemplo.com/archivo.iso → reanuda descarga
$ wget -P /home/alumno/descargas/ https://ejemplo.com/doc.pdf
💡
wget vs curl: ¿cuándo usar cada uno? Usa wget para descargar archivos de forma sencilla, y curl cuando necesites interactuar con APIs o controlar los detalles de la petición HTTP.

10 Redirecciones y tuberías

Una de las características más potentes de Linux es la capacidad de encadenar comandos y redirigir la entrada y salida de datos. Esto permite crear combinaciones muy poderosas a partir de comandos simples.

Primero es importante entender que en Linux cada proceso tiene tres flujos de datos estándar:

FlujoDescripción
stdin (0)Entrada estándar: por donde el proceso recibe datos (teclado por defecto)
stdout (1)Salida estándar: por donde el proceso muestra resultados (pantalla por defecto)
stderr (2)Salida de error: por donde se muestran los mensajes de error (pantalla por defecto)

10.1 > y >> — Redirigir la salida a un archivo

El operador > redirige la salida de un comando a un archivo en lugar de mostrarla en pantalla. Si el archivo ya existe, lo sobreescribe. El operador >> añade al final sin borrar el contenido previo.

# Sintaxis de redirecciones
comando > archivo → redirige stdout al archivo (sobreescribe)
comando >> archivo → añade stdout al final del archivo
comando 2> archivo → redirige solo stderr al archivo
comando 2>> archivo → añade stderr al archivo
comando > archivo 2>&1 → redirige stdout y stderr al mismo archivo
comando &> archivo → forma corta de redirigir stdout y stderr juntos
# Guardar la salida de un comando
$ ls -l > listado.txt → guarda el listado en listado.txt
$ date > fecha_actual.txt → guarda la fecha actual en un archivo

# Añadir sin sobreescribir
$ echo ‘Entrada 1’ > registro.txt
$ echo ‘Entrada 2’ >> registro.txt → añade al final
$ cat registro.txt
Entrada 1
Entrada 2

# Redirigir errores
$ ls /ruta/inexistente 2> errores.txt → guarda el error en un archivo
$ ls /ruta/inexistente 2> /dev/null → descarta el error (lo ‘silencia’)

# Redirigir todo (salida + errores)
$ comando_largo &> log_completo.txt
💡
/dev/null: la papelera del terminal /dev/null es un dispositivo especial que descarta todo lo que se le envíe. Se usa habitualmente para silenciar errores o salidas no deseadas.

10.2 < — Redirigir la entrada desde un archivo

El operador < hace que un comando lea su entrada desde un archivo en lugar del teclado.

Sintaxis: comando < archivo

$ sort < nombres.txt → ordena el contenido de nombres.txt
$ wc -l < documento.txt → cuenta las líneas de documento.txt
$ mail [email protected] < mensaje.txt → envía un email desde un archivo

Heredoc (<<) — Escribir texto multilínea

El heredoc permite introducir varias líneas de texto directamente en la terminal hasta encontrar la palabra clave final.

$ cat << EOF > mi_archivo.txt
> Esta es la primera línea
> Esta es la segunda línea
> EOF
$ cat mi_archivo.txt
Esta es la primera línea
Esta es la segunda línea

10.3 | — La tubería (pipe)

El operador | (tubería o pipe) conecta la salida de un comando directamente con la entrada del siguiente. Es uno de los conceptos más poderosos de Linux: construir herramientas complejas encadenando comandos simples.

Sintaxis: comando1 | comando2 | comando3 …

# Paginar salida larga
$ ls -la /etc | less → navega por el listado de /etc

# Filtrar resultados
$ ps aux | grep firefox → busca el proceso de Firefox
$ cat /etc/passwd | grep alumno → busca el usuario alumno

# Contar resultados
$ ls /etc | wc -l → cuenta los archivos en /etc
$ ps aux | grep -c python → cuántos procesos python hay

# Ordenar y eliminar duplicados
$ cat nombres.txt | sort → ordena el contenido
$ cat nombres.txt | sort | uniq → ordena y elimina duplicados

Comandos de apoyo más usados con tuberías

ComandoDescripción
wc -lCuenta el número de líneas de la entrada
wc -wCuenta el número de palabras
sortOrdena las líneas alfabéticamente
sort -nOrdena numéricamente
sort -rOrdena en orden inverso
uniqElimina líneas duplicadas consecutivas (usar tras sort)
head -n NMuestra las N primeras líneas
tail -n NMuestra las N últimas líneas
cut -dX -fNExtrae el campo N usando X como delimitador
tr ‘a’ ‘b’Reemplaza caracteres (transliterar)
tee archivoMuestra la salida en pantalla Y la guarda en archivo a la vez

Ejemplos avanzados combinados

# Los 5 archivos más grandes de /var
$ du -sh /var/* | sort -rh | head -5

# Los 3 usuarios con más procesos activos
$ ps aux | awk ‘{print $1}’ | sort | uniq -c | sort -rn | head -3

# Buscar una palabra en varios archivos y guardar resultado
$ grep -r ‘error’ /var/log/ | grep -v ‘debug’ > errores.txt

# Ver y guardar al mismo tiempo con tee
$ ls -la | tee listado.txt

# Contar cuántas líneas contienen ‘error’ en el log
$ cat /var/log/syslog | grep ‘error’ | wc -l
💡
La filosofía Linux Cada herramienta hace una sola cosa bien. El poder real viene de combinarlas con tuberías. Con el tiempo, estas cadenas de comandos se vuelven tu forma natural de pensar el problema.

10.4 Operadores de control de flujo

Además de las redirecciones, existen operadores que permiten ejecutar comandos de forma condicional según el resultado del anterior.

OperadorDescripción
cmd1 && cmd2Ejecuta cmd2 SOLO si cmd1 tuvo éxito (código de salida 0)
cmd1 || cmd2Ejecuta cmd2 SOLO si cmd1 falló (código de salida distinto de 0)
cmd1 ; cmd2Ejecuta cmd2 siempre, independientemente del resultado de cmd1
# && : el segundo se ejecuta solo si el primero tuvo éxito
$ mkdir proyecto && cd proyecto → entra solo si se creó bien
$ apt update && apt upgrade → actualiza solo si la lista se descargó bien

# || : el segundo se ejecuta solo si el primero falló
$ ping -c1 google.com || echo ‘Sin conexión’

# ; : el segundo se ejecuta siempre
$ cd /tmp ; ls → va a /tmp y lista su contenido pase lo que pase

# Combinados
$ mkdir carpeta && echo ‘Creada correctamente’ || echo ‘Error al crear’
💡
El código de salida El código de salida 0 significa éxito en Linux. Cualquier otro valor indica error. Con $? puedes ver el código de salida del último comando ejecutado.

Deja un comentario