Optimización Recursos Sistema Linux
Archivos de Configuración y Scripts Comunes en Bash:
- ~/.bashrc:
- Ubicación: Directorio de inicio del usuario.
- Propósito: Configura el entorno del usuario cuando se abre una nueva terminal interactiva. Aquí puedes definir alias, funciones y variables de entorno.
- ~/.bash_profile o ~/.profile:
- Ubicación: Directorio de inicio del usuario.
- Propósito: Se ejecuta al iniciar una sesión de login. Se usa para configurar el entorno del usuario, establecer variables de entorno y ejecutar scripts al inicio de sesión.
- /etc/bash.bashrc:
- Ubicación: Sistema global.
- Propósito: Archivo de configuración que se aplica a todos los usuarios. Se ejecuta cada vez que un usuario abre una nueva terminal interactiva.
- /etc/profile:
- Ubicación: Sistema global.
- Propósito: Se ejecuta al iniciar una sesión de login para todos los usuarios. Configura el entorno y aplica ajustes globales para todas las sesiones de usuario.
- /etc/profile.d/:
- Ubicación: Sistema global.
- Propósito: Contiene scripts adicionales que se ejecutan al iniciar una sesión de login. Permite modularizar configuraciones globales en múltiples archivos.
- ~/.bash_logout:
- Ubicación: Directorio de inicio del usuario.
- Propósito: Se ejecuta cuando un usuario cierra una sesión de login. Se usa para realizar tareas de limpieza al salir, como borrar archivos temporales.
- /etc/rc.local:
- Ubicación: Sistema global.
- Propósito: Archivo de script que se ejecuta al final del proceso de arranque del sistema. Se utiliza para ejecutar comandos y scripts específicos al inicio del sistema.
- /etc/init.d/:
- Ubicación: Sistema global.
- Propósito: Contiene scripts de inicio y parada de servicios del sistema. Los scripts aquí son utilizados por el sistema init para administrar servicios y demonios.
- /etc/crontab:
- Ubicación: Sistema global.
- Propósito: Archivo de configuración para tareas programadas (cron jobs). Permite especificar comandos o scripts que deben ejecutarse en momentos específicos.
- /etc/cron.daily/, /etc/cron.weekly/, /etc/cron.monthly/:
- Ubicación: Sistema global.
- Propósito: Directorios que contienen scripts que se ejecutan diariamente, semanalmente o mensualmente mediante el servicio cron.
Aquí tienes algunos comandos y herramientas que te ayudarán a verificar el uso de recursos en tu servidor Linux:
Comandos bash utiles
- Top: Este comando te muestra una vista en tiempo real del uso de CPU y memoria. Puedes abrirlo simplemente escribiendo
top
en la terminal. - Htop: Es una versión mejorada de
top
con una interfaz más amigable. Puedes instalarlo consudo apt-get install htop
y luego ejecutarlo conhtop
. - Free: Este comando muestra la cantidad de memoria libre y utilizada. Puedes usarlo escribiendo
free -h
para obtener una salida más legible. - Vmstat: Proporciona estadísticas sobre el uso de memoria, CPU y otros recursos. Ejecútalo con
vmstat
. - Ps: Muestra información sobre los procesos en ejecución. Puedes usar
ps aux
para ver todos los procesos yps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem
para ordenarlos por uso de memoria1.
Estos comandos te ayudarán a identificar qué procesos están consumiendo más recursos y si necesitas ajustar algo en tu servidor.
Para comprobar la capacidad del disco duro, así como el espacio libre y ocupado, puedes usar varios comandos en Linux. Aquí te dejo algunos de los más útiles:
Comando df
El comando df
muestra el uso del espacio en el sistema de archivos. Utiliza la opción -h
para que la salida sea más legible (human-readable).
bash
df -h
Ejemplo de Salida:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 20G 15G 4.0G 80% /
udev 3.9G 0 3.9G 0% /dev
tmpfs 799M 1.2M 798M 1% /run
- Size: Capacidad total del sistema de archivos.
- Used: Espacio ocupado.
- Avail: Espacio libre disponible.
- Use%: Porcentaje de espacio utilizado.
- Mounted on: Punto de montaje.
Comando du
El comando du
muestra el uso de espacio en disco por archivos y directorios. Utiliza la opción -h
para que la salida sea más legible y --max-depth=1
para limitar la profundidad de la inspección.
du -h --max-depth=1 /ruta/a/tu/directorio
Ejemplo de Salida:
1.1G /home
9.5G /var
4.0G /usr
4.0K /tmp
16G /
Comando lsblk
El comando lsblk
muestra información sobre todos los dispositivos de bloque (discos duros, particiones) conectados al sistema.
lsblk
Ejemplo de Salida:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 20G 0 part /
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 20G 0 part [SWAP]
Comando ls -lh
El comando ls -lh
muestra el tamaño de los archivos y directorios en un formato legible.
ls -lh /ruta/a/tu/directorio
Ejemplo de Salida:
-rw-r--r-- 1 usuario usuario 1.1G Nov 30 12:00 archivo_grande
drwxr-xr-x 2 usuario usuario 4.0K Nov 30 12:00 directorio
Ejemplo de Uso:
Para añadir un alias en el archivo ~/.bashrc
, podrías añadir la siguiente línea:
bash
alias ll='ls -lah'
Esto define el alias ll
para ejecutar ls -lah
, que lista los archivos en un formato largo y detallado, incluyendo archivos ocultos.
Estos son algunos de los archivos y scripts más comunes escritos en Bash en un sistema Linux. Cada uno juega un papel importante en la configuración y automatización del sistema, permitiendo tanto a usuarios como a administradores personalizar su entorno y realizar tareas repetitivas de manera eficiente.
Resumen
df -h
: Uso general del espacio en el sistema de archivos.du -h --max-depth=1
: Uso de espacio en disco por archivos y directorios.lsblk
: Información sobre dispositivos de bloque y particiones.ls -lh
: Tamaño de archivos y directorios en formato legible.
Estos comandos te proporcionarán una visión completa de la capacidad de tu disco duro, el espacio ocupado y disponible, y te ayudarán a identificar qué está ocupando espacio en tu servidor.
El comando free
te muestra información sobre la memoria RAM de tu sistema, incluyendo cuánta está utilizada y cuánta está libre. Aquí tienes un desglose de cómo interpretar la salida del comando free -h
:
Ejemplo de Salida de free -h
:
total used free shared buff/cache available
Mem: 7.8G 6.5G 300M 200M 1.0G 1.0G
Swap: 2.0G 0.5G 1.5G
- total: La cantidad total de memoria RAM.
- used: La memoria actualmente en uso.
- free: La memoria no utilizada.
- shared: La memoria compartida entre procesos.
- buff/cache: La memoria utilizada por el sistema para buffers y cachés.
- available: La memoria disponible para nuevos procesos (esto incluye memoria libre más buffers y cachés que pueden ser liberados).
Limpiar Memoria RAM
Para liberar memoria RAM de procesos no vitales, puedes seguir estos pasos:
Paso 1: Identificar los Procesos que Consumen Más Memoria
Utiliza top
o htop
para identificar los procesos que están consumiendo más memoria.
top
O, si tienes htop
instalado:
htop
Busca los procesos que están usando más memoria (en la columna %MEM
).
Paso 2: Finalizar Procesos No Vitales
Una vez que hayas identificado los procesos que consumen más memoria, puedes terminarlos usando kill
. Por ejemplo, si identificas que un proceso con PID 1234 está consumiendo mucha memoria, puedes usar:
sudo kill -9 1234
Paso 3: Limpiar la Memoria Caché
Puedes liberar memoria caché utilizando el siguiente comando. Nota que esto no detendrá ningún proceso, simplemente liberará la memoria caché.
sudo sync; sudo sysctl -w vm.drop_caches=3
Paso 4: Configurar Swap
Si tu memoria RAM está siempre llena, considera ajustar tu espacio de intercambio (swap). Puedes verificar el uso de swap con free -h
y configurarlo con swapon
y swapoff
.
Paso 5: Automatizar la Gestión de Memoria
Puedes configurar scripts que monitoreen y gestionen la memoria RAM automáticamente. Hay herramientas como earlyoom
que pueden ayudar a evitar que tu sistema se quede sin memoria:
sudo apt-get install earlyoom
sudo systemctl enable earlyoom
sudo systemctl start earlyoom
Resumen de Comandos
- Ver uso de memoria:
free -h
- Identificar procesos que consumen memoria:
top
ohtop
- Finalizar procesos no vitales:
sudo kill -9 PID
- Liberar memoria caché:
sudo sync; sudo sysctl -w vm.drop_caches=3
- Configurar swap:
swapon
yswapoff
- Automatizar gestión de memoria:
earlyoom
Con estos pasos, deberías poder identificar y liberar memoria RAM para mejorar el rendimiento de tu servidor.
La memoria swap es una porción del disco duro que se utiliza como una extensión de la memoria RAM. Cuando la memoria RAM está llena, el sistema puede mover algunos datos a la memoria swap para liberar espacio en la RAM. Tener una memoria swap adecuada es importante para asegurar que tu sistema no se quede sin memoria, especialmente si tienes aplicaciones que consumen mucha memoria.
Cuánta Memoria Swap Necesitas
La cantidad de memoria swap que necesitas puede depender de varios factores, como la cantidad de RAM que tienes y el uso que le des al servidor. Aquí hay algunas recomendaciones generales:
- Para sistemas con hasta 2 GB de RAM: Swap igual al doble de la cantidad de RAM (2x RAM).
- Para sistemas con más de 2 GB de RAM: Swap igual a la cantidad de RAM o 4 GB, lo que sea mayor.
Verificar y Añadir Memoria Swap
Paso 1: Verificar el Estado de la Swap
Primero, verifica si tienes memoria swap activa y su tamaño:
sudo swapon --show
Si no ves ninguna salida, significa que no tienes memoria swap activa.
Paso 2: Crear un Archivo Swap
Puedes crear un archivo swap para añadir más espacio swap. Aquí te dejo los pasos para crear un archivo de 2 GB:
- Crear un archivo de swap:
sudo fallocate -l 2G /swapfile
Si fallocate
no está disponible, puedes usar dd
:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
2. Establecer permisos correctos:
sudo chmod 600 /swapfile
3. Configurar el archivo como swap:
sudo mkswap /swapfile
4. Activar el swap:
sudo swapon /swapfile
5. Verificar que el swap está activo:
sudo swapon --show
6. Hacer que el swap sea permanente (para que se active automáticamente al reiniciar): Añade la siguiente línea al archivo /etc/fstab
:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Paso 3: Ajustar los Parámetros de Swapiness (Opcional)
El «swappiness» determina con qué frecuencia el sistema utiliza la memoria swap. Puedes ajustar este parámetro para optimizar el uso de swap según tus necesidades:
- Verificar el valor actual de swappiness:
cat /proc/sys/vm/swappiness
2. Cambiar el valor de swappiness (por ejemplo, a 10):
sudo sysctl vm.swappiness=10
3. Hacer el cambio permanente: Añade la siguiente línea al archivo /etc/sysctl.conf
:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
Resumen
- Verificar swap activo:
sudo swapon --show
- Crear archivo swap:
sudo fallocate -l 2G /swapfile
osudo dd if=/dev/zero of=/swapfile bs=1M count=2048
- Configurar permisos:
sudo chmod 600 /swapfile
- Configurar como swap:
sudo mkswap /swapfile
- Activar swap:
sudo swapon /swapfile
- Hacer swap permanente: Añadir
/swapfile none swap sw 0 0
a/etc/fstab
- Ajustar swappiness:
sudo sysctl vm.swappiness=10
y añadirvm.swappiness=10
a/etc/sysctl.conf
Estos pasos te ayudarán a configurar y gestionar la memoria swap en tu servidor Linux, asegurando que tengas suficiente espacio para evitar problemas de memoria.
El valor de swappiness determina la tendencia del sistema operativo a usar la memoria swap en lugar de la RAM. Este valor está en un rango de 0 a 100.
Entendiendo Swappiness
- Swappiness = 0: El sistema evitará usar la memoria swap tanto como sea posible, solo usándola cuando la RAM esté completamente llena.
- Swappiness = 100: El sistema usará agresivamente la memoria swap, moviendo procesos inactivos a la swap para liberar RAM.
Valor por Defecto
El valor por defecto de swappiness en muchas distribuciones de Linux es 60. Esto significa que el sistema está bastante equilibrado, utilizando la swap cuando la RAM empieza a llenarse, pero no de manera agresiva.
Cuándo Ajustar Swappiness
Reducir a 10: Si prefieres que tu sistema use la RAM más agresivamente y solo recurra a la swap cuando realmente es necesario, puedes reducir el valor de swappiness a algo como 10. Esto es útil si tienes suficiente RAM y deseas minimizar el uso de swap, lo que puede ser más lento ya que está en disco.
sudo sysctl vm.swappiness=10
- Mantener 60: Si encuentras que tu sistema está manejando bien la memoria con el valor por defecto y no notas problemas de rendimiento, puedes dejarlo en 60. Es un buen punto medio que equilibra el uso de RAM y swap.
- Aumentar Swappiness: En sistemas con RAM limitada y donde los procesos tienden a usar mucha memoria, puede ser útil aumentar el valor de swappiness para asegurar que siempre haya algo de RAM libre. Pero esto generalmente no es necesario para la mayoría de los sistemas modernos.
Ajustar el Valor de Swappiness Permanentemente
Si decides cambiar el valor de swappiness, puedes hacerlo temporalmente con el comando anterior, pero para hacerlo permanente:
- Edita el archivo
sysctl.conf
:
sudo nano /etc/sysctl.conf
2. Añade la línea:
vm.swappiness=10
3. Guarda y cierra el archivo. Los cambios se aplicarán en el próximo reinicio, pero puedes aplicarlos inmediatamente con:
sudo sysctl -p
Resumen
- Swappiness 60 (defecto): Equilibrio entre usar RAM y swap.
- Swappiness 10: Menor uso de swap, más uso de RAM.
- Swappiness 100: Mayor uso de swap.
Si sientes que tu sistema tiene suficiente RAM y prefieres que use menos swap, reducir el valor a 10 puede ayudar a mejorar el rendimiento. Sin embargo, si no experimentas problemas con el valor por defecto, está bien dejarlo en 60.