Esses comandos retornarão a mesma saída em diferentes distribuições Linux?

Esses comandos retornarão a mesma saída em diferentes distribuições Linux?

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 /procpseudo sistema de arquivos.

informação relacionada