Volver

45 comandos básicos para Linux que debes saber


En el mundo de la administración de servidores y el desarrollo web, dominar Linux es fundamental. Si estás utilizando un hosting Linux o gestionando servidores, conocer los comandos básicos te ahorrará tiempo y te permitirá resolver problemas rápidamente. En esta guía completa, te presentamos los 45 comandos de Linux más útiles que todo profesional debería conocer.


¿Qué son los comandos de Linux y para qué sirven?

Los comandos de Linux son instrucciones que se introducen en la terminal o línea de comandos para realizar diferentes acciones en el sistema operativo. Desde la gestión de archivos hasta el monitoreo de procesos, estos comandos permiten controlar prácticamente todos los aspectos del sistema de forma eficiente y precisa.

A diferencia de las interfaces gráficas, la línea de comandos ofrece mayor velocidad, flexibilidad y la posibilidad de automatizar tareas mediante scripts. Esto es especialmente útil cuando gestionas un servidor remoto a través de SSH, como ocurre frecuentemente en entornos de hosting Linux profesional.

La terminal de Linux es una herramienta poderosa que te permite realizar tareas complejas con simples líneas de texto, lo que resulta esencial para administradores de sistemas, desarrolladores y cualquier persona que trabaje con servidores web.


Top 45 comandos básicos de Linux más utilizados

1. Listar archivos y directorios: ls

El comando ls (list) es uno de los más fundamentales y utilizados en Linux. Muestra el contenido de un directorio, permitiéndote ver archivos y carpetas.

ls


Este comando básico tiene múltiples opciones que lo hacen extremadamente versátil:

ls -l    # Formato largo que muestra permisos, propietario, tamaño y fecha
ls -a    # Muestra archivos ocultos (que comienzan con punto)
ls -h    # Muestra tamaños en formato legible (KB, MB, GB)
ls -lah  # Combinación de las opciones anteriores
ls -R    # Lista recursivamente el contenido de subdirectorios
ls -t    # Ordena por fecha de modificación (más reciente primero)
ls -S    # Ordena por tamaño (más grande primero)


Ejemplo práctico: ls -lah /var/www/html mostrará todos los archivos de tu directorio web con detalles completos y tamaños legibles.

2. Cambiar directorio: cd

El comando cd (change directory) te permite navegar entre directorios en el sistema de archivos. Es esencial para moverte por la estructura de carpetas.

cd /ruta/al/directorio    # Navega a una ruta absoluta
cd carpeta                # Navega a una carpeta dentro del directorio actual
cd ~                      # Navega al directorio home del usuario
cd -                      # Vuelve al directorio anterior donde estabas
cd /                      # Navega a la raíz del sistema

Un uso práctico en entornos de hosting sería: cd /var/www/html para acceder a la carpeta principal de tu sitio web.

3. Ver el directorio actual: pwd

El comando pwd (print working directory) muestra la ruta completa del directorio donde te encuentras actualmente. Es útil para orientarte en el sistema de archivos, especialmente cuando trabajas con rutas relativas.

pwd

La salida será algo como /home/usuario/proyectos/sitio-web, mostrándote exactamente dónde estás ubicado en la jerarquía de directorios.

Este comando es particularmente útil en scripts de shell cuando necesitas referencias a la ubicación actual para operaciones posteriores.

4. Volver al directorio anterior: cd ..

Para subir un nivel en la estructura de directorios, utilizas cd ... Este comando es fundamental para la navegación eficiente.

cd ..          # Sube un nivel
cd ../..       # Sube dos niveles
cd ../../otra  # Sube dos niveles y entra en la carpeta "otra"

Cuando estás profundamente anidado en la estructura de directorios (por ejemplo, en /var/www/html/wp-content/themes/mi-tema), este comando te permite navegar hacia arriba rápidamente.

5. Listar archivos ocultos: ls -a

En Linux, los archivos que comienzan con un punto (.) son archivos ocultos. Normalmente contienen configuraciones y no aparecen en un listado regular.

ls -a

Este comando muestra todos los archivos, incluidos los ocultos. Es especialmente útil cuando trabajas con:

  • Archivos de configuración como .htaccess en sitios web
  • Archivos de configuración de usuario como .rc o .ssh
  • Repositorios Git (la carpeta .git)

Para ver detalles completos de archivos ocultos, combina opciones:

ls -la    # Lista detallada incluyendo archivos ocultos

Comandos básicos de gestión de archivos

6. Crear archivos: touch

El comando touch crea un archivo vacío o, si el archivo ya existe, actualiza su fecha de modificación sin alterar su contenido.

touch archivo.txt              # Crea un único archivo
touch archivo1.txt archivo2.txt # Crea múltiples archivos
touch -t 202501010000 archivo.txt # Establece una fecha específica (1 de enero de 2025)

Usos prácticos:

  • Crear archivos de configuración vacíos: touch .env
  • Crear archivos de marcador de posición: touch index.html
  • Actualizar la fecha de modificación para forzar actualizaciones: touch wp-config.php

7. Crear directorios: mkdir

El comando mkdir (make directory) crea nuevas carpetas en el sistema de archivos.

mkdir nuevo_directorio                # Crea un directorio
mkdir dir1 dir2 dir3                  # Crea múltiples directorios
mkdir -p directorio/subdirectorio/otro # Crea estructura de directorios anidados
mkdir -m 755 directorio_con_permisos  # Crea directorio con permisos específicos

La opción -p (parents) es particularmente útil cuando necesitas crear una estructura completa de directorios de una sola vez, como al configurar un nuevo proyecto web: mkdir -p /var/www/mi-sitio/{public_html,logs,backups}.

8. Eliminar archivos: rm

El comando rm (remove) elimina archivos y directorios del sistema. Es importante tener precaución, ya que los archivos eliminados no van a una papelera de reciclaje y la recuperación puede ser difícil o imposible.

rm archivo.txt         # Elimina un archivo
rm archivo1.txt archivo2.txt # Elimina múltiples archivos
rm -i archivo.txt      # Modo interactivo (pide confirmación)
rm -f archivo.txt      # Forzar eliminación sin preguntar
rm *.tmp               # Elimina todos los archivos con extensión .tmp

Para mayor seguridad, especialmente cuando estás aprendiendo, usa la opción -i que te pedirá confirmación antes de eliminar cada archivo.

9. Eliminar directorios: rmdir

El comando rmdir elimina directorios vacíos. Si necesitas eliminar un directorio con contenido, deberás usar rm -r.

rmdir directorio_vacio   # Elimina un directorio vacío
rmdir dir1 dir2          # Elimina múltiples directorios vacíos
rmdir -p dir1/dir2/dir3  # Elimina estructura de directorios anidados si están vacíos


Para directorios con contenido:

rm -r directorio        # Elimina recursivamente un directorio y su contenido
rm -rf directorio       # Elimina forzadamente y recursivamente (¡usar con extrema precaución!)

10. Copiar archivos: cp

El comando cp (copy) crea duplicados de archivos y directorios.

cp origen.txt destino.txt      # Copia un archivo
cp archivo.txt /otra/ruta/     # Copia a otro directorio
cp -i origen.txt destino.txt   # Modo interactivo (pregunta antes de sobrescribir)
cp archivo.txt archivo_backup.txt # Crea una copia de seguridad
cp *.html /var/www/backup/     # Copia todos los archivos HTML a un directorio
cp -p archivo.txt copia.txt    # Preserva permisos, propietario y fecha

En entornos de producción, la opción -p es valiosa porque mantiene los metadatos originales del archivo, lo que es importante para backups y migraciones.

11. Copiar directorios: cp -r

Para copiar directorios completos con su contenido, se usa la opción -r (recursive) con el comando cp.

cp -r directorio_origen directorio_destino  # Copia un directorio y su contenido
cp -r /var/www/html /backup/html-$(date +%Y%m%d) # Crea backup con fecha
cp -rp directorio1 directorio2              # Copia recursivamente preservando atributos

Este comando es esencial para:

  • Crear copias de seguridad de sitios web: cp -r /var/www/html /backup/html-backup
  • Duplicar proyectos para desarrollo: cp -r proyecto proyecto-dev
  • Migrar contenido entre servidores (junto con otros comandos)

12. Mover o renombrar archivos: mv

El comando mv (move) tiene dos funciones principales: mover archivos entre directorios y renombrar archivos o directorios.

mv archivo.txt nuevo_nombre.txt  # Renombrar un archivo
mv archivo.txt /otra/ruta/       # Mover a otro directorio
mv -i origen.txt destino.txt     # Modo interactivo (pregunta antes de sobrescribir)
mv directorio nuevo_nombre       # Renombrar un directorio
mv *.jpg /var/www/images/        # Mover todos los archivos JPG a un directorio

Usos prácticos:

  • Implementar cambios: mv sitio-nuevo/* /var/www/html/
  • Organizar archivos: mv *.log /var/log/backups/
  • Renombrar archivos de configuración: mv config.php.example config.php

13. Ver el contenido de un archivo: cat

El comando cat (concatenate) muestra el contenido completo de uno o más archivos en la terminal.

cat archivo.txt                  # Muestra el contenido del archivo
cat archivo1.txt archivo2.txt    # Muestra el contenido de múltiples archivos
cat -n archivo.txt               # Muestra el contenido con números de línea
cat archivo.txt | grep "texto"   # Muestra líneas que contienen "texto"
También se puede usar para crear archivos:
cat > nuevo.txt                  # Crea un archivo (presiona Ctrl+D para finalizar)
cat archivo1.txt > archivo2.txt  # Copia el contenido de archivo1 a archivo2
cat archivo1.txt >> archivo2.txt # Añade el contenido de archivo1 al final de archivo2

Es ideal para archivos pequeños o cuando necesitas ver todo el contenido de una vez.

14. Ver el contenido de un archivo de forma paginada: less

El comando less permite visualizar archivos grandes de manera eficiente, mostrando el contenido página por página.

less archivo_grande.log

Dentro de less, puedes usar varios comandos de navegación:

  • Flechas arriba/abajo: Navegar línea por línea
  • Espacio/Page Down: Avanzar una página
  • b/Page Up: Retroceder una página
  • /texto: Buscar «texto» hacia adelante
  • ?texto: Buscar «texto» hacia atrás
  • n: Repetir la última búsqueda
  • q: Salir de less

Less es especialmente útil para examinar logs extensos: less /var/log/apache2/error.log o archivos de configuración grandes.

15. Ver el contenido de un archivo de forma paginada (alternativa): more

El comando more es similar a less, pero con menos funcionalidades. Muestra el contenido de un archivo página por página, permitiendo avanzar pero no retroceder.

more archivo.txt

Comandos básicos en more:

  • Espacio: Avanzar una página
  • Enter: Avanzar una línea
  • q: Salir de more

Aunque less es generalmente preferido por su mayor flexibilidad, more está disponible en prácticamente todos los sistemas Unix/Linux, incluso en instalaciones mínimas.

Comandos de búsqueda en Linux

16. Buscar archivos: find

El comando find es una herramienta potente para buscar archivos y directorios en el sistema de archivos según diversos criterios.

find /ruta -name "nombre_archivo"     # Busca por nombre exacto
find /var/www -name "*.php"           # Busca todos los archivos PHP
find /home -type f -size +100M        # Busca archivos de más de 100MB
find /var/log -mtime -7               # Archivos modificados en los últimos 7 días
find . -name "*.tmp" -delete          # Busca y elimina archivos temporales
find /var/www -type f -exec chmod 644 {} \;  # Cambia permisos a todos los archivos

Ejemplos prácticos para administradores web:

  • Encontrar archivos de configuración: find /etc -name «*.conf»
  • Localizar archivos grandes que ocupan espacio: find / -type f -size +100M
  • Buscar archivos modificados recientemente: find /var/www -mtime -1
  • Buscar y ejecutar acciones sobre los resultados: find . -name «*.php» -exec grep -l «vulnerabilidad» {} \;

17. Buscar texto dentro de archivos: grep

El comando grep busca patrones de texto dentro de archivos, siendo esencial para analizar logs, depurar código y encontrar información específica.

grep "texto a buscar" archivo.txt     # Busca en un archivo
grep -i "texto" archivo.txt           # Búsqueda ignorando mayúsculas/minúsculas
grep -r "texto" /directorio           # Búsqueda recursiva en directorio
grep -l "texto" *.php                 # Muestra solo nombres de archivos que coinciden
grep -n "texto" archivo.txt           # Muestra números de línea
grep -v "texto" archivo.txt           # Muestra líneas que NO coinciden
grep -E "patrón|otro" archivo.txt     # Usa expresiones regulares extendidas

Escenarios comunes:

  • Buscar errores en logs: grep «ERROR» /var/log/apache2/error.log
  • Encontrar configuraciones específicas: grep -r «max_execution_time» /etc/php/
  • Buscar vulnerabilidades en código: grep -r «eval(» /var/www/html/
  • Contar ocurrencias: grep -c «404» access.log

18. Buscar archivos en el sistema: locate

El comando locate realiza búsquedas rápidas de archivos utilizando una base de datos indexada, lo que lo hace mucho más veloz que find para búsquedas simples.

locate nombre_archivo       # Busca archivos por nombre
locate -i nombre_archivo    # Búsqueda ignorando mayúsculas/minúsculas
locate "*.php" | grep admin # Combina con grep para filtrar resultados


Para actualizar la base de datos de locate:

sudo updatedb

Es ideal para búsquedas rápidas, pero ten en cuenta que la base de datos se actualiza periódicamente, por lo que archivos muy recientes podrían no aparecer hasta la próxima actualización.

19. Buscar archivos por nombre: which

El comando which localiza la ubicación de los archivos ejecutables (comandos) que se ejecutarían en el entorno actual.

which python        # Muestra la ruta del ejecutable de Python
which -a php        # Muestra todas las coincidencias en el PATH

Es útil para:

  • Verificar qué versión de un programa se está utilizando
  • Confirmar si un programa está instalado
  • Determinar la ruta completa de un ejecutable para scripts

Por ejemplo, which php podría mostrar /usr/bin/php, confirmando que PHP está instalado y disponible.

20. Encontrar procesos por nombre: pgrep

El comando pgrep busca procesos en ejecución por su nombre y devuelve sus IDs.

pgrep apache        # Muestra IDs de procesos de Apache
pgrep -l nginx      # Muestra IDs y nombres de procesos
pgrep -u usuario    # Procesos de un usuario específico
pgrep -c mysql      # Cuenta cuántos procesos de MySQL están ejecutándose

Esto es especialmente útil para:

  • Verificar si un servicio está en ejecución
  • Obtener IDs para enviar señales con kill
  • Monitorear procesos específicos
  • Combinar con otros comandos: kill $(pgrep apache)

Comandos de gestión de permisos en Linux

21. Ver permisos de archivos: ls -l

El comando ls -l muestra un listado detallado que incluye permisos, propietario, grupo, tamaño y fecha de modificación de archivos y directorios.

ls -l


La salida se ve así:

-rw-r--r-- 1 usuario grupo 12345 Jan 1 12:34 archivo.txt
drwxr-xr-x 2 usuario grupo  4096 Jan 1 12:34 directorio

Desglose de la información de permisos:

  • Primer carácter: tipo (- para archivo, d para directorio)
  • Siguientes tres caracteres: permisos del propietario (r=lectura, w=escritura, x=ejecución)
  • Siguientes tres: permisos del grupo
  • Últimos tres: permisos para otros usuarios

Este comando es fundamental para diagnosticar problemas de acceso y seguridad en servidores web.

22. Cambiar permisos de archivos: chmod

El comando chmod (change mode) modifica los permisos de acceso a archivos y directorios.

chmod 755 archivo.sh         # Modo numérico (rwxr-xr-x)
chmod 644 archivo.txt        # Modo numérico (rw-r--r--)
chmod u+x archivo.sh         # Añade ejecución al usuario
chmod g-w archivo.txt        # Quita escritura al grupo
chmod o=r archivo.txt        # Establece solo lectura para otros
chmod -R 755 directorio      # Cambia permisos recursivamente

Notación numérica:

  • 4 = lectura (r)
  • 2 = escritura (w)
  • 1 = ejecución (x)

Permisos comunes:

  • 755 (rwxr-xr-x): Directorios y scripts ejecutables
  • 644 (rw-r–r–): Archivos regulares (HTML, CSS, imágenes)
  • 600 (rw——-): Archivos de configuración sensibles
  • 777 (rwxrwxrwx): Permisos totales (¡usar con extrema precaución!)

En un entorno web, configurar permisos correctos es crucial para la seguridad.

23. Cambiar propietario de un archivo: chown

El comando chown (change owner) cambia el propietario de archivos y directorios.

chown usuario archivo.txt             # Cambia solo el propietario
chown usuario:grupo archivo.txt       # Cambia propietario y grupo
chown -R usuario:grupo directorio     # Cambia recursivamente
chown www-data:www-data /var/www/html # Típico para servidores web

Es especialmente útil después de transferir archivos entre usuarios o al configurar permisos de servidores web, donde archivos específicos deben pertenecer al usuario del servidor web (como www-data, apache o nginx).

24. Cambiar grupo de un archivo: chgrp

El comando chgrp cambia el grupo propietario de archivos y directorios.

chgrp grupo archivo.txt        # Cambia el grupo de un archivo
chgrp -R grupo directorio      # Cambia el grupo recursivamente

Este comando es útil cuando solo necesitas modificar el grupo sin cambiar el propietario. Por ejemplo, para permitir que varios desarrolladores accedan a archivos a través de un grupo compartido: chgrp developers /var/www/proyecto.

Comandos de gestión de procesos en Linux

25. Ver los procesos activos: ps

El comando ps (process status) muestra información sobre los procesos en ejecución.

ps                  # Muestra procesos del usuario actual en la terminal actual
ps -e               # Muestra todos los procesos
ps -f               # Formato completo (información detallada)
ps -u usuario       # Procesos de un usuario específico
ps -p 1234          # Información sobre el proceso con ID 1234
ps --sort=-%cpu     # Ordena por uso de CPU (descendente)
ps --sort=-%mem     # Ordena por uso de memoria (descendente)

La salida incluye:

  • PID: ID del proceso
  • TTY: Terminal asociada
  • TIME: Tiempo de CPU utilizado
  • CMD: Comando que inició el proceso

Es fundamental para diagnosticar problemas de rendimiento y monitorear la actividad del sistema.

26. Ver todos los procesos: ps aux

El comando ps aux es una combinación de opciones que muestra todos los procesos del sistema con información detallada.

ps aux

Desglose de las opciones:

  • a: procesos de todos los usuarios
  • u: formato orientado al usuario (incluye %CPU, %MEM)
  • x: incluye procesos sin terminal

La salida incluye:

  • USER: Propietario del proceso
  • PID: ID del proceso
  • %CPU: Porcentaje de CPU utilizado
  • %MEM: Porcentaje de memoria utilizado
  • VSZ: Tamaño virtual de memoria
  • RSS: Tamaño de memoria física
  • TTY: Terminal asociada
  • STAT: Estado del proceso
  • START: Tiempo de inicio
  • TIME: Tiempo de CPU acumulado
  • COMMAND: Comando con argumentos

Para filtrar resultados específicos:

ps aux | grep apache    # Muestra solo procesos de Apache
ps aux | grep ^usuario  # Procesos de un usuario específico

27. Detener un proceso: kill

El comando kill envía señales a procesos, comúnmente usado para terminarlos.

kill 1234                # Envía señal TERM (15) al proceso 1234
kill -9 1234             # Envía señal KILL (9) para forzar terminación
kill -HUP 1234           # Envía señal HUP (1) para reiniciar el proceso
kill -l                  # Lista todas las señales disponibles

Señales comunes:

  • 1 (HUP): Reiniciar el proceso
  • 2 (INT): Interrumpir (como Ctrl+C)
  • 9 (KILL): Forzar terminación inmediata (último recurso)
  • 15 (TERM): Terminar graciosamente (predeterminado)

Ejemplo práctico: si un proceso PHP está consumiendo demasiados recursos, puedes terminarlo con kill -15 [PID] o, si no responde, kill -9 [PID].

28. Detener un proceso por nombre: killall

El comando killall termina todos los procesos que coinciden con un nombre específico.

killall firefox          # Termina todos los procesos de Firefox
killall -9 httpd         # Fuerza la terminación de todos los procesos Apache
killall -u usuario       # Termina todos los procesos de un usuario
killall -i proceso       # Modo interactivo (pide confirmación)

Es útil cuando tienes múltiples instancias del mismo programa y quieres terminarlas todas a la vez, o cuando no conoces el PID específico.

29. Ver procesos en tiempo real: top

El comando top muestra una vista dinámica en tiempo real de los procesos en ejecución, ordenados por uso de CPU.

top

Dentro de top, puedes usar varios comandos:

  • k: Matar un proceso (pedirá PID)
  • r: Cambiar la prioridad de un proceso (renice)
  • f: Configurar campos a mostrar
  • o: Cambiar el orden de clasificación
  • M: Ordenar por uso de memoria
  • P: Ordenar por uso de CPU (predeterminado)
  • q: Salir

Opciones útiles al iniciar:

top -u usuario # Muestra solo procesos de un usuario
top -p 1234,5678 # Monitorea solo PIDs específicos
top -b -n 1 # Modo por lotes, una iteración (útil para scripts)

Es esencial para monitorear el rendimiento del sistema y detectar procesos que consumen demasiados recursos.

30. Ver procesos en tiempo real (alternativa): htop

El comando htop es una versión mejorada de top con una interfaz más amigable y funciones adicionales.

htop

Características principales:

  • Interfaz a color
  • Navegación con teclado y mouse
  • Visualización de árbol de procesos
  • Acciones con F1-F10 (ayuda, configuración, búsqueda, etc.)
  • Filtrado y ordenación interactiva
  • Representación gráfica de CPU y memoria

Puede requerir instalación:

sudo apt-get install htop   # Debian/Ubuntu
sudo yum install htop   # CentOS/RHEL

Es la herramienta preferida para monitoreo de procesos por su facilidad de uso y características visuales mejoradas.

Comandos de red en Linux

31. Ver la configuración de red: ifconfig

El comando ifconfig (interface configuration) muestra y configura las interfaces de red del sistema.

ifconfig  # Muestra todas las interfaces activas
ifconfig eth0 # Muestra información de una interfaz específica
ifconfig eth0 up # Activa una interfaz
ifconfig eth0 down# Desactiva una interfaz

La salida incluye:

  • Dirección IP
  • Dirección MAC (HWaddr)
  • Máscara de red
  • Estadísticas de tráfico

En sistemas más recientes, ifconfig puede estar obsoleto y reemplazado por ip addr. Si ifconfig no está disponible:

apt-get install net-tools    # Debian/Ubuntu
yum install net-tools        # CentOS/RHEL

32. Probar conexión a una IP: ping

El comando ping envía paquetes ICMP a un host para verificar la conectividad de red.

ping google.com          # Ping continuo (Ctrl+C para detener)
ping -c 4 192.168.1.1    # Envía solo 4 paquetes
ping -i 2 servidor.com   # Intervalo de 2 segundos entre paquetes
ping -s 1500 servidor.com # Establece tamaño de paquete (para probar MTU)

La salida muestra:

  • Tiempo de respuesta (latencia)
  • Paquetes perdidos
  • Estadísticas de tiempo mínimo/promedio/máximo

Es esencial para:

  • Verificar si un servidor está en línea
  • Diagnosticar problemas de conexión
  • Medir la latencia de red
  • Comprobar resolución DNS

33. Ver rutas de red: route

El comando route muestra y manipula la tabla de enrutamiento IP del kernel.

route -n                 # Muestra la tabla de enrutamiento (formato numérico)
route add default gw 192.168.1.1  # Establece puerta de enlace predeterminada
route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1  # Añade ruta

La opción -n evita la resolución de nombres, mostrando direcciones IP numéricas para mayor velocidad.

En sistemas más nuevos, puedes usar el equivalente moderno:

ip route show            # Muestra rutas
ip route add 192.168.2.0/24 via 192.168.1.1  # Añade ruta

Es crucial para diagnosticar problemas de conectividad y configurar enrutamiento avanzado.

34. Mostrar direcciones IP de la red: ip a

El comando ip a (abreviatura de ip addr) es parte del conjunto de herramientas iproute2 y muestra información detallada sobre las interfaces de red.

ip a                     # Muestra todas las interfaces
ip addr show dev eth0    # Muestra información de una interfaz específica
ip -4 addr               # Muestra solo direcciones IPv4
ip -6 addr               # Muestra solo direcciones IPv6

Ventajas sobre ifconfig:

  • Soporte mejorado para IPv6
  • Más información sobre el estado de la interfaz
  • Parte del conjunto moderno de herramientas de red

Es el comando preferido en distribuciones Linux modernas para configuración y diagnóstico de red.

35. Ver puertos abiertos en el sistema: netstat

El comando netstat muestra conexiones de red, tablas de enrutamiento, estadísticas de interfaces y más.

netstat -tuln            # Muestra puertos TCP/UDP en escucha (numérico)
netstat -anp             # Muestra todas las conexiones con procesos asociados
netstat -r               # Muestra tabla de enrutamiento (como route)
netstat -i               # Muestra estadísticas de interfaces
netstat -s               # Muestra estadísticas por protocolo

Desglose de opciones comunes:

  • t: Conexiones TCP
  • u: Conexiones UDP
  • l: Puertos en escucha (listening)
  • n: No resolver nombres (numérico)
  • p: Mostrar proceso asociado (requiere privilegios root)

En sistemas más nuevos, ss es el reemplazo moderno:

ss -tuln                 # Equivalente a netstat -tuln

Es fundamental para seguridad y diagnóstico de red, permitiendo identificar qué servicios están activos

Comandos básicos de gestión de paquetes en Linux

36. Instalar paquetes: apt-get (Debian/Ubuntu)

El comando apt-get es el gestor de paquetes principal en distribuciones basadas en Debian como Ubuntu. Permite instalar, actualizar y gestionar software.

sudo apt-get install nombre_paquete     # Instala un paquete
sudo apt-get install paquete1 paquete2  # Instala múltiples paquetes
sudo apt-get install paquete=1.2.3      # Instala versión específica
sudo apt-get -y install paquete         # Instala sin pedir confirmación
sudo apt-get --no-install-recommends install paquete  # Instala sin paquetes recomendados

Ejemplos prácticos:

  • Instalar servidor web: sudo apt-get install apache2
  • Instalar PHP con extensiones: sudo apt-get install php php-mysql php-gd
  • Instalar herramientas de desarrollo: sudo apt-get install git build-essential

En versiones más recientes de Ubuntu, puedes usar simplemente apt en lugar de apt-get para una interfaz más amigable:

sudo apt install nombre_paquete

37. Instalar paquetes: yum (CentOS/RHEL)

El comando yum (Yellowdog Updater Modified) es el gestor de paquetes principal en distribuciones basadas en Red Hat como CentOS y RHEL.

sudo yum install nombre_paquete     # Instala un paquete
sudo yum install paquete1 paquete2  # Instala múltiples paquetes
sudo yum install paquete-1.2.3      # Instala versión específica
sudo yum -y install paquete         # Instala sin pedir confirmación
sudo yum groupinstall "Desarrollo"  # Instala grupo de paquetes

Ejemplos prácticos:

  • Instalar servidor web: sudo yum install httpd
  • Instalar MariaDB: sudo yum install mariadb-server
  • Instalar herramientas de desarrollo: sudo yum groupinstall «Development Tools»

En RHEL 8/CentOS 8 y versiones posteriores, dnf ha reemplazado a yum como gestor de paquetes predeterminado, aunque yum sigue funcionando como alias:

sudo dnf install nombre_paquete

38. Actualizar paquetes: apt-get update (Debian/Ubuntu)

El comando apt-get update actualiza la lista de paquetes disponibles desde los repositorios configurados.

sudo apt-get update                  # Actualiza la lista de paquetes
sudo apt-get update && sudo apt-get upgrade  # Actualiza lista y después los paquetes

Es importante ejecutar este comando regularmente para asegurarse de que el sistema tiene acceso a las últimas versiones de software y parches de seguridad. Se recomienda ejecutarlo antes de instalar nuevos paquetes.

Para actualizar los paquetes después de actualizar la lista:

sudo apt-get upgrade                 # Actualiza todos los paquetes instalados
sudo apt-get dist-upgrade            # Actualiza con manejo inteligente de dependencias

39. Actualizar paquetes: yum update (CentOS/RHEL)

El comando yum update actualiza los paquetes instalados a sus últimas versiones disponibles.

sudo yum update                      # Actualiza todos los paquetes
sudo yum update nombre_paquete       # Actualiza un paquete específico
sudo yum -y update                   # Actualiza sin pedir confirmación
sudo yum check-update                # Comprueba actualizaciones sin instalarlas

Para mantener un servidor seguro, es recomendable programar actualizaciones regulares, especialmente las de seguridad:

sudo yum update --security           # Solo actualiza parches de seguridad


En sistemas con dnf:

sudo dnf update

40. Eliminar paquetes: apt-get remove

El comando apt-get remove desinstala paquetes del sistema, pero mantiene los archivos de configuración.

sudo apt-get remove nombre_paquete   # Elimina un paquete
sudo apt-get remove paquete1 paquete2 # Elimina múltiples paquetes
sudo apt-get purge nombre_paquete    # Elimina paquete y archivos de configuración
sudo apt-get --purge remove nombre_paquete  # Equivalente a purge

La diferencia entre remove y purge:

  • remove: Elimina los binarios del paquete pero conserva configuración
  • purge: Elimina binarios y archivos de configuración

Para eliminar dependencias que ya no son necesarias después de desinstalar un paquete, combina con autoremove:

sudo apt-get remove nombre_paquete && sudo apt-get autoremove

41. Limpiar paquetes innecesarios: apt-get autoremove

El comando apt-get autoremove elimina paquetes que se instalaron automáticamente como dependencias y que ya no son necesarios.

sudo apt-get autoremove              # Elimina paquetes innecesarios
sudo apt-get -y autoremove           # Sin confirmación
sudo apt-get autoremove --purge      # Elimina también archivos de configuración

Este comando es esencial para mantener el sistema limpio y liberar espacio en disco, especialmente después de múltiples actualizaciones o cambios en el software instalado.

Para limpiar también la caché de paquetes descargados:

sudo apt-get clean                   # Elimina todos los paquetes .deb descargados
sudo apt-get autoclean               # Elimina solo paquetes obsoletos

42. Ver información sobre un paquete: apt-cache show

El comando apt-cache show muestra información detallada sobre paquetes disponibles en los repositorios.

apt-cache show nombre_paquete        # Muestra información detallada
apt-cache search término_búsqueda    # Busca paquetes relacionados
apt-cache policy nombre_paquete      # Muestra versión instalada y disponible
apt-cache depends nombre_paquete     # Muestra dependencias
apt-cache rdepends nombre_paquete    # Muestra dependencias inversas (qué depende de este paquete)

Ejemplos prácticos:

  • Buscar paquetes relacionados con PHP: apt-cache search php
  • Verificar versión disponible: apt-cache policy nginx
  • Comprobar dependencias antes de instalar: apt-cache depends mysql-server

En sistemas con apt:

apt show nombre_paquete              # Equivalente moderno a apt-cache show
apt search término_búsqueda          # Búsqueda con mejor formato

Comandos útiles adicionales en Linux

43. Mostrar el espacio disponible en disco: df

El comando df (disk free) muestra el espacio utilizado y disponible en todos los sistemas de archivos montados.

df                       # Muestra espacio en bloques
df -h                    # Formato "humano" (KB, MB, GB)
df -T                    # Muestra también el tipo de sistema de archivos
df -i                    # Muestra información sobre inodos en lugar de bloques
df -h /var               # Información sobre una partición específica

La opción -h es la más utilizada ya que muestra tamaños en formato legible (como 1G, 234M, etc.) en lugar de bloques.

Es esencial para:

  • Monitorear el espacio disponible en el servidor
  • Identificar particiones que se están llenando
  • Prevenir problemas de «disco lleno» que pueden afectar servicios

44. Mostrar el uso de disco por directorios: du

El comando du (disk usage) muestra el espacio utilizado por archivos y directorios.

du                       # Muestra uso de todos los subdirectorios
du -h                    # Formato "humano" (KB, MB, GB)
du -sh                   # Resumen (summary) del directorio actual
du -sh *                 # Tamaño de cada elemento en el directorio actual
du -sh /var/www/*        # Tamaño de cada sitio web
du -h --max-depth=1 /var # Solo primer nivel de subdirectorios

Ejemplos prácticos:

  • Encontrar directorios grandes: du -h –max-depth=1 / | sort -hr
  • Analizar espacio de logs: du -sh /var/log/*
  • Identificar archivos grandes: find /var -type f -size +100M -exec du -h {} \;

Es una herramienta indispensable para administradores de sistemas cuando necesitan liberar espacio en disco.

45. Comprimir archivos: tar

El comando tar (tape archive) crea, mantiene y extrae archivos de un formato de archivo específico (tarball).

# Crear archivo comprimido
tar -czvf archivo.tar.gz directorio/   # Comprime con gzip
tar -cjvf archivo.tar.bz2 directorio/  # Comprime con bzip2 (mejor compresión)
tar -cJvf archivo.tar.xz directorio/   # Comprime con xz (compresión óptima)

# Extraer archivo comprimido
tar -xzvf archivo.tar.gz               # Extrae archivo gzip
tar -xjvf archivo.tar.bz2              # Extrae archivo bzip2
tar -xJvf archivo.tar.xz               # Extrae archivo xz

# Listar contenido sin extraer
tar -tzvf archivo.tar.gz               # Lista contenido
Desglose de opciones:
c: Crear archivo
x: Extraer archivo
t: Listar contenido
v: Modo verbose (muestra progreso)
f: Especifica el nombre del archivo
z: Filtrar a través de gzip
j: Filtrar a través de bzip2
J: Filtrar a través de xz

Ejemplos prácticos:

  • Crear backup de un sitio web: tar -czvf backup-sitio-$(date +%Y%m%d).tar.gz /var/www/html/
  • Comprimir logs antiguos: tar -czvf logs-old.tar.gz /var/log/apache2/access.log.*
  • Extraer en ubicación específica: tar -xzvf archivo.tar.gz -C /destino/

Preguntas frecuentes sobre los comandos de Linux

¿Cómo puedo saber qué comandos están disponibles en mi sistema?

Existen varias formas de descubrir los comandos disponibles en tu sistema Linux:

1. Usando la función de autocompletado: Presiona la tecla Tab dos veces en una terminal vacía para ver una lista de todos los comandos disponibles.

[presiona Tab Tab]

2. Usando el comando compgen:

compgen -c | sort | less  # Lista todos los comandos disponibles

3. Explorando directorios de binarios: Los comandos se almacenan en varios directorios que están en la variable PATH:

echo $PATH               # Muestra los directorios donde se buscan comandos
ls /bin /usr/bin | less  # Lista comandos en ubicaciones comunes

4. Usando el comando apropos para buscar por funcionalidad:

apropos "copiar archivos"  # Busca comandos relacionados con copiar archivos

5. Consultando las páginas del manual:

man -k palabra_clave     # Busca en las páginas del manual

La combinación de estos métodos te ayudará a descubrir no solo qué comandos están disponibles, sino también cómo utilizarlos correctamente.

¿Cómo puedo combinar varios comandos en una sola línea?

Linux ofrece varios operadores para combinar comandos, lo que permite crear flujos de trabajo complejos:

  1. Operador de punto y coma (;): Ejecuta comandos secuencialmente, independientemente del resultado.
comando1 ; comando2 # Ejecuta comando1 y luego comando2

  1. Operador AND lógico (&&): Ejecuta el segundo comando solo si el primero tiene éxito (código de salida 0).
comando1 && comando2 # comando2 se ejecuta solo si comando1 tiene éxito

Ejemplo: mkdir directorio && cd directorio

  1. Operador OR lógico (||): Ejecuta el segundo comando solo si el primero falla (código de salida distinto de 0).
comando1 || comando2 # comando2 se ejecuta solo si comando1 falla

Ejemplo: ping -c 1 servidor || echo «Servidor no disponible»

  1. Operador de tubería (|): Pasa la salida estándar del primer comando como entrada estándar al segundo.
comando1 | comando2 # La salida de comando1 es la entrada de comando2

Ejemplo: ls -la | grep «.php»

  1. Agrupación de comandos con paréntesis:
(comando1 && comando2) | comando3

  1. Ejecución en segundo plano con &:
comando1 & comando2 # comando1 se ejecuta en segundo plano, comando2 inicia inmediatamente

Estos operadores se pueden combinar para crear flujos de trabajo complejos:

# Actualiza el sistema y reinicia solo si es necesario

apt-get update && apt-get upgrade -y && [ -f /var/run/reboot-required ] && reboot
# Intenta conectar con SSH, si falla muestra un mensaje

ssh usuario@servidor || echo "No se pudo conectar al servidor"

¿Cómo puedo redirigir la salida de un comando a un archivo?

Linux proporciona varios operadores de redirección para controlar la entrada y salida de comandos:

  1. Redirección de salida estándar (>): Envía la salida a un archivo (sobreescribe).
comando > archivo.txt # Sobreescribe archivo.txt con la salida

ls -la > listado.txt # Guarda el listado de archivos en listado.txt

  1. Redirección de salida estándar (>>): Añade la salida al final de un archivo.
comando >> archivo.txt # Añade la salida al final de archivo.txt

echo "Nueva línea" >> config.txt # Añade texto al final del archivo

  1. Redirección de error estándar (2>): Redirige los mensajes de error.
comando 2> errores.log # Redirige solo los errores

find / -name "archivo" 2> /dev/null # Descarta los mensajes de error

  1. Redirección de salida y error (> archivo 2>&1 o &>): Redirige tanto la salida estándar como los errores.
comando > todo.log 2>&1 # Método tradicional

comando &> todo.log # Método abreviado ()

  1. Redirección de entrada (<): Proporciona entrada desde un archivo.
comando < archivo_entrada.txt

sort < lista_desordenada.txt > lista_ordenada.txt

  1. Here documents (<<): Proporciona texto como entrada.
cat << EOF > archivo.txt

Línea 1

Línea 2

EOF

  1. Descartar salida (/dev/null): Útil para suprimir mensajes no deseados.
comando > /dev/null # Descarta la salida estándar

comando &> /dev/null # Descarta tanto la salida estándar como los errores

Ejemplos prácticos:

  • Guardar la salida de un comando largo: find /var/www -type f -name «*.php» > archivos_php.txt
  • Crear un log con fecha: backup.sh &> backup_$(date +%Y%m%d).log
  • Añadir entradas a un archivo de configuración: echo «127.0.0.1 midominio.local» >> /etc/hosts

¿Cómo puedo cambiar los permisos de un archivo o directorio?

Los permisos en Linux controlan quién puede leer, escribir o ejecutar archivos y directorios. Hay varias formas de modificarlos:

  1. Usando chmod con notación numérica (octal):
chmod 755 archivo # rwxr-xr-x (propietario: rwx, grupo: r-x, otros: r-x)

chmod 644 archivo # rw-r--r-- (propietario: rw-, grupo: r--, otros: r--)

chmod 700 directorio # rwx------ (solo el propietario tiene acceso completo)

chmod 777 archivo # rwxrwxrwx (todos los permisos para todos - ¡usar con precaución!)

Cada dígito representa los permisos para propietario, grupo y otros, respectivamente:

  • 4: Lectura (r)
  • 2: Escritura (w)
  • 1: Ejecución (x)
  1. Usando chmod con notación simbólica:
chmod u+x archivo # Añade permiso de ejecución al propietario

chmod g-w archivo # Quita permiso de escritura al grupo

chmod o=r archivo # Establece solo permiso de lectura para otros

chmod a+r archivo # Añade lectura para todos (all)

chmod u+x,g+x,o-rwx archivo # Múltiples cambios a la vez

Letras para usuarios:

  • u: Usuario propietario
  • g: Grupo
  • o: Otros
  • a: Todos

Operadores:

  • +: Añadir permisos
  • -: Quitar permisos
  • =: Establecer permisos exactos
  1. Aplicar permisos recursivamente a directorios:
chmod -R 755 directorio # Cambia permisos recursivamente

  1. Permisos especiales:
chmod 4755 archivo # Establece el bit SUID (4000)

chmod 2755 directorio # Establece el bit SGID (2000)

chmod 1755 directorio # Establece el bit sticky (1000)

  1. Permisos comunes para situaciones específicas:
  • Archivos de configuración sensibles: chmod 600 config.php (solo el propietario puede leer/escribir)
  • Scripts ejecutables: chmod 755 script.sh (propietario puede editar/ejecutar, otros solo ejecutar)
  • Directorios web: chmod 755 /var/www/html (navegable pero no modificable por otros)
  • Archivos web estándar: chmod 644 index.html (legible por todos, modificable solo por propietario)

En un hosting , establecer los permisos correctos es crucial para la seguridad. Los permisos demasiado permisivos pueden comprometer tu sitio, mientras que los demasiado restrictivos pueden causar errores de funcionamiento.

Dominar estos 45 comandos básicos de Linux te dará un control excepcional sobre tu sistema. Los planes de hosting de cdmon ofrecen acceso SSH y están especialmente configurados para un rendimiento óptimo con aplicaciones web basadas en Linux.

La línea de comandos puede parecer intimidante al principio, pero con práctica se convierte en la forma más eficiente de administrar servidores y automatizar tareas. Comenzar con estos comandos básicos te dará una base sólida para explorar funcionalidades más avanzadas de Linux.

¿Utilizas regularmente algún comando que no hayamos incluido en esta lista? ¿Tienes algún truco o combinación de comandos que te haya resultado especialmente útil? ¡Compártelo en los comentarios!