LinuxParty

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

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:

  • Espacio avanza una página.
  • b retrocede.
  • /error busca la palabra “error”.
  • n muestra la siguiente coincidencia.
  • q cierra 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:

  • 4 representa lectura.
  • 2 representa escritura.
  • 1 representa 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

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

 

Tutorial de Linux

Top 15 artículos por Fecha

Viendo artículos de: Julio de 2026

Filtro por Categorías