Estoy escribiendo un guión de seguimiento. Lo estoy ejecutando en una máquina específica y funciona. Está previsto que se ejecute en varias máquinas Linux, no vinculadas a una única distribución.
Aquí están los comandos y los tratamientos relacionados que hago:
1) Uso de CPU:
top -bn 2 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}'
92%
93%
Registro ambos 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
Registrar tanto la memoria como el intercambio usado/total
3) Uso del disco:
df
(manteniendo solo las columnas 2 y 3, que son respectivamente el número total de bloques de 1024 bits y los bloques usados):
1K_blocks used_blocks
27740944 1996820
1931168 0
1941352 0
1941352 16904
1941352 0
508588 151576
388272 0
Comparo las sumas de ambas columnas para obtener el espacio total en disco.
4) Tiempo de actividad:
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 cadena y registre datos útiles.
¿Estos comandos darán exactamente la misma forma de salida independientemente de la distribución de Linux? De manera más general, ¿seguiría siendo válido un comando + tratamiento de datos en cualquier distribución?
Respuesta1
¿Estos comandos darán exactamente la misma forma de salida independientemente de la distribución de Linux?
Quizás, pero no puedes estar seguro de ello.
Hay cientos de distribuciones de Linux (DistroWatchcuenta 280 de ellos) y no se puede tener la garantía de que un guión escrito para uno funcionará - o funcionarácontinuarpara funcionar, en otro, especialmente si utiliza alguna opción o indicador que no sea POSIX.
Lo que debería hacer, en lugar de depender de la salida de los comandos, es tomar los datos directamente del /proc
pseudosistema de archivos.