Estou escrevendo um script de monitoramento. Estou executando-o em uma máquina específica e funciona. Está planejado para ser executado em várias máquinas Linux, não vinculado a uma única distribuição.
Aqui estão os comandos e os tratamentos relacionados que faço:
1) Uso da CPU:
top -bn 2 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}'
92%
93%
Eu registro os dois valores.
2) Uso de RAM
free -m
_____total used free shared buff/cache available <br>
Mem 3791 1183 875 16 1732 2326 <br>
Swap 3071 0 3071
Registre a memória e a troca usada/total
3) Uso do disco:
df
(mantendo apenas as colunas 2 e 3, que são respectivamente o número total de blocos de 1024 bits e os blocos usados):
1K_blocks used_blocks
27740944 1996820
1931168 0
1941352 0
1941352 16904
1941352 0
508588 151576
388272 0
Comparo as somas das duas colunas para obter espaço geral em disco.
4) Tempo de atividade:
PS C:\> invoke-sshcommand -ComputerName $ip {uptime}
09:39:01 up 13 days, 21:37, 1 user, load average: 0,00, 0,01, 0,05
Corte esta string e registre dados úteis.
Esses comandos fornecerão exatamente a mesma forma de saída, independentemente da distribuição do Linux? De forma mais geral, um tratamento de comando + dados ainda seria válido em qualquer distribuição?
Responder1
Esses comandos fornecerão exatamente a mesma forma de saída, independentemente da distribuição do Linux?
Talvez, mas você não pode ter certeza disso.
Existem centenas de distribuições Linux (DistroWatchconta 280 deles) e você não pode ter a garantia de que um script escrito para alguém funcionará - ou funcionarácontinuarpara funcionar - em outro, especialmente se usar alguma opção ou sinalizador não POSIX.
O que você deve fazer, em vez de depender da saída dos comandos, é obter os dados diretamente do /proc
pseudo sistema de arquivos.