Volver al blog
Proyectos5 min

ArchSetup System Monitor: Monitor de Sistema para Arch Linux

Conrado Gómez

ArchSetup System Monitor es una herramienta CLI escrita en C que desarrollé para Arch Linux. Proporciona información detallada del sistema con una interfaz colorida en terminal, nacida de la necesidad de tener un monitor más personalizado y ligero que las alternativas existentes.

Capturas de Pantalla

Monitor de sistema en acción

Monitor de sistema en acción

Vista detallada de procesos

Vista detallada de procesos

El Problema

Los monitores de sistema tradicionales como htop o neofetch son excelentes, pero:

  • Algunos muestran información genérica sin personalización
  • Otros consumen recursos innecesarios para tareas simples
  • No todos permiten modo watch con intervalo personalizable
  • La mayoría no ofrece opciones modulares para mostrar solo lo necesario

ArchSetup System Monitor resuelve esto siendo minimalista, rápido y altamente configurable.

Características Principales

1. Información de CPU Detallada

  • Modelo del procesador: Leído desde /proc/cpuinfo
  • Número de núcleos: Físicos y lógicos
  • Uso por núcleo: Porcentaje individual de cada core
  • Temperatura: Lectura desde /sys/class/thermal/

2. Memoria RAM y SWAP

Muestra información detallada con barras de progreso visuales:

  • Total, usado, disponible y libre
  • Porcentaje de uso con colores dinámicos
  • Información de SWAP si está activada
  • Barras de progreso ASCII para visualización rápida

3. Uptime del Sistema

Muestra el tiempo que lleva encendido el sistema en formato legible (días, horas, minutos).

4. Estadísticas de Disco

Información del filesystem raíz:

  • Espacio total, usado y disponible
  • Porcentaje de uso
  • Lectura mediante statvfs()

5. Top Procesos

Muestra los 5 procesos que más consumen:

  • CPU: Procesos con mayor uso de procesador
  • Memoria: Procesos con mayor consumo de RAM
  • Incluye PID, nombre y porcentaje de uso

Interfaz Colorida con Códigos ANSI

ArchSetup utiliza códigos de color ANSI para una visualización clara:

  • ● Verde: Uso normal (< 60%)
  • ● Amarillo: Uso moderado (60-80%)
  • ● Rojo: Uso alto (> 80%)
  • ● Azul: Información de CPU
  • ● Magenta: Información de memoria

Modos de Uso

Modo Normal

# Mostrar toda la información
ArchSetup

# Solo CPU
ArchSetup --cpu

# Solo memoria
ArchSetup --memory

# Combinaciones
ArchSetup --cpu --memory --processes

Modo Watch (Actualización Continua)

# Actualizar cada 2 segundos
ArchSetup --watch

# Watch solo con CPU y memoria
ArchSetup --watch --cpu --memory

Lectura de Fuentes del Sistema

ArchSetup lee información directamente desde el filesystem de Linux:

  • /proc/cpuinfo: Modelo e información del CPU
  • /proc/stat: Estadísticas de uso de CPU
  • /proc/meminfo: Información de memoria RAM/SWAP
  • /proc/uptime: Tiempo de ejecución del sistema
  • /sys/class/thermal/: Temperatura del CPU
  • /proc/[pid]/: Información de procesos individuales
  • statvfs(): Estadísticas del filesystem

Stack Tecnológico

  • Lenguaje: C (C99 standard)
  • Compilador: GCC
  • Build System: Makefile personalizado
  • Dependencias: Solo bibliotecas estándar de C
  • Sistema Objetivo: Linux (optimizado para Arch)

Instalación

# Clonar repositorio
git clone https://github.com/OOMrConrado/ArchSetup
cd ArchSetup

# Compilar
make

# Instalación local (sin sudo)
./install_local.sh
source ~/.bashrc

# Uso
ArchSetup

Estructura del Proyecto

  • main.c - Programa principal y parseo de argumentos
  • sysmon.h - Definiciones y estructuras de datos
  • sysmon.c - Funciones de visualización
  • cpu_info.c - Lectura de información de CPU
  • memory_info.c - Lectura de memoria desde /proc/meminfo
  • system_info.c - Uptime, disco y procesos
  • Makefile - Compilación y tareas
  • install_local.sh - Script de instalación local

💡 Desafío Técnico Resuelto

El mayor reto fue calcular el uso de CPU por núcleo de forma eficiente. La solución fue leer /proc/stat dos veces con un intervalo, calcular la diferencia de jiffies y aplicar la fórmula: uso = 100 * (1 - idle_delta / total_delta). Esto permite obtener porcentajes precisos sin consumir recursos del sistema.

Personalización

El código está diseñado para ser fácilmente personalizable:

  • Colores: Modificar defines en sysmon.h
  • Intervalos: Cambiar tiempo de actualización en main.c
  • Formato: Ajustar funciones de display en sysmon.c
  • Métricas adicionales: Agregar nuevas fuentes de datos

Comparación con Alternativas

HerramientaProsContras
ArchSetupLigero, modular, personalizableSolo para Linux
htopInteractivo, maduroMás pesado, menos personalizable
neofetchBonito, informativoNo interactivo, sin watch mode

Roadmap Futuro

  • ✅ Monitor completo de sistema (CPU, RAM, disco, procesos)
  • ✅ Modo watch con actualización continua
  • ✅ Opciones modulares para mostrar información específica
  • 🔄 Soporte para múltiples discos
  • 📋 Exportar métricas a archivo log
  • 🌐 Información de red (interfaces, tráfico)
  • 🔧 Soporte para otras distribuciones Linux

Enlaces del Proyecto

ArchSetup System Monitor es perfecto para usuarios de Linux que buscan una herramienta ligera, rápida y personalizable para monitorear su sistema. ¡Contribuciones bienvenidas!

Tags:#C#Linux#Sistemas#CLI

¿Te gustó este artículo?

Descubre más artículos sobre QA, Testing, Scrum y mejores prácticas de desarrollo.

Ver todos los artículos

© 2025 Conrado Gómez. All rights reserved.

Conrado Gómez | Software Developer