Introducción
Hola Fronters 👋
Si eres administrador de sistemas, ya sabes usar ls, cd, cp, mv y rm. Eso es el ABC. Pero un sysadmin de verdad vive en la terminal con comandos que van mucho más allá. Hoy vamos a repasar los 20 comandos más importantes de Linux que todo sysadmin debe conocer y dominar.
Cada comando viene con ejemplos prácticos para que puedas aplicarlos desde hoy mismo. 🚀
1. systemctl — El corazón de systemd
Gestiona servicios, targets y el estado del sistema.
# Ver estado de un servicio
systemctl status nginx
# Iniciar/detener/reiniciar
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
# Habilitar/deshabilitar en inicio
systemctl enable nginx
systemctl disable nginx
# Listar servicios fallidos
systemctl --failed
# Ver todos los servicios en ejecución
systemctl list-units --type=service --state=running
# Recargar systemd después de agregar un nuevo servicio
systemctl daemon-reload
2. journalctl — El visor de logs definitivo
Mucho más potente que el antiguo tail -f /var/log/syslog.
# Logs desde el último arranque
journalctl -b
# Logs de un servicio específico
journalctl -u sshd.service
# Últimos 50 mensajes
journalctl -n 50
# Logs en tiempo real (como tail -f)
journalctl -f
# Solo errores y críticos
journalctl -p err -b --no-pager
# Desde una fecha específica
journalctl --since "2025-05-01" --until "2025-05-10"
# Espacio que ocupa el journal
journalctl --disk-usage
3. ss — Socket statistics (reemplazo de netstat)
Muestra conexiones de red, puertos en escucha y estadísticas de sockets. Más rápido que netstat.
# Todos los puertos en escucha (TCP y UDP)
ss -tuln
# Conexiones establecidas
ss -tun
# Mostrar proceso asociado a cada socket
ss -tulnp
# Conexiones en estado TIME_WAIT
ss -tan state time-wait
# Estadísticas de red
ss -s
4. lsof — Lista de archivos abiertos
En Linux, todo es un archivo. lsof te muestra qué procesos tienen qué archivos abiertos.
# Archivos abiertos por un usuario
lsof -u www-data
# Qué proceso está usando un puerto
lsof -i :80
# Archivos abiertos de un proceso específico
lsof -p 1234
# Archivos borrados pero aún en uso (ocupan disco)
lsof +L1
# Conexiones de red por proceso
lsof -i -P -n
5. df, du, iostat — Almacenamiento
Tres comandos esenciales para entender el uso de disco.
# Espacio en sistemas de archivos (legible)
df -h
# Inodos (cuando no hay espacio pero df muestra libre)
df -i
# Tamaño de un directorio
du -sh /var/log/
# Top 10 directorios más pesados
du -x / | sort -rn | head -10
# I/O stats (instalar con apt install sysstat)
iostat -x 2 5 # Cada 2 segundos, 5 reportes
iostat -d -h # Por dispositivo, en formato legible
6. rsync — Sincronización remota eficiente
Copia diferencial, ideal para backups y migraciones.
# Copiar directorio local a remoto
rsync -avz /datos/ user@servidor:/backup/
# Sincronizar remoto a local
rsync -avz user@servidor:/remoto/ /local/
# Resumir transferencia interrumpida
rsync -avz --partial /origen/ /destino/
# Excluir archivos
rsync -avz --exclude='*.tmp' /origen/ /destino/
# Modo seco (mostrar qué haría sin ejecutar)
rsync -avz --dry-run /origen/ /destino/
7. scp — Copia segura por SSH
Sencillo y directo para transferencias puntuales.
# Copiar archivo local a remoto
scp archivo.txt user@servidor:/home/user/
# Copiar directorio completo
scp -r /carpeta/ user@servidor:/destino/
# Copiar de remoto a local
scp user@servidor:/remoto/archivo.txt ./
# Especificar puerto SSH no estándar
scp -P 2222 archivo.txt user@servidor:/home/
8. cron / crontab — Automatización de tareas
El planificador de tareas por excelencia.
# Editar crontab del usuario actual
crontab -e
# Listar tareas programadas
crontab -l
# Formato: minuto hora día_mes mes día_sem comando
# Ejecutar cada día a las 2am
0 2 * * * /usr/local/bin/backup.sh
# Cada 15 minutos
*/15 * * * * /usr/local/bin/monitor.sh
# Todos los lunes a las 6am
0 6 * * 1 /usr/local/bin/semanal.sh
# Primer día de cada mes
0 0 1 * * /usr/local/bin/mensual.sh
9. useradd / usermod / passwd — Gestión de usuarios
# Crear usuario con home y shell
useradd -m -s /bin/bash jperez
# Crear usuario sin login (servicios)
useradd -r -s /usr/sbin/nologin miservicio
# Modificar usuario (cambiar grupo, shell, expiración)
usermod -aG sudo jperez # Agregar a grupo sudo
usermod -s /bin/zsh jperez # Cambiar shell
usermod -e 2025-12-31 jperez # Expirar cuenta
# Establecer/cambiar contraseña
passwd jperez
# Bloquear/desbloquear cuenta
passwd -l jperez # Lock
passwd -u jperez # Unlock
10. groupadd — Gestión de grupos
# Crear grupo
groupadd developers
# Agregar usuario a grupo (sin sacarlo de otros)
usermod -aG developers jperez
# Ver grupos de un usuario
groups jperez
# Listar todos los grupos
cat /etc/group
11. chown / chmod avanzado
# Cambiar propietario recursivamente
chown -R www-data:www-data /var/www/
# chmod con notación octal
chmod 755 script.sh # rwxr-xr-x
chmod 600 clave.pem # rw-------
chmod 644 index.html # rw-r--r--
# chmod recursivo con find
find /var/www/ -type f -exec chmod 644 {} \;
find /var/www/ -type d -exec chmod 755 {} \;
# Permisos especiales (SUID, SGID, Sticky)
chmod 4755 programa # SUID (ejecuta con permisos del dueño)
chmod 2775 directorio # SGID (hereda grupo)
chmod 1777 /tmp # Sticky (solo dueño borra)
12. umask — Máscara de permisos por defecto
# Ver umask actual
umask
# La umask se resta de 666 (archivos) o 777 (directorios)
# umask 022 → archivos: 644, directorios: 755
# umask 077 → archivos: 600, directorios: 700
# Cambiar para la sesión actual
umask 027
# Permanente: agregar a ~/.bashrc o /etc/profile
echo "umask 027" >> ~/.bashrc
13. setfacl / getfacl — Listas de control de acceso
Cuando los permisos tradicionales (dueño/grupo/otros) se quedan cortos.
# Ver ACLs de un archivo
getfacl archivo.txt
# Dar permiso de lectura a un usuario específico
setfacl -m u:jperez:r archivo.txt
# Dar permisos rwx a un grupo específico
setfacl -m g:developers:rwx /proyecto/
# Heredar ACLs a subdirectorios
setfacl -m d:g:developers:rx /proyecto/
# Remover ACL
setfacl -x u:jperez archivo.txt
14. ulimit — Límites de recursos por usuario
# Ver límites actuales
ulimit -a
# Límite de archivos abiertos
ulimit -n 65536
# Límite de procesos
ulimit -u 4096
# Límite de memoria
ulimit -m unlimited
# Configuración permanente en /etc/security/limits.conf
echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 65536" >> /etc/security/limits.conf
15. nice / renice — Prioridad de procesos
# Ejecutar con baja prioridad (nice más alto = menos prioridad)
nice -n 19 ./proceso_pesado.sh
# Ejecutar con alta prioridad (solo root)
nice -n -20 ./proceso_critico.sh
# Cambiar prioridad de un proceso en ejecución
renice -n 10 -p 1234
# Cambiar prioridad de todos los procesos de un usuario
renice -n 15 -u jperez
# El rango va de -20 (máxima prioridad) a 19 (mínima)
16. nohup / disown — Procesos persistentes
Mantén procesos ejecutándose incluso después de cerrar la sesión SSH.
# Ejecutar ignorando SIGHUP (cierre de terminal)
nohup ./script_largo.sh &
# La salida va a nohup.out por defecto
nohup ./script.sh > output.log 2>&1 &
# Desvincular un proceso de la shell actual
./proceso.sh
Ctrl+Z
bg
disown
# Verificar que sigue vivo después de cerrar sesión
ps aux | grep script
# Alternativa moderna: systemd-run
systemd-run --user --unit=mi-servicio ./script.sh
17. screen / tmux — Multiplexores de terminal
Esenciales para sesiones SSH largas y trabajo remoto.
screen
# Iniciar sesión screen
screen -S monitoreo
# Desconectar (Ctrl+A, d) y luego reconectar
screen -r monitoreo
# Listar sesiones
screen -ls
# Log de la sesión
Ctrl+A, H
tmux (más moderno y popular)
# Iniciar sesión
tmux new -s monitoreo
# Dividir paneles horizontal/vertical
Ctrl+B, " # horizontal
Ctrl+B, % # vertical
# Crear nueva ventana
Ctrl+B, c
# Navegar entre ventanas
Ctrl+B, 0-9
# Desconectar y reconectar
Ctrl+B, d
tmux attach -t monitoreo
# Scroll (copy mode)
Ctrl+B, [
18. alias — Tu propia navaja suiza
# Crear alias temporales (sesión actual)
alias ll='ls -lah'
alias la='ls -A'
alias ..='cd ..'
alias ports='ss -tulnp'
# Permanentes: agregar a ~/.bashrc o ~/.bash_aliases
echo "alias gs='git status'" >> ~/.bashrc
# Eliminar alias
unalias ll
# Ver todos los alias
alias
# Ejemplo de alias útiles para sysadmin
alias dfh='df -h | grep -v tmpfs'
alias meminfo='free -h -l'
alias cpuinfo='lscpu | grep -E "Model name|^CPU\(s\)|Thread|Core"'
alias logs='journalctl -p err -b --no-pager | tail -30'
19. history — El historial es tu aliado
# Ver historial
history
# Ejecutar comando por número
!1234
# Buscar en historial (Ctrl+R)
# Presiona Ctrl+R y escribe parte del comando
# Eliminar entrada del historial
history -d 1234
# Limpiar historial
history -c
# Buscar comandos más usados
history | awk '{print $2}' | sort | uniq -c | sort -rn | head -10
# Ejecutar el último comando que empiece con "system"
!system
# Configuración útil en ~/.bashrc
export HISTSIZE=10000
export HISTFILESIZE=20000
export HISTTIMEFORMAT="%F %T "
20. watch / xargs — Ejecución periódica y paralela
watch — Ejecutar un comando periódicamente
# Ver procesos cada 2 segundos
watch -n 2 'ps aux --sort=-%cpu | head -10'
# Ver uso de disco actualizado
watch -d 'df -h'
# Ver logs en vivo
watch -n 60 'journalctl -p err --since "5 min ago" --no-pager'
# Resaltar diferencias entre ejecuciones
watch -d 'free -h'
# Sin título (modo compacto)
watch -t 'ss -s'
xargs — Construir y ejecutar comandos desde stdin
# Buscar y borrar archivos .tmp
find /tmp -name "*.tmp" -type f | xargs rm -f
# Ejecutar paralelamente (4 procesos)
find /var/log -name "*.log" | xargs -P 4 gzip
# Confirmar antes de ejecutar
find . -name "*.bak" | xargs -p rm
# Reemplazar posición del argumento
cat hosts.txt | xargs -I {} ssh {} 'uptime'
# Delimitar por null (seguro con nombres con espacios)
find . -name "*.pdf" -print0 | xargs -0 rm
Conclusión
Domina estos 20 comandos y habrás dado un salto enorme en tu carrera como sysadmin. No se trata de memorizarlos todos de golpe, sino de integrarlos en tu día a día hasta que sean naturales.
Consejo final: crea un ~/.bash_aliases con los que más uses, practica con screen o tmux para sesiones largas, y automatiza todo lo repetitivo con cron y scripts. Esa es la verdadera diferencia entre un usuario avanzado y un sysadmin profesional.
¿Te perdiste el artículo de comandos básicos? Acá lo tienes. Este es su complemento natural para llegar al siguiente nivel.
¡Nos vemos en el próximo artículo, Fronters! 🚀