Comandos de Ubuntu¶
Esta página reúne los comandos de Ubuntu más utilizados durante el curso de Grafana, Prometheus y Node Exporter. Los ejemplos están pensados para ejecutarse en un entorno de laboratorio controlado.
Advertencia: algunos comandos requieren permisos de administrador. Utiliza
sudoúnicamente cuando sea necesario y revisa siempre el comando antes de ejecutarlo.
Objetivos¶
Al finalizar esta sesión, el alumno podrá:
- Consultar información básica del sistema.
- Identificar la versión de Ubuntu y la arquitectura del equipo.
- Gestionar ficheros y directorios desde la terminal.
- Consultar procesos y servicios.
- Comprobar puertos y conexiones de red.
- Revisar registros del sistema.
- Utilizar permisos de administrador de forma segura.
- Ejecutar comprobaciones básicas sobre Grafana, Prometheus y Node Exporter.
- Documentar los comandos utilizados y sus resultados.
Introducción¶
La terminal de Ubuntu permite administrar el sistema de forma precisa y repetible. Durante las prácticas de observabilidad se utilizará para:
- Instalar servicios.
- Crear usuarios y directorios.
- Modificar ficheros de configuración.
- Iniciar y detener servicios.
- Consultar registros.
- Comprobar puertos.
- Probar endpoints HTTP.
- Diagnosticar problemas.
Los comandos no deben ejecutarse de forma mecánica. Es importante entender qué información devuelve cada uno y cómo utilizarla para tomar decisiones.
Recomendaciones para trabajar con la terminal¶
Antes de ejecutar un comando:
- Lee la orden completa.
- Comprueba si necesita
sudo. - Revisa los ficheros o directorios que modifica.
- Comprueba que estás trabajando en el equipo correcto.
- Guarda los resultados importantes.
- Evita copiar comandos que no comprendas.
Mostrar el usuario actual¶
Ejemplo de resultado:
Mostrar el directorio actual¶
Ejemplo de resultado:
Limpiar la pantalla¶
También puedes utilizar el atajo de teclado:
Consultar la ayuda de un comando¶
Para salir del manual, pulsa:
También puedes utilizar:
Información básica del sistema¶
Estos comandos permiten identificar el sistema operativo, el núcleo y la arquitectura.
Consultar el nombre del equipo¶
Para consultar información más completa:
Ejemplo:
Static hostname: laboratorio
Operating System: Ubuntu 24.04.5 LTS
Kernel: Linux 6.8.0
Architecture: x86-64
Consultar la versión de Ubuntu¶
Para mostrar únicamente la descripción:
También puedes consultar el fichero de identificación del sistema:
Consultar la versión del núcleo¶
Para mostrar toda la información disponible:
Consultar la arquitectura¶
Resultados habituales:
o:
Consultar la fecha y la hora¶
Para consultar la zona horaria:
Consultar el tiempo que lleva encendido el sistema¶
Una salida posible:
Navegación por directorios¶
Listar el contenido de un directorio¶
Mostrar información detallada:
Incluir ficheros ocultos:
Mostrar tamaños de forma legible:
Cambiar de directorio¶
Volver al directorio personal:
Volver al directorio anterior:
Subir un nivel:
Crear un directorio¶
Crear una estructura completa de directorios:
Eliminar un directorio vacío¶
Para eliminar un directorio con contenido:
Precaución:
rm -relimina el contenido de forma recursiva. Comprueba siempre la ruta antes de ejecutarlo.
Gestión de ficheros¶
Crear un fichero vacío¶
Crear varios ficheros:
Copiar un fichero¶
Copiar un directorio completo:
Mover o renombrar un fichero¶
Mover un fichero a otro directorio:
Eliminar un fichero¶
Mostrar el contenido de un fichero¶
Para leer un fichero largo página a página:
Para salir de less:
Mostrar las primeras líneas¶
Mostrar las primeras 20 líneas:
Mostrar las últimas líneas¶
Seguir un fichero en tiempo real:
Para detener el seguimiento:
Búsqueda de ficheros y texto¶
Buscar un fichero por nombre¶
Buscar en una ruta concreta:
Buscar únicamente directorios:
Buscar texto dentro de un fichero¶
Ignorar mayúsculas y minúsculas:
Mostrar los números de línea:
Buscar recursivamente en un directorio:
Combinar comandos con una tubería¶
La tubería | utiliza la salida de un comando como entrada del siguiente.
Otro ejemplo:
Para evitar que aparezca el propio comando grep:
Usuarios, grupos y permisos¶
Consultar el usuario actual¶
Consultar la identidad completa¶
Consultar los usuarios del sistema¶
Consultar los grupos del usuario actual¶
Consultar los permisos de un fichero¶
Ejemplo:
La información muestra:
Utilizar sudo¶
Ejecutar un comando con permisos administrativos:
Abrir una shell administrativa:
Es preferible utilizar
sudodelante del comando concreto en lugar de mantener una shell administrativa abierta durante toda la sesión.
Cambiar el propietario de un fichero¶
Cambiar permisos¶
Los permisos numéricos más habituales son:
| Valor | Permiso |
|---|---|
| 7 | Lectura, escritura y ejecución |
| 6 | Lectura y escritura |
| 5 | Lectura y ejecución |
| 4 | Solo lectura |
| 0 | Sin permisos |
Procesos del sistema¶
Mostrar procesos activos¶
Buscar un proceso concreto¶
Consultar procesos en tiempo real¶
Una alternativa más completa, si está instalada:
Para salir:
o:
Consultar el consumo de memoria¶
Consultar el espacio de almacenamiento¶
Consultar el espacio de una ruta concreta:
Consultar el tamaño de un directorio¶
Consultar el tamaño de sus subdirectorios:
Servicios con systemd¶
Ubuntu utiliza systemd para gestionar muchos servicios del sistema.
Consultar el estado de un servicio¶
Comprobar si un servicio está activo¶
Resultado esperado:
Comprobar si un servicio se inicia automáticamente¶
Resultado esperado:
Iniciar un servicio¶
Detener un servicio¶
Reiniciar un servicio¶
Recargar la configuración de systemd¶
Después de crear o modificar una unidad:
Activar un servicio al arrancar¶
Activar y arrancar en una sola orden:
Consultar los servicios fallidos¶
Registros del sistema¶
Los registros son una fuente esencial para diagnosticar problemas.
Consultar los registros de un servicio¶
Consultar los registros desde el último arranque¶
Mostrar las últimas líneas¶
Seguir los registros en tiempo real¶
Detener el seguimiento:
Mostrar errores recientes¶
Consultar los registros de una franja temporal¶
Red y conectividad¶
Consultar las interfaces de red¶
Mostrar únicamente las direcciones:
Consultar las rutas de red¶
Probar la conectividad con otro equipo¶
Probar un nombre de dominio:
Consultar la resolución DNS¶
Consultar una resolución concreta:
Consultar los puertos en escucha¶
Consultar los puertos de Grafana, Prometheus y Node Exporter:
La expresión busca:
| Puerto | Servicio |
|---|---|
| 3000 | Grafana |
| 9090 | Prometheus |
| 9100 | Node Exporter |
Comprobar un puerto concreto¶
Si no devuelve ninguna línea, no hay ningún proceso escuchando en ese puerto.
Peticiones HTTP con curl¶
curl permite comprobar si un servicio HTTP responde.
Comprobar Grafana¶
Comprobar Prometheus¶
Comprobar el endpoint de métricas¶
Mostrar las primeras métricas de Node Exporter¶
Comprobar la salud de Prometheus¶
Resultado esperado:
Consultar la API de targets¶
Si jq está instalado, puedes formatear la salida:
Instalación de paquetes¶
Actualizar la información de paquetes¶
Actualizar los paquetes instalados¶
Instalar un paquete¶
Instalar varios paquetes:
Consultar si un paquete está instalado¶
También puedes utilizar:
Buscar un paquete¶
Eliminar un paquete¶
Eliminar también los ficheros de configuración:
Redirecciones y salida de comandos¶
Guardar la salida en un fichero¶
Esto sobrescribe el fichero si ya existe.
Añadir información al final de un fichero¶
Ver la salida y guardarla simultáneamente¶
Añadir al final:
Redirigir errores¶
Redirigir la salida normal y los errores:
Variables de entorno¶
Mostrar las variables de entorno¶
Consultar una variable concreta¶
Crear una variable temporal¶
Consultar su valor:
Esta variable desaparece al cerrar la sesión de terminal.
Sesión práctica 1: reconocimiento del sistema¶
En esta sesión el alumno recopilará información básica del equipo de laboratorio.
Objetivo¶
Crear un informe básico con:
- Nombre del equipo.
- Usuario actual.
- Versión de Ubuntu.
- Versión del núcleo.
- Arquitectura.
- Dirección IP.
- Tiempo de actividad.
- Espacio disponible.
- Memoria disponible.
Preparación¶
Crear un directorio para los resultados:
Recopilación de información¶
Ejecutar:
{
echo "===== INFORME DEL SISTEMA ====="
echo
echo "Fecha:"
date
echo
echo "Usuario:"
whoami
echo
echo "Nombre del equipo:"
hostname
echo
echo "Sistema operativo:"
lsb_release -ds
echo
echo "Núcleo:"
uname -r
echo
echo "Arquitectura:"
uname -m
echo
echo "Direcciones IP:"
hostname -I
echo
echo "Tiempo de actividad:"
uptime
echo
echo "Memoria:"
free -h
echo
echo "Almacenamiento:"
df -h /
} | tee informe-sistema.txt
Revisar el informe¶
Comprobar el resultado¶
El fichero debe existir:
Evidencia¶
Conserva:
También puedes realizar una captura de:
- La terminal con el informe.
- El fichero abierto.
- La ruta del directorio de trabajo.
Sesión práctica 2: comprobar servicios y puertos¶
En esta sesión se comprobará el estado de Grafana, Prometheus y Node Exporter.
Objetivo¶
Determinar si:
- Los tres servicios están activos.
- Los servicios están habilitados al arrancar.
- Los puertos esperados están en escucha.
- Los endpoints HTTP responden.
Comprobar el estado de los servicios¶
for service in grafana-server prometheus node_exporter; do
echo "===== $service ====="
echo -n "Estado: "
systemctl is-active "$service"
echo -n "Inicio automático: "
systemctl is-enabled "$service" 2>/dev/null || true
echo
done
Comprobar los puertos¶
Comprobar los endpoints¶
for url in \
http://localhost:3000 \
http://localhost:9090 \
http://localhost:9100/metrics
do
echo "===== $url ====="
curl -I --max-time 5 "$url"
echo
done
Interpretar los resultados¶
| Resultado | Interpretación |
|---|---|
active |
El servicio está activo |
inactive |
El servicio está detenido |
failed |
El servicio ha fallado |
enabled |
Se iniciará automáticamente |
disabled |
No se iniciará automáticamente |
HTTP/1.1 200 |
El endpoint responde correctamente |
Connection refused |
No hay servicio escuchando |
Connection timed out |
Puede existir un problema de red o cortafuegos |
Evidencia¶
Guarda la salida:
{
echo "===== SERVICIOS ====="
systemctl is-active grafana-server
systemctl is-active prometheus
systemctl is-active node_exporter
echo
echo "===== PUERTOS ====="
sudo ss -lntp | grep -E ':(3000|9090|9100)\b' || true
echo
echo "===== TARGETS ====="
curl -s http://localhost:9090/api/v1/targets
} | tee comprobacion-servicios.txt
Sesión práctica 3: diagnosticar un servicio detenido¶
En esta sesión se simulará una incidencia controlada deteniendo Node Exporter.
Realiza esta actividad únicamente en el entorno de laboratorio.
Objetivo¶
Observar el ciclo completo de diagnóstico:
- Detener el servicio.
- Detectar el problema.
- Revisar el estado.
- Consultar los registros.
- Volver a iniciar el servicio.
- Verificar la recuperación.
Detener Node Exporter¶
Comprobar el estado¶
Resultado esperado:
Comprobar el puerto¶
No debería aparecer ninguna línea.
Probar el endpoint¶
Resultado esperado:
Consultar los registros¶
Recuperar el servicio¶
Verificar la recuperación¶
Resultado esperado:
y una respuesta HTTP correcta del endpoint.
Comprobar el target en Prometheus¶
En la interfaz de Prometheus también puedes consultar:
El objetivo de Node Exporter debería volver a mostrar el valor:
Preguntas de la sesión¶
- ¿Qué resultado devolvió
systemctl is-active node_exportercuando el servicio estaba detenido? - ¿Qué ocurrió al consultar el puerto
9100? - ¿Qué respuesta devolvió
curl? - ¿Qué comando permitió recuperar el servicio?
- ¿Qué valor mostró la consulta
upantes y después de la recuperación?
Sesión práctica 4: localizar un fichero de configuración¶
En esta sesión se practicarán comandos de búsqueda y consulta de ficheros.
Objetivo¶
Localizar y consultar la configuración de Prometheus.
Buscar el fichero¶
Consultar el fichero¶
Si la ruta habitual existe:
Buscar los trabajos configurados¶
Buscar Node Exporter¶
Mostrar los permisos¶
Validar la configuración¶
Si promtool está instalado:
Resultado esperado:
Documentar el resultado¶
{
echo "Fichero:"
sudo find /etc -type f -name "prometheus.yml"
echo
echo "Trabajos configurados:"
sudo grep -n "job_name" /etc/prometheus/prometheus.yml
echo
echo "Permisos:"
sudo ls -l /etc/prometheus/prometheus.yml
} | tee configuracion-prometheus.txt
Sesión práctica 5: crear un informe de diagnóstico¶
Esta sesión integra varios comandos para elaborar un informe técnico.
Objetivo¶
Crear un informe que permita conocer el estado general del entorno.
Crear el script¶
Escribe el contenido siguiente:
#!/usr/bin/env bash
set -u
echo "===== DIAGNÓSTICO DEL ENTORNO ====="
echo "Fecha: $(date)"
echo
echo "===== SISTEMA ====="
hostname
lsb_release -ds
uname -r
uname -m
echo
echo "===== RED ====="
hostname -I
echo
echo "===== MEMORIA ====="
free -h
echo
echo "===== ALMACENAMIENTO ====="
df -h /
echo
echo "===== SERVICIOS ====="
for service in grafana-server prometheus node_exporter; do
printf "%-20s: " "$service"
systemctl is-active "$service" 2>/dev/null || true
done
echo
echo "===== PUERTOS ====="
sudo ss -lntp | grep -E ':(3000|9090|9100)\b' || true
echo
echo "===== ENDPOINTS ====="
for url in \
http://localhost:3000 \
http://localhost:9090 \
http://localhost:9100/metrics
do
printf "%-45s: " "$url"
curl -s -o /dev/null -w "%{http_code}\n" \
--max-time 5 "$url" || true
done
Conceder permiso de ejecución¶
Ejecutar el script¶
Guardar el resultado:
Revisar el informe¶
Mejoras propuestas¶
Añade al script:
- Comprobación de la configuración de Prometheus.
- Comprobación de la API de targets.
- Consulta del estado de Grafana.
- Fecha de la última modificación de los ficheros de configuración.
- Comprobación del espacio disponible en
/var/lib/prometheus.
Comandos relacionados con el laboratorio¶
Grafana¶
Consultar el estado:
Consultar los registros:
Comprobar la interfaz:
Prometheus¶
Consultar el estado:
Consultar los registros:
Comprobar la salud:
Comprobar los targets:
Node Exporter¶
Consultar el estado:
Consultar los registros:
Comprobar el endpoint:
Buscar una métrica concreta:
Resumen de comandos principales¶
| Necesidad | Comando |
|---|---|
| Usuario actual | whoami |
| Directorio actual | pwd |
| Versión de Ubuntu | lsb_release -ds |
| Información del sistema | hostnamectl |
| Memoria disponible | free -h |
| Espacio disponible | df -h |
| Procesos activos | ps aux |
| Puertos en escucha | sudo ss -lntp |
| Estado de un servicio | systemctl status servicio |
| Actividad de un servicio | systemctl is-active servicio |
| Registros de un servicio | journalctl -u servicio |
| Contenido de un fichero | cat fichero |
| Buscar texto | grep texto fichero |
| Buscar ficheros | find ruta -name nombre |
| Probar HTTP | curl -I URL |
| Seguir registros | journalctl -u servicio -f |
Puntos clave¶
pwdmuestra el directorio actual.ls -lamuestra todos los ficheros, incluidos los ocultos.cpcopia ficheros o directorios.mvmueve o renombra elementos.rmelimina ficheros; úsalo con precaución.grepbusca texto dentro de ficheros.findlocaliza ficheros y directorios.systemctlgestiona servicios.journalctlconsulta los registros desystemd.ssmuestra puertos y conexiones.curlpermite comprobar endpoints HTTP.sudoconcede permisos administrativos para un comando concreto.- Las tuberías
|permiten combinar comandos. teepermite visualizar y guardar una salida.- Los comandos de diagnóstico deben ejecutarse en un orden lógico.
- Una incidencia debe documentar el síntoma, la comprobación, la causa y la solución.
Preguntas de comprobación¶
- ¿Qué comando permite consultar el usuario actual?
- ¿Qué diferencia existe entre
pwdyls? - ¿Qué opción de
lspermite mostrar ficheros ocultos? - ¿Qué comando permite conocer la versión de Ubuntu?
- ¿Qué comando permite comprobar la memoria disponible?
- ¿Qué comando permite comprobar el espacio disponible en la raíz del sistema?
- ¿Qué diferencia existe entre
systemctl statusysystemctl is-active? - ¿Qué comando permite consultar los registros de Prometheus?
- ¿Qué comando permite comprobar si el puerto
9100está en escucha? - ¿Qué endpoint proporciona las métricas de Node Exporter?
- ¿Qué comando permite comprobar la salud de Prometheus?
- ¿Qué función cumple la tubería
|? - ¿Qué diferencia existe entre
>y>>? - ¿Por qué se debe utilizar
sudocon precaución? - ¿Qué pasos seguirías si Node Exporter no responde?
- ¿Qué resultado esperarías de
upcuando un target está disponible? - ¿Qué información debería incluir un informe de diagnóstico?
- ¿Qué comando utilizarías para seguir los registros de un servicio en tiempo real?