En este tema, aprenderemos cómo interactuar con el sistema operativo utilizando Bash. Esto incluye la ejecución de comandos del sistema, la gestión de procesos, la obtención de información del sistema y la manipulación de configuraciones del sistema. Este conocimiento es crucial para automatizar tareas administrativas y para la creación de scripts que interactúan directamente con el sistema operativo.

Contenidos

Ejecución de Comandos del Sistema

Ejecución Básica de Comandos

En Bash, puedes ejecutar cualquier comando del sistema simplemente escribiéndolo en la línea de comandos. Por ejemplo:

ls -l

Este comando lista los archivos y directorios en el directorio actual con detalles adicionales.

Uso de $(...) para Capturar la Salida de Comandos

Puedes capturar la salida de un comando en una variable utilizando la sintaxis $(...). Por ejemplo:

current_date=$(date)
echo "La fecha y hora actual es: $current_date"

Ejecución Condicional de Comandos

Puedes ejecutar comandos condicionalmente utilizando operadores lógicos. Por ejemplo:

if [ -f /etc/passwd ]; then
    echo "El archivo /etc/passwd existe."
else
    echo "El archivo /etc/passwd no existe."
fi

Gestión de Procesos

Listar Procesos

Puedes listar los procesos en ejecución utilizando el comando ps. Por ejemplo:

ps aux

Este comando muestra una lista detallada de todos los procesos en ejecución.

Matar Procesos

Puedes terminar un proceso utilizando el comando kill seguido del ID del proceso (PID). Por ejemplo:

kill 1234

Para encontrar el PID de un proceso específico, puedes usar pgrep:

pgrep -f nombre_del_proceso

Ejecución en Segundo Plano

Puedes ejecutar un comando en segundo plano añadiendo & al final del comando. Por ejemplo:

sleep 60 &

Este comando ejecuta sleep 60 en segundo plano.

Obtención de Información del Sistema

Información del Sistema

Puedes obtener información detallada del sistema utilizando comandos como uname, df, y free. Por ejemplo:

uname -a
df -h
free -m

Información de la CPU y Memoria

Para obtener información sobre la CPU y la memoria, puedes usar los siguientes comandos:

lscpu
cat /proc/meminfo

Información de la Red

Para obtener información sobre la configuración de red, puedes usar:

ifconfig
ip a

Manipulación de Configuraciones del Sistema

Modificación de Archivos de Configuración

Puedes editar archivos de configuración del sistema utilizando editores de texto como nano, vi, o vim. Por ejemplo:

sudo nano /etc/hosts

Aplicación de Cambios de Configuración

Después de modificar archivos de configuración, es posible que necesites reiniciar servicios para aplicar los cambios. Por ejemplo:

sudo systemctl restart apache2

Ejercicios Prácticos

Ejercicio 1: Capturar y Mostrar Información del Sistema

Escribe un script que capture y muestre la siguiente información del sistema:

  • Nombre del sistema operativo
  • Versión del kernel
  • Espacio en disco disponible
  • Memoria libre

Solución:

#!/bin/bash

# Capturar información del sistema
os_name=$(uname -o)
kernel_version=$(uname -r)
disk_space=$(df -h / | grep / | awk '{print $4}')
free_memory=$(free -m | grep Mem | awk '{print $4}')

# Mostrar la información
echo "Nombre del sistema operativo: $os_name"
echo "Versión del kernel: $kernel_version"
echo "Espacio en disco disponible: $disk_space"
echo "Memoria libre: ${free_memory}MB"

Ejercicio 2: Monitorear y Terminar un Proceso

Escribe un script que monitoree un proceso específico y lo termine si está consumiendo más del 80% de la CPU.

Solución:

#!/bin/bash

# Nombre del proceso a monitorear
process_name="nombre_del_proceso"

# Obtener el PID del proceso
pid=$(pgrep -f $process_name)

# Monitorear el uso de CPU
cpu_usage=$(ps -p $pid -o %cpu=)

# Terminar el proceso si el uso de CPU es mayor al 80%
if (( $(echo "$cpu_usage > 80" | bc -l) )); then
    kill $pid
    echo "Proceso $process_name (PID: $pid) terminado debido a alto uso de CPU."
else
    echo "El uso de CPU del proceso $process_name (PID: $pid) es normal."
fi

Conclusión

En esta sección, hemos aprendido cómo interactuar con el sistema operativo utilizando Bash. Hemos cubierto la ejecución de comandos del sistema, la gestión de procesos, la obtención de información del sistema y la manipulación de configuraciones del sistema. Estos conocimientos son fundamentales para la administración del sistema y la automatización de tareas. En el próximo módulo, exploraremos cómo trabajar con herramientas externas como awk y sed para procesar y manipular datos de manera eficiente.

© Copyright 2024. Todos los derechos reservados