LinuxParty
Una guía práctica para navegar por el sistema, administrar archivos, buscar información, vigilar recursos, diagnosticar redes y gestionar servidores Linux desde la terminal
La terminal de Linux puede parecer intimidante al principio. Una pantalla negra, un cursor parpadeando y ninguna indicación visible de lo que debemos hacer.
Sin embargo, aprender unos cuantos comandos transforma por completo la experiencia. La línea de órdenes permite administrar servidores remotos, automatizar tareas, localizar errores y realizar en segundos operaciones que resultarían más lentas desde una interfaz gráfica.
No es necesario memorizar miles de instrucciones. Conocer unas cuarenta órdenes y entender cómo combinarlas proporciona una base suficiente para trabajar cómodamente con un sistema Linux.
Los ejemplos de esta guía son válidos en la mayoría de las distribuciones, aunque algunos programas pueden no estar instalados de manera predeterminada.
Antes de ejecutar cualquier comando con privilegios administrativos, conviene comprender qué hace y comprobar que las rutas indicadas son correctas.
Cómo obtener ayuda sobre cualquier comando
Linux incorpora su propia documentación. Si desconocemos las opciones disponibles para una orden, podemos consultar su página de manual:
man ls
También podemos obtener una ayuda resumida:
ls --help
Dentro de man, utilizamos las flechas o las teclas RePág y AvPág para desplazarnos, /texto para buscar y q para salir.
Otro comando especialmente útil es:
apropos permisos
apropos busca páginas del manual relacionadas con una palabra o concepto.
1. pwd: saber dónde estamos
pwd, abreviatura de print working directory, muestra la ruta absoluta del directorio actual:
pwd
Posible resultado:
/var/www/linuxparty
Es recomendable ejecutar pwd antes de copiar, mover o eliminar archivos si tenemos dudas sobre nuestra ubicación.
2. ls: listar archivos y directorios
El comando básico muestra el contenido visible del directorio actual:
ls
Para obtener información detallada, incluidos permisos, propietario, tamaño y archivos ocultos:
ls -lah
Para ordenar por fecha de modificación, mostrando primero los archivos más recientes:
ls -lht
Podemos examinar otra ruta sin entrar en ella:
ls -lah /var/log
3. cd: cambiar de directorio
Para entrar en un directorio:
cd /var/www/html
Atajos especialmente útiles:
cd ..
Sube un nivel.
cd -
Regresa al directorio anterior.
cd
Vuelve al directorio personal del usuario.
4. mkdir: crear directorios
Crea un directorio:
mkdir pruebas
Con -p podemos generar de una vez una estructura completa y evitar errores si algún directorio ya existe:
mkdir -p proyecto/{config,logs,public,backups}
5. touch: crear archivos vacíos o actualizar su fecha
Para crear un archivo vacío:
touch notas.txt
Si el archivo ya existe, touch actualiza sus fechas de acceso y modificación sin cambiar el contenido.
Podemos crear varios archivos a la vez:
touch index.html estilos.css aplicacion.js
6. cp: copiar archivos y directorios
Copiar un archivo:
cp configuracion.conf configuracion.conf.bak
Copiar un directorio completo:
cp -a sitio-produccion sitio-pruebas
La opción -a conserva permisos, fechas, enlaces simbólicos y otros atributos. Para operaciones importantes podemos utilizar -i, que solicita confirmación antes de sobrescribir:
cp -ai origen/ destino/
7. mv: mover o renombrar
Renombrar un archivo:
mv informe.txt informe-2026.txt
Moverlo a otro directorio:
mv informe-2026.txt documentos/
Para solicitar confirmación antes de sobrescribir un destino existente:
mv -i archivo.conf /etc/aplicacion/
8. rm: eliminar archivos y directorios
Eliminar un archivo:
rm archivo-temporal.txt
Solicitar confirmación:
rm -i archivo-importante.txt
Eliminar un directorio y su contenido:
rm -r directorio
Hay que extremar la precaución con rm -rf. No utiliza papelera y puede borrar silenciosamente directorios completos.
Antes de eliminar una ruta recursivamente, es aconsejable inspeccionarla:
ls -lah /ruta/que/vamos/a/eliminar
Nunca debemos copiar y ejecutar una orden destructiva sin revisar primero la ruta completa.
9. ln: crear enlaces
Un enlace simbólico funciona de manera parecida a un acceso directo:
ln -s /var/www/aplicacion/public /var/www/html/aplicacion
Para comprobar el destino:
ls -l /var/www/html/aplicacion
Los enlaces simbólicos son habituales en configuraciones de servidores web y despliegues de aplicaciones.
10. cat: mostrar o concatenar archivos
Para mostrar un archivo pequeño:
cat /etc/os-release
También podemos unir varios archivos:
cat parte1.txt parte2.txt > documento-completo.txt
No conviene utilizar cat para mostrar configuraciones que contengan contraseñas o claves si estamos grabando la terminal, compartiendo pantalla o copiando la salida.
11. less: leer archivos largos
Para examinar un archivo grande sin cargarlo completamente en pantalla:
less /var/log/syslog
Dentro de less:
Espacioavanza una página.bretrocede./errorbusca la palabra “error”.nmuestra la siguiente coincidencia.qcierra el visor.
Para registros extensos, less suele ser más cómodo que cat.
12. head: mostrar el comienzo de un archivo
De manera predeterminada muestra las diez primeras líneas:
head archivo.txt
Podemos solicitar una cantidad diferente:
head -n 30 /var/log/nginx/access.log
13. tail: mostrar las últimas líneas
Para ver las últimas 50 líneas de un registro:
tail -n 50 /var/log/nginx/error.log
La opción -f mantiene la orden abierta y muestra las nuevas líneas en tiempo real:
tail -f /var/log/nginx/error.log
Se interrumpe con Ctrl+C.
14. nano o vim: editar archivos
nano es sencillo para principiantes:
nano archivo.conf
En nano, Ctrl+O guarda y Ctrl+X cierra.
Los usuarios con experiencia pueden preferir Vim:
vim archivo.conf
Antes de editar una configuración crítica, conviene crear una copia:
sudo cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
15. grep: buscar texto
Buscar una cadena dentro de un archivo:
grep "error" aplicacion.log
Ignorar mayúsculas y mostrar números de línea:
grep -in "error" aplicacion.log
Buscar recursivamente:
grep -Rni --exclude-dir=.git "database_name" /var/www/proyecto
Las comillas rectas son importantes. No debemos copiar comillas tipográficas como “texto” desde un procesador de textos.
16. find: localizar archivos y directorios
Buscar archivos por nombre:
find /var/www -type f -name "*.log"
Encontrar archivos mayores de 100 MB:
find /var/log -type f -size +100M
Localizar archivos modificados durante las últimas 24 horas:
find /var/www -type f -mtime -1
Podemos listar los resultados antes de plantearnos cualquier eliminación.
17. which, whereis y type: localizar comandos
Para saber qué ejecutable se utilizará:
which php
Para encontrar el binario, fuentes y manuales asociados:
whereis nginx
type también detecta alias y funciones del intérprete:
type ls
18. file: identificar un archivo
Linux no depende exclusivamente de la extensión. file analiza el contenido:
file descarga
Podría indicar que se trata de un PDF, un ejecutable ELF, una imagen o un archivo comprimido.
19. chmod: cambiar permisos
Asignar permisos habituales a un archivo web:
chmod 644 index.php
Asignar permisos habituales a un directorio:
chmod 755 public
Hacer ejecutable un script:
chmod u+x copia-seguridad.sh
En notación numérica:
4representa lectura.2representa escritura.1representa ejecución.
La suma determina los permisos. Por ejemplo, 7 equivale a lectura, escritura y ejecución.
No debemos resolver problemas de permisos utilizando indiscriminadamente:
chmod -R 777 ...
Conceder escritura y ejecución a todos los usuarios crea una vulnerabilidad y rara vez constituye la solución correcta.
20. chown: cambiar propietario y grupo
Cambiar el propietario de un archivo:
sudo chown usuario:grupo archivo.txt
Aplicarlo recursivamente:
sudo chown -R usuario:grupo /var/www/proyecto
No siempre es correcto convertir al usuario del servidor web, como www-data, en propietario de todos los archivos de una aplicación. En muchos entornos resulta más seguro que el código pertenezca al usuario de despliegue y que el servidor web solo pueda escribir en directorios concretos.
21. df: comprobar el espacio disponible
Muestra la ocupación de los sistemas de archivos:
df -h
Para incluir el tipo de sistema:
df -hT
Si una partición alcanza el 100%, las aplicaciones pueden fallar, las bases de datos pueden detenerse y el sistema puede dejar de registrar eventos.
22. du: descubrir qué ocupa el disco
Consultar el tamaño total de un directorio:
du -sh /var/www
Comparar sus subdirectorios:
du -h --max-depth=1 /var/www | sort -h
Buscar los veinte elementos más grandes de una ruta:
du -ah /var/www | sort -h | tail -n 20
du puede tardar en directorios muy grandes.
23. free: consultar la memoria
Mostrar RAM y espacio de intercambio en formato legible:
free -h
En Linux no debemos interpretar la columna free de forma aislada. El sistema utiliza RAM libre como caché. La columna available ofrece una estimación más útil de la memoria que puede emplearse sin recurrir intensamente a la swap.
24. ps: mostrar procesos
Listar todos los procesos:
ps aux
Buscar procesos relacionados con PHP:
ps aux | grep '[p]hp'
Una alternativa más directa es:
pgrep -a php
25. top y htop: vigilar el sistema en tiempo real
top suele estar instalado de forma predeterminada:
top
Muestra carga, CPU, memoria y procesos. Pulsamos q para salir.
htop ofrece una interfaz más cómoda:
htop
Puede requerir instalación:
sudo apt install htop
En distribuciones Fedora, Rocky Linux o AlmaLinux:
sudo dnf install htop
26. kill: enviar señales a un proceso
Solicitar la finalización normal de un proceso:
kill 1234
Esto envía SIGTERM, permitiendo que el programa cierre archivos y libere recursos.
Si no responde, podemos probar:
kill -KILL 1234
SIGKILL, equivalente a kill -9, debe ser el último recurso. El proceso no puede guardar datos ni realizar una salida ordenada.
Para terminar procesos por nombre existen pkill y killall, pero deben utilizarse con cuidado porque pueden afectar a varias instancias:
pkill -TERM -x nombre-proceso
27. uptime: carga y tiempo de funcionamiento
uptime
Muestra cuánto tiempo lleva encendido el sistema, cuántos usuarios están conectados y las medias de carga de los últimos 1, 5 y 15 minutos.
La carga no representa directamente un porcentaje de CPU. Una carga de 4 puede ser razonable en un sistema con muchos núcleos y excesiva en otro con uno solo.
28. uname y hostnamectl: información del sistema
Mostrar información del kernel:
uname -a
Consultar la versión concreta:
uname -r
En sistemas con systemd:
hostnamectl
Para conocer la distribución:
cat /etc/os-release
29. ip: examinar interfaces y rutas de red
Mostrar direcciones IP:
ip address
Versión abreviada:
ip -br address
Consultar la tabla de rutas:
ip route
ip sustituye a antiguas herramientas como ifconfig y route en la mayoría de las distribuciones modernas.
30. ping: comprobar conectividad básica
Enviar cuatro paquetes:
ping -c 4 1.1.1.1
Comprobar resolución DNS y conectividad:
ping -c 4 linuxparty.es
Que un servidor no responda a ping no demuestra necesariamente que esté caído. Muchos sistemas bloquean ICMP mediante el cortafuegos.
31. curl: probar servicios web y API
Obtener únicamente las cabeceras HTTP:
curl -I https://linuxparty.es
Seguir redirecciones:
curl -IL https://linuxparty.es
Mostrar código de respuesta y tiempo total sin descargar el cuerpo:
curl -sS -o /dev/null -w 'HTTP %{http_code} - %{time_total}s\n' https://linuxparty.es
Descargar un archivo conservando el nombre remoto:
curl -LO https://servidor.example/archivo.tar.gz
Nunca debemos ejecutar directamente mediante bash un script descargado de Internet sin inspeccionarlo previamente.
32. ss: comprobar puertos y conexiones
Mostrar puertos TCP y UDP en escucha con sus procesos:
sudo ss -tulpn
Comprobar si existe un servicio escuchando en el puerto 443:
sudo ss -ltnp 'sport = :443'
ss es el sustituto moderno de netstat, perteneciente al antiguo paquete net-tools.
33. dig: diagnosticar DNS
Consultar los registros de un dominio:
dig linuxparty.es
Obtener solo las direcciones:
dig +short linuxparty.es
Consultar registros de correo:
dig +short MX linuxparty.es
Preguntar a un servidor DNS concreto:
dig @1.1.1.1 linuxparty.es
En algunas distribuciones se instala mediante dnsutils o bind-utils.
34. ssh: conectarse a otro sistema
ssh Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Utilizar un puerto diferente:
ssh -p 2222 Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Con una clave concreta:
ssh -i ~/.ssh/servidor_ed25519 Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
La primera vez debemos verificar que la huella mostrada corresponde realmente al servidor.
35. ssh-keygen: crear claves SSH
Ed25519 es una opción moderna, segura y compacta:
ssh-keygen -t ed25519 -a 100 -C "administracion-servidor"
La clave privada no debe compartirse nunca. La pública, terminada normalmente en .pub, se instala en el servidor
ssh-copy-id Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Es aconsejable proteger la clave privada con una frase de paso.
36. systemctl: gestionar servicios
Comprobar el estado de NGINX:
sudo systemctl status nginx
Reiniciar un servicio:
sudo systemctl restart nginx
Recargar la configuración sin detener completamente el servicio, si lo admite:
sudo systemctl reload nginx
Habilitarlo durante el arranque:
sudo systemctl enable nginx
Antes de recargar configuraciones conviene validarlas. Por ejemplo:
sudo nginx -t
37. journalctl: consultar registros de systemd
Mostrar los últimos eventos de un servicio:
sudo journalctl -u nginx -n 100
Seguirlos en tiempo real:
sudo journalctl -u nginx -f
Ver errores producidos desde el último arranque:
sudo journalctl -b -p err
Limitar la consulta al último periodo:
sudo journalctl --since "1 hour ago"
38. tar: empaquetar y comprimir
Crear un archivo comprimido:
tar -czf proyecto-2026-08-05.tar.gz proyecto/
Ver su contenido sin extraerlo:
tar -tzf proyecto-2026-08-05.tar.gz
Extraerlo en un directorio concreto:
mkdir -p restauracion tar -xzf proyecto-2026-08-05.tar.gz -C restauracion
Conviene inspeccionar el contenido antes de extraer archivos descargados de fuentes desconocidas.
39. rsync: copiar y sincronizar datos
Realizar una copia conservando atributos y mostrando progreso:
rsync -aHAX --info=progress2 /datos/ /copias/datos/
La barra final de /datos/ significa “copiar el contenido”. Sin ella, se copiaría el propio directorio dentro del destino.
Podemos simular primero la operación:
rsync -aHAXn --delete /datos/ /copias/datos/
La opción --delete elimina en el destino lo que ya no exista en el origen. Debe probarse primero con -n o --dry-run.
Para un servidor remoto:
rsync -avz -e ssh /datos/ usuario@servidor:/copias/datos/
40. crontab: programar tareas
Editar las tareas del usuario actual:
crontab -e
Listarlas:
crontab -l
Ejecutar un script todos los días a las 02:00:
0 2 * * * /usr/local/bin/copia-seguridad.sh >> /var/log/copia-seguridad.log 2>&1
Los cinco campos representan:
minuto hora día-del-mes mes día-de-la-semana
Los trabajos de cron disponen de un entorno más limitado que una terminal interactiva. Debemos utilizar rutas absolutas y registrar tanto la salida normal como los errores.
En sistemas modernos, los temporizadores de systemd pueden ser una alternativa más potente y controlable.
Dos herramientas imprescindibles para procesar texto
Además de los cuarenta comandos anteriores, sed y awk merecen una mención especial.
sed: buscar y sustituir
Previsualizar un cambio:
sed 's/servidor-antiguo/servidor-nuevo/g' configuracion.conf
Editar el archivo guardando una copia de seguridad:
sed -i.bak 's/servidor-antiguo/servidor-nuevo/g' configuracion.conf
Así conservaremos el original como configuracion.conf.bak.
awk: extraer y procesar columnas
Mostrar la primera columna:
awk '{print $1}' archivo.txt
Contar las direcciones IP más frecuentes en un registro de NGINX:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 10
Las tuberías | conectan la salida de un comando con la entrada del siguiente, permitiendo construir análisis complejos a partir de herramientas sencillas.
Cinco diagnósticos rápidos para administrar un servidor
Averiguar por qué una web no responde
curl -IL https://dominio.example sudo systemctl status nginx sudo ss -ltnp 'sport = :443' sudo journalctl -u nginx -n 100
Encontrar qué está llenando el disco
df -hT sudo du -xhd1 /var | sort -h sudo find /var/log -type f -size +100M -ls
No debemos borrar registros a ciegas. Primero hay que determinar por qué han crecido y comprobar la configuración de logrotate.
Detectar procesos con alto consumo
uptime free -h ps aux --sort=-%cpu | head ps aux --sort=-%mem | head
Comprobar un problema DNS
dig +short dominio.example dig @1.1.1.1 dominio.example curl -I https://dominio.example
Revisar un servicio después de modificarlo
sudo nginx -t sudo systemctl reload nginx sudo systemctl status nginx sudo journalctl -u nginx --since "5 minutes ago"
Configurar UFW sin perder el acceso SSH
UFW facilita la administración del cortafuegos en Ubuntu y Debian, pero el orden de las instrucciones es importante.
Primero debemos permitir el puerto SSH que estemos utilizando:
sudo ufw allow OpenSSH
Si SSH utiliza otro puerto:
sudo ufw allow 2222/tcp
Después permitimos los servicios web:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp
Revisamos las reglas:
sudo ufw show added
Solo entonces activamos el cortafuegos:
sudo ufw enable
Y comprobamos su estado:
sudo ufw status verbose
Activar UFW antes de permitir SSH puede dejarnos fuera de un servidor remoto.
Una regla esencial: no ejecutar lo que no entendemos
Copiar comandos encontrados en Internet es una práctica habitual, pero también una de las formas más rápidas de dañar un sistema.
Antes de pulsar Enter debemos preguntarnos:
- ¿Qué usuario ejecutará la orden?
- ¿Qué archivos modificará?
- ¿La ruta es absoluta o depende del directorio actual?
- ¿Puede sobrescribir o eliminar información?
- ¿Existe una copia de seguridad?
- ¿Podemos hacer primero una simulación?
- ¿Necesita realmente
sudo?
La terminal no es peligrosa por sí misma. El riesgo aparece cuando otorgamos privilegios administrativos a una orden que no hemos comprendido.
Dominar Linux no consiste en memorizar cada parámetro, sino en saber consultar la documentación, combinar herramientas pequeñas y comprobar los resultados paso a paso.
Fuente de referencia: Artículo sobre comandos esenciales publicado por ExtreHost, ampliado y revisado para su publicación en LinuxPa
-
Artículos
- 40 comandos esenciales de Linux que todo usuario y administrador debe conocer
- Un camión ardiendo, dos pueblos evacuados y una pregunta incómoda: ¿estamos gestionando bien nuestros montes?
- Cómo descubrimos que APF vaciaba las reglas de iptables cada cinco minutos
- Cómo detectar archivos PHP sospechosos, malwares y posibles webshells con Auditor Web
- Script "auditor-web.sh" Para detectar malware
- ¿DNI para acceder a Internet? Ursula von der Leyen (UE) ya no quiere una Internet libre como la conocemos
- Automatiza tareas en Linux con n8n (IV): Inteligencia Artificial, agentes autónomos y el futuro de la administración de sistemas
- Vulnerabilidad crítica en Helix Ultimate y SP Page Builder para Joomla 3: cómo comprobar si tu sitio ha sido comprometido y cómo limpiarlo
- Automatiza tareas en Linux con n8n (III): casos reales para administradores de sistemas y DevOps
- Automatiza tareas en Linux con n8n (II): primeros pasos y tres automatizaciones prácticas para empezar (2A)
- Automatiza tareas en Linux con n8n (II): primeros pasos y tres automatizaciones prácticas para empezar (2B)
- China asume que no habrá un nuevo baby boom y apuesta por la "economía plateada": IA, robótica y tecnología para una sociedad cada vez más longeva



