🔎 Buscar

🐧 Linux — 50 comandos esenciales

El kit de comandos del administrador de sistemas, explicado uno a uno con ejemplos: navegación, procesos, permisos, red y sistemas de archivos.

Wiki / Apuntes📖 Contenido

Linux — 50 comandos esenciales

Estos son los comandos que un ingeniero senior ejecuta todos los días. No los memorices de memoria: entiende qué hace cada uno a nivel de sistema (kernel, procesos, permisos, red). Esta lista es el núcleo; el resto se consulta con man o tldr.

Comando Qué hace
pwd Muestra el directorio actual
ls -la Lista archivos con detalles y ocultos
cd ~ Ir al home; cd - vuelve al directorio anterior
mkdir -p a/b/c Crea directorios anidados
touch f.txt Crea un archivo vacío (o actualiza su mtime)
cp -r src dst Copia recursiva
mv a b Mueve/renombra
rm -rf dir Borra recursivamente (⚠️ sin papelera)
find . -name "*.go" Busca archivos por nombre
locate nginx.conf Búsqueda por índice (rápida)
# Encadenar: listar, filtrar, contar
ls -la /var/log | grep "error" | wc -l

Lectura de archivos

cat archivo.txt        # volcado completo
less archivo.log       # paginador (q para salir, / para buscar)
head -20 archivo       # primeras líneas
tail -f archivo.log    # sigue el log en tiempo real (¡imprescindible!)
grep -i "error" log    # busca sin distinguir mayúsculas
grep -rn "patron" .    # búsqueda recursiva
sed -n '5,10p' f       # imprime líneas 5-10
awk '{print $1}' f     # imprime la primera columna
cut -d: -f1 /etc/passwd # corta por delimitador

💡 Redirección: > escribe (sobrescribe), >> añade, 2> captura stderr, | encadena.

Procesos y recursos

ps aux                    # todos los procesos
ps aux | grep nginx       # ¿nginx está corriendo?
top                       # monitor en tiempo real (htop es mejor)
htop                      # top con esteroides
kill -9 PID               # mata a la fuerza (SIGKILL)
kill PID                  # pide terminar (SIGTERM, elegante)
pgrep -f "python"         # encuentra PIDs por patrón
pkill -f "worker.py"      # mata por patrón
nice -n 10 comando        # baja la prioridad
renice 10 -p PID          # cambia prioridad de un proceso en marcha
df -h                     # espacio en disco
du -sh /var/log           # tamaño de un directorio
free -h                   # memoria (RAM + swap)

Permisos y usuarios

ls -l                     # los permisos: -rwxr-xr--
chmod 755 archivo         # rwx r-x r-x (numérico)
chmod u+x archivo         # añade ejecución al dueño
chown usuario:grupo f     # cambia dueño y grupo
chgrp grupo f             # cambia grupo
sudo -i                   # shell de root
su - usuario              # cambia de usuario
useradd -m nuevo          # crea usuario con home
usermod -aG sudo nuevo    # añade al grupo sudo
passwd usuario            # cambia contraseña
id usuario                # muestra uid/gid/grupos
groups usuario            # grupos del usuario

💡 Números de permisos: r=4, w=2, x=1. chmod 755 = dueño rwx(7), grupo r-x(5), otros r-x(5). El bit x en un directorio = poder entrar.

Red

ip a                      # interfaces y direcciones (reemplaza ifconfig)
ip route                  # tabla de rutas
ss -tulpn                 # puertos escuchando (reemplaza netstat) — ¡imprescindible!
ping -c 4 google.com      # comprueba conectividad
curl -I https://x.com     # cabeceras HTTP de un sitio
wget url                  # descarga
dig dominio.com           # consulta DNS
nslookup dominio.com      # consulta DNS simple
traceroute dominio.com    # ruta hasta el destino
nc -zv host 80            # comprueba si un puerto está abierto (netcat)
nmap -sV host             # escaneo de servicios
tcpdump -i eth0 port 80   # captura tráfico
# ¿Qué está escuchando en el puerto 8080?
ss -tulpn | grep 8080
# ¿Funciona mi servidor?
curl -I https://localhost

Sistema y logs

uname -a                  # versión del kernel
cat /etc/os-release       # distribución
uptime                    # tiempo encendido y carga
dmesg | tail              # mensajes del kernel
journalctl -u nginx       # logs de systemd del servicio
journalctl -f             # logs en tiempo real
systemctl status nginx    # estado del servicio
systemctl restart nginx   # reinicia un servicio
systemctl enable nginx    # arranca con el sistema
systemctl list-units      # todos los servicios
crontab -e                # tareas programadas del usuario
history | grep ssh        # búsqueda en el historial
shutdown -h now           # apaga
reboot                    # reinicia

💡 Convención: systemctl controla servicios bajo systemd (el estándar moderno). Los logs de todos los servicios viven en journalctl; los logs tradicionales en /var/log/.

Procesamiento de texto (el poder real)

# Top 5 IPs que más peticiones hicieron
cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -5

# Buscar errores en los últimos 30 min y contarlos
find /var/log -name "*.log" -mmin -30 -exec grep -l error {} \; 

# Extraer campos de un CSV
cut -d, -f1,3 datos.csv

# Reemplazar en un archivo (in-place)
sed -i 's/old/new/g' archivo.conf

La receta de diagnóstico (delegada a un script)

# ¿Mi servidor responde?
systemctl status nginx && curl -I localhost

# ¿Hay disco lleno?
df -h

# ¿Hay memoria?
free -h

# ¿Hay procesos zombies?
ps aux | awk '$8 ~ /Z/'

Cheatsheet rápido

Necesito… Comando
Ver logs en vivo tail -f / journalctl -f
¿Qué puertos escuchan? ss -tulpn
¿Quién llenó el disco? du -sh /*
Matar un proceso pkill -f patron
Cambiar permisos chmod 755
Reiniciar un servicio systemctl restart X
Buscar en logs grep -i error
¿Hay conexión? ping / curl -I
Programar tarea crontab -e

Para profundizar

Estudio · Recursos de todo el mundo (inglés, chino, japonés, español, francés, ruso…) curados y traducidos al español.