Comandos de Linux que todo SysAdmin debe conocer (con ejemplos)
Introducción: El poder del terminal en la administración de Linux
Si estás empezando en el mundo de la administración de sistemas, o incluso si ya llevas tiempo gestionando servidores, hay una verdad ineludible: dominar la línea de comandos es la diferencia entre sobrevivir o prosperar como SysAdmin. Linux es el sistema operativo que impulsa la mayor parte de internet, y su verdadera fuerza reside en su terminal. No te asustes si al principio ves una pantalla negra con texto; piensa en ella como el volante de un coche de carreras: al principio puede parecer complejo, pero una vez que aprendes a usarlo, tienes un control total sobre la máquina.
En esta guía extensa, vamos a desglosar los comandos linux más esenciales que todo administrador debe conocer. No solo te diré qué hace cada comando, sino que te daré ejemplos comandos linux prácticos que puedes probar tú mismo en tu servidor o en una máquina virtual. Olvídate de memorizar listas interminables; aquí entenderás el "por qué" y el "cómo" de cada herramienta.
Vamos a centrarnos en tres gigantes del procesamiento de texto: grep, awk y sed. Pero antes, sentaremos las bases con comandos de navegación, gestión de procesos y permisos. Al final, tendrás un arsenal sólido para diagnosticar problemas, automatizar tareas y mantener tu administración linux bajo control.
1. Navegación y gestión de archivos: Tu punto de partida
Antes de volverte loco con el procesamiento de texto, necesitas moverte con soltura por el sistema de archivos. Estos son los comandos que usarás a diario, incluso sin darte cuenta.
El trío básico: pwd, ls y cd
-
pwd(Print Working Directory): Te dice en qué directorio estás parado. Es tu GPS personal. Si alguna vez te pierdes en el terminal, escríbelo y sabrás dónde estás.pwd # Salida: /home/usuario/proyectos -
ls(List): Muestra los archivos y carpetas del directorio actual. Pero no te quedes solo conls. Aprende a usar sus variantes:ls -l: Muestra una lista detallada con permisos, propietario, tamaño y fecha.ls -a: Muestra todos los archivos, incluidos los ocultos (los que empiezan con un punto).ls -lh: Igual que-lpero con tamaños legibles para humanos (KB, MB, GB). Este es el que usarás el 90% de las veces.
ls -lh /var/log # Salida: total 1.2M # -rw-r--r-- 1 root root 45K Feb 18 10:30 syslog # -rw-r--r-- 1 root root 1.1M Feb 18 10:30 auth.log -
cd(Change Directory): Para moverte entre carpetas. Recuerda quecd ..te lleva al directorio padre ycd ~te lleva a tu carpeta de usuario.cd /etc/nginx cd .. # Ahora estás en /etc cd ~ # Ahora estás en /home/usuario
[TIP] Usa la tecla Tab para autocompletar rutas y nombres de archivos. Te ahorrará muchísimos errores de escritura y tiempo.
Crear, copiar y mover: mkdir, touch, cp, mv, rm
-
mkdir(Make Directory): Crea nuevas carpetas. Úsalo con-ppara crear directorios anidados de una sola vez.mkdir -p /backups/2024/febrero -
touch: Crea un archivo vacío o actualiza la fecha de modificación de uno existente.touch /tmp/nuevo_archivo.txt -
cp(Copy): Copia archivos o directorios. Para copiar una carpeta completa, necesitas la opción-r(recursivo).cp -r /etc/nginx /backups/nginx_backup -
mv(Move): Mueve o renombra archivos. Es el comodín, ya que sirve para ambas cosas.mv /tmp/nuevo_archivo.txt /home/usuario/documentos/ # Mover mv /home/usuario/viejo.txt /home/usuario/nuevo.txt # Renombrar -
rm(Remove): Elimina archivos. CUIDADO AQUÍ. Este comando es peligroso. No hay papelera de reciclaje. Úsalo con-rpara directorios y con-fpara forzar la eliminación sin preguntar. Te recomiendo que siempre revises dos veces antes de pulsar Enter.rm -rf /tmp/carpeta_temporal
[WARNING] Nunca ejecutes rm -rf / como root. Ese comando intentará borrar todo el sistema. Siempre verifica la ruta antes de eliminar algo.
2. Los reyes del procesamiento de texto: grep, awk y sed
Aquí es donde empieza la magia de la administración linux. Los logs del sistema, los archivos de configuración y las salidas de otros comandos son texto plano. Saber manipular ese texto es una superpoder. Estos tres comandos son herramientas de precisión quirúrgica.
grep: El buscador implacable
grep (Global Regular Expression Print) busca patrones dentro de archivos o flujos de texto. Es la navaja suiza para encontrar agujas en pajar.
Uso básico: grep "patrón" archivo
Ejemplos prácticos:
-
Buscar una palabra clave en un log: ¿Quieres saber si hay errores de conexión en tu servidor web?
grep "error" /var/log/nginx/error.log -
Buscar ignorando mayúsculas: Usa
-ipara que no distinga entre MAYÚS y minúsculas.grep -i "warning" /var/log/syslog -
Mostrar contexto: Con
-C 3verás 3 líneas antes y después de la coincidencia. Es perfecto para entender qué pasaba alrededor del error.grep -C 5 "segfault" /var/log/kern.log -
Contar coincidencias: Con
-csolo te dice cuántas veces aparece el patrón.grep -c "Failed password" /var/log/auth.log # Salida: 42 (hay 42 intentos de contraseña fallidos) -
Buscar en múltiples archivos: Puedes usar comodines para buscar en un directorio entero.
grep "192.168.1.100" /var/log/*.log -
Combinar con otros comandos (tuberías): Aquí es donde brilla. La salida de un comando se convierte en la entrada de otro.
# Listar procesos y buscar solo los que sean de nginx ps aux | grep nginx
[INFO] grep usa expresiones regulares. Aprende lo básico: ^ (inicio de línea), $ (fin de línea), . (cualquier carácter), * (repetición). Por ejemplo, grep "^Error" archivo.log buscará líneas que empiecen exactamente con "Error".
sed: El editor de flujo
sed (Stream Editor) es un editor de texto no interactivo. Puede modificar, eliminar o insertar líneas en un archivo o flujo de datos. Es ideal para automatizar cambios en archivos de configuración sin abrirlos con un editor gráfico.
Uso básico: sed 'comando' archivo
Ejemplos prácticos:
-
Sustitución de texto: El comando más común es
s/patron/reemplazo/. Sustituye la primera ocurrencia de "patron" por "reemplazo" en cada línea.sed 's/old_host/new_host/' /etc/hosts -
Sustitución global: Añade la letra
gal final para reemplazar todas las ocurrencias en cada línea, no solo la primera.sed 's/old_host/new_host/g' /etc/hosts -
Guardar cambios en el archivo: Por defecto,
sedsolo imprime el resultado en pantalla. Para modificar el archivo de verdad, usa la opción-i(in-place).sed -i 's/8080/9090/g' /etc/nginx/sites-available/mi_sitio.conf -
Eliminar líneas: Usa
dpara eliminar líneas que coincidan con un patrón.# Eliminar todas las líneas que contengan "comentario" sed '/comentario/d' archivo.txt -
Imprimir un rango de líneas: Útil para ver una sección específica de un archivo grande.
# Imprimir líneas de la 10 a la 20 sed -n '10,20p' /etc/nginx/nginx.conf
[TIP] Haz siempre una copia de seguridad antes de usar sed -i. Puedes hacerlo automáticamente: sed -i.bak 's/patron/nuevo/' archivo. Esto crea un archivo .bak con el original.
awk: El procesador de columnas
awk es un lenguaje de programación completo, pero su uso más común es para procesar texto estructurado en columnas. Es perfecto para analizar logs, tablas y salidas de comandos.
Uso básico: awk '{acción}' archivo
Ejemplos prácticos:
-
Imprimir una columna específica: Por defecto,
awkdivide cada línea en campos separados por espacios.$1es el primer campo,$2el segundo, etc.# Ver solo la primera columna del log de auth awk '{print $1}' /var/log/auth.log -
Imprimir varias columnas con formato: Puedes combinar texto y variables.
# Imprimir la IP y la fecha awk '{print "IP: " $1, "Fecha: " $2}' /var/log/access.log -
Filtrar por condición: Puedes usar
ifo condiciones dentro deawk.# Imprimir solo líneas donde el campo 9 (tamaño) sea mayor que 5000 awk '$9 > 5000 {print $1, $9}' /var/log/nginx/access.log -
Contar líneas procesadas: Usa la variable especial
NR(Number of Record).# Contar cuántas líneas hay en un archivo awk 'END {print NR}' /var/log/syslog -
Trabajar con delimitadores personalizados: Si tu texto usa comas o puntos y comas, usa la opción
-F.# Leer un CSV y mostrar la primera y tercera columna awk -F',' '{print $1, $3}' usuarios.csv
[INFO] La combinación de grep, sed y awk es extremadamente potente. Por ejemplo, para encontrar todas las IPs únicas que han accedido a tu servidor web y contar cuántas veces lo hicieron, podrías usar: awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr. Esto es un análisis básico de tráfico sin necesidad de herramientas externas.
3. Gestión de procesos y recursos del sistema
Un SysAdmin no solo mira archivos; necesita saber qué está haciendo la máquina en tiempo real.
ps y top: Los vigilantes del sistema
-
ps(Process Status): Muestra una instantánea de los procesos en ejecución. Es estático, te da una foto fija.# Ver todos los procesos del sistema ps aux # Buscar un proceso específico por nombre ps aux | grep apache2 -
top(Table of Processes): Es la versión dinámica. Se actualiza en tiempo real y muestra el uso de CPU, memoria y la lista de procesos ordenados por consumo. Es tu panel de control de salud del servidor.top # Para salir, pulsa 'q'Una alternativa más moderna es
htop, que es más visual y fácil de usar, pero no viene instalada por defecto. Puedes instalarla conapt install htopoyum install htop.
systemctl: El controlador de servicios
En las distribuciones modernas (basadas en systemd), systemctl es la forma estándar de gestionar servicios.
systemctl status nginx: Ver el estado de un servicio.systemctl start nginx: Iniciar un servicio.systemctl stop nginx: Detener un servicio.systemctl restart nginx: Reiniciar un servicio (útil tras cambiar la configuración).systemctl enable nginx: Hacer que el servicio arranque al inicio del sistema.systemctl disable nginx: Evitar que arranque al inicio.
[TIP] Tras modificar un archivo de configuración de un servicio (por ejemplo, Nginx), es una buena práctica ejecutar nginx -t (test) antes de reiniciar el servicio. Esto evita que dejes tu web caída por un error de sintaxis.
4. Gestión de usuarios y permisos
La seguridad es primordial. Saber quién puede hacer qué en tu sistema es esencial.
useradd/adduser y passwd
-
adduser: Es la versión amigable que crea el usuario y su directorio home.adduser nuevo_usuario -
passwd: Para cambiar la contraseña del usuario actual.passwd # Te pedirá la contraseña actual y luego la nueva
chmod y chown: Los guardianes de archivos
-
chmod(Change Mode): Cambia los permisos de lectura (r), escritura (w) y ejecución (x) de un archivo o directorio. Se usa con números (octales) o letras.- Notación numérica:
4(lectura),2(escritura),1(ejecución). Se suman para cada grupo (propietario, grupo, otros).chmod 755 archivo: Propietario tiene todos (7=4+2+1), grupo y otros solo lectura y ejecución (5=4+1). Es el estándar para scripts.chmod 644 archivo: Propietario lectura/escritura, grupo y otros solo lectura. Es el estándar para archivos de configuración.
chmod 755 /home/usuario/mi_script.sh - Notación numérica:
-
chown(Change Owner): Cambia el propietario y el grupo de un archivo.# Cambiar el propietario a 'www-data' y el grupo a 'www-data' chown www-data:www-data /var/www/html/index.html
5. Redes y diagnóstico
Cuando algo no funciona, necesitas herramientas para diagnosticar el problema.
-
ping: Verifica la conectividad básica con un host.ping -c 4 google.com -
ss(Socket Statistics): Muestra información sobre sockets y puertos. Es el reemplazo moderno denetstat.# Ver qué puertos están en escucha ss -tlnp -
curlywget: Para descargar archivos o interactuar con APIs.# Descargar un archivo wget https://ejemplo.com/archivo.zip # Ver las cabeceras de una web curl -I https://ejemplo.com -
traceroute: Muestra la ruta que siguen los paquetes hasta un destino. Útil para diagnosticar problemas de latencia o enrutamiento.
