Python: Sistema Operacional e Monitoramento de Sistemas

PythonBeginner
Pratique Agora

Introdução

Bem-vindo ao Laboratório de Sistema Operacional e Sistema Python, onde o transportaremos para o cenário futurista de uma colônia espacial. Nesta era avançada, a Terra estabeleceu um próspero assentamento espacial em Marte, conhecido como Ares Outpost. Seu papel é o de um cyber-agricultor pioneiro, um membro crucial da colônia responsável por gerenciar os sistemas agrícolas automatizados do posto avançado usando Python.

O objetivo deste laboratório é criar scripts Python robustos que interagem com o sistema operacional para garantir o bom funcionamento das máquinas agrícolas e do software de infraestrutura subjacente. Você realizará tarefas como manipulação de arquivos, registro de dados (data logging) e automação do sistema, que são vitais para a sustentação da colônia. Compreenda a importância de integrar Python com o sistema operacional para atingir objetivos do mundo real, tornando o cenário envolvente.

Configurando o Ambiente

Nesta etapa, você configurará o ambiente do seu projeto, que forma a base para nossas operações de cyber-agricultura. Garantir que as estruturas de diretórios estejam organizadas é essencial para manter fluxos de trabalho eficientes.

Abra um script Python chamado ~/project/farm_operations/environment_check.py, que verificará se todas as interfaces das máquinas agrícolas estão online. Aqui está um modelo básico:

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()

Execute seu script a partir do terminal:

python3 environment_check.py

Você deve ver uma saída indicando que as interfaces das máquinas estão sendo verificadas, 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

Monitoramento do Sistema

Após verificar as interfaces, é essencial monitorar o desempenho do sistema para evitar qualquer interrupção nas operações. Para isso, registraremos métricas importantes do sistema para garantir que tudo funcione de forma otimizada.

Abra um script Python chamado 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 executa o comando top em modo batch para coletar métricas do sistema e redirecioná-las para um arquivo de log chamado system_metrics.log. Execute o script:

$ python3 system_monitor.py
Recording system metrics...

Verifique o conteúdo de system_metrics.log para verificar o registro bem-sucedido dos dados do 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: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

Você verá uma saída semelhante ao comando top dentro do terminal.

Resumo

Neste laboratório, navegamos por um cenário onde o módulo os_system do Python desempenhou um papel crucial na administração das operações agrícolas de uma colônia espacial. Começando com a configuração do ambiente até o monitoramento do sistema, o laboratório teve como objetivo transmitir habilidades práticas na criação de scripts que manipulam e interagem com o sistema operacional. Ao projetar holisticamente este laboratório, enfatizei a importância do Python em aplicações do mundo real e procurei proporcionar uma experiência de aprendizado envolvente para iniciantes. Testemunhar os alunos convertendo esses cenários em código funcional traz uma sensação de realização gratificante.