Mi relación con Linux

Empecé con Linux porque "los profesionales de IT lo usan". Al principio me resultaba intimidante. Ahora es lo que más uso. No soy sysadmin senior ni nada parecido, pero con el tiempo he construido un conjunto de comandos que resuelven el 90% de mis tareas cotidianas.

Navegación y gestión de archivos

# Ver dónde estoy y qué hay
pwd
ls -lah          # Listado detallado con tamaños legibles

# Moverte rápido
cd -             # Volver al directorio anterior
cd ~             # Ir a home

# Buscar archivos (más rápido que find en la mayoría de casos)
locate nombre.txt          # Requiere updatedb
find /ruta -name "*.log" -mtime -7   # Logs de últimos 7 días

# Ver tamaño de directorios
du -sh */        # Tamaño de cada subdirectorio
df -h            # Espacio libre en discos

Ver y filtrar contenido

# Ver archivos grandes
less archivo.log      # Navegar sin cargar todo en memoria
tail -f /var/log/syslog   # Ver logs en tiempo real

# Buscar dentro de archivos
grep -rn "error" /var/log/   # Buscar "error" recursivamente con número de línea
grep -i "failed" auth.log     # Case insensitive

# Combinar herramientas (pipes)
cat access.log | grep "404" | awk '{print $1}' | sort | uniq -c | sort -rn | head -20
# → Las 20 IPs con más errores 404

Procesos y recursos

# Ver qué está pasando
htop          # Interactivo (instalar si no está)
ps aux | grep nginx   # Buscar proceso específico

# Matar proceso
kill -9 PID
pkill nombre-proceso

# Ver puertos en escucha
ss -tulpn     # Más moderno que netstat
netstat -tulpn

Red

# Diagnóstico básico
ip addr show   # Ver IPs de las interfaces
ping -c 4 google.com
traceroute 8.8.8.8

# Descargar archivos
curl -O https://ejemplo.com/archivo.zip
wget https://ejemplo.com/archivo.zip

# Transferir archivos entre máquinas
scp archivo.txt usuario@servidor:/ruta/destino/
rsync -avz --progress carpeta/ usuario@servidor:/ruta/

# Ver conexiones activas
ss -s         # Resumen estadístico

Gestión de servicios (systemd)

# El 80% de lo que hago con systemctl
systemctl status nginx
systemctl start/stop/restart nginx
systemctl enable nginx    # Arrancar al inicio
systemctl disable nginx

# Ver logs del servicio
journalctl -u nginx -f    # -f para seguir en tiempo real
journalctl -u nginx --since "1 hour ago"

Permisos

# Ver y cambiar permisos
ls -la
chmod 755 script.sh      # rwxr-xr-x
chmod 644 config.conf    # rw-r--r--
chown usuario:grupo archivo

# Ejecutar como otro usuario
sudo comando
sudo -u www-data bash    # Abrir shell como www-data

Trucos que me ahorraron tiempo

# Repetir el último comando con sudo
sudo !!

# Buscar en el historial de comandos
Ctrl+R   # Luego escribe parte del comando

# Ejecutar algo en segundo plano y no perderlo al cerrar terminal
nohup comando &
screen -S nombre-sesion   # O mejor, usar tmux

# Ver qué ocupa más espacio
du -h / --max-depth=2 | sort -rh | head -20

# Comprimir y descomprimir
tar -czf archivo.tar.gz carpeta/
tar -xzf archivo.tar.gz

Alias que tengo configurados

En mi ~/.bashrc o ~/.zshrc:

alias ll='ls -lah'
alias ..='cd ..'
alias ports='ss -tulpn'
alias update='sudo apt update && sudo apt upgrade -y'
alias myip='curl -s ifconfig.me'
alias logs='journalctl -f'

Conclusión

Linux asusta al principio pero con tiempo se convierte en la herramienta más poderosa que tienes. No hace falta memorizar todos los comandos. Basta con familiarizarte con los que usas a diario y saber que puedes encontrar el resto con man comando o comando --help.