Introducción
Bienvenido al Laboratorio de Sistemas Operativos y Sistemas con Python, donde lo transportaremos a un futuro scenario de una colonia espacial. En esta era avanzada, la Tierra ha establecido un próspero asentamiento espacial en Marte, conocido como El Cuartel Ares. Tu papel es el de un pionero ciber-granjero, un miembro crítico de la colonia responsable de manejar los sistemas agrícolas automatizados del cuartel usando Python.
El objetivo de este laboratorio es crear robustos scripts de Python que interactúen con el sistema operativo para garantizar el funcionamiento sin problemas de la maquinaria agrícola y el software infraestructural subyacente. Realizarás tareas como la manipulación de archivos, el registro de datos y la automatización del sistema que son vitales para el sustento de la colonia. Entender la importancia de integrar Python con el sistema operativo para alcanzar objetivos del mundo real mientras se hace el scenario atractivo.
Configuración del Entorno
En este paso, configurarás tu entorno de proyecto, que es la base para nuestras operaciones de ciber-granja. Es esencial asegurar que las estructuras de directorios estén organizadas para mantener flujos de trabajo eficientes.
Abre un script de Python llamado ~/project/farm_operations/environment_check.py que verificará si todas las interfaces de maquinaria agrícola están en línea. Aquí hay una plantilla básica:
import os
def check_interfaces():
print("Checking machinery interfaces...")
## Example check (In reality, you would replace this with checks specific to your system)
os.system("ping -c 1 127.0.0.1")
if __name__ == "__main__":
check_interfaces()
Ejecuta tu script desde la terminal:
python3 environment_check.py
Deberías ver una salida que indique que se están verificando las interfaces de maquinaria, como:
Checking machinery interfaces...
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.018 ms
--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.018/0.018/0.018/0.000 ms
Monitoreo del Sistema
Después de verificar las interfaces, es esencial monitorear el rendimiento del sistema para prevenir cualquier interrupción en las operaciones. Para esto, registraremos métricas importantes del sistema para asegurarnos de que todo funcione de manera óptima.
Abre un script de Python llamado system_monitor.py dentro de farm_operations:
import os
def system_monitor():
print("Recording system metrics...")
os.system("top -b -n 1 > system_metrics.log")
if __name__ == "__main__":
system_monitor()
Este script ejecuta el comando top en modo batch para recopilar métricas del sistema y redirigirlas a un archivo de registro llamado system_metrics.log. Ejecuta el script:
$ python3 system_monitor.py
Recording system metrics...
Verifica el contenido de system_metrics.log para comprobar el registro exitoso de los datos del sistema:
$ cat system_metrics.log
top - 00:33:14 up 15 days, 14:22, 0 users, load average: 0.04, 0.07, 0.10
Tasks: 16 total, 1 running, 15 sleeping, 0 stopped, 0 zombie
%Cpu(s): 6.2 us, 0.0 sy, 0.0 ni, 93.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7802.7 total, 585.3 free, 3936.1 used, 3281.4 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 3555.6 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
216 labex 20 0 657480 56304 38872 S 6.7 0.7 0:00.63 node
1 root 20 0 11200 3780 3508 S 0.0 0.0 0:00.02 init.sh
21 root 20 0 40812 27976 10540 S 0.0 0.4 0:00.22 supervisord
22 root 20 0 15420 9396 7760 S 0.0 0.1 0:00.01 sshd
23 labex 20 0 2632 972 880 S 0.0 0.0 0:00.00 dumb-init
24 labex 20 0 721668 63708 38596 S 0.0 0.8 0:00.56 node
41 labex 20 0 951088 106276 41152 S 0.0 1.3 0:06.74 node
167 labex 20 0 994340 134536 41504 S 0.0 1.7 0:07.99 node
189 labex 20 0 848976 51504 38352 S 0.0 0.6 0:00.18 node
233 labex 20 0 14392 6488 4604 S 0.0 0.1 0:00.37 zsh
403 labex 20 0 377336 70216 11228 S 0.0 0.9 0:02.21 python
430 labex 20 0 38268 25560 9832 S 0.0 0.3 0:00.17 python
435 labex 20 0 14396 6588 4652 S 0.0 0.1 0:00.17 zsh
863 labex 20 0 21156 9408 6076 S 0.0 0.1 0:00.01 python
864 labex 20 0 11200 3652 3388 S 0.0 0.0 0:00.00 sh
865 labex 20 0 14176 3576 3220 R 0.0 0.0 0:00.00 top
Verás una salida similar al comando top dentro de la terminal.
Resumen
En este laboratorio, navegamos por un escenario donde el módulo os_system de Python tuvo un papel crucial en la administración de las operaciones agrícolas de una colonia espacial. Comenzando con la configuración del entorno hasta el monitoreo del sistema, el objetivo del laboratorio fue impartir habilidades prácticas en la creación de scripts que manipulan e interactúan con el sistema operativo. Al diseñar este laboratorio de manera integral, hice hincapié en la importancia de Python en aplicaciones del mundo real y tuve como objetivo brindar una experiencia de aprendizaje atractiva para los principiantes. Presenciar a los aprendices convertir estos escenarios en código funcional produce una sensación de logro gratificante.



