Considero que la salida del comando shell top
es una forma simple y familiar de tener una idea aproximada de la salud de una máquina. Me gustaría servir top
la salida (o algo muy similar) de un pequeño servidor web en una máquina para propósitos de monitoreo.
¿Hay alguna manera de llegar arriba para escribir su salida de texto exactamente una vez , sin formatear caracteres? He intentado esto:
(sleep 1; echo 'q') | top > output.txt
Esto parece estar cerca de lo que quiero, excepto que (1) no hay garantía de que no obtendré más o menos una pantalla llena de información y (2) tengo que eliminar todos los caracteres de formato del terminal.
¿O hay algún otro top
comando similar que enumera tanto la memoria de la máquina como el nivel de proceso / uso de CPU / información de tiempo de actividad?
(Idealmente, me encantaría una estrategia que sea portátil tanto para Linux como para Mac OS X, ya que nuestros desarrolladores usan Macs y nuestro entorno de producción es Linux).
fuente
top
en OS X soportara el indicador -b. :-( Lamentablemente, no lo hace, y no veo una versióntop
disponible a través de homebrew. Esta parece ser la respuesta correcta para Linux, aunque./usr/bin/top -l 1
en OSX 10.9.4 es perfecto ... ¡gracias! En cuanto a la instalación de GNU top, podría instalarlo en mi máquina, pero tendría que convencer a los otros desarrolladores para que lo instalen en sus máquinas para que mi código funcione para ellos, así que prefiero evitarlo. (Si no está disponible a través de homebrew, habrá resistencia.) Ahora que voy a cambiar según la plataforma, voy a ser codicioso ... ¿conoces algún semi-equivalente de Windows, así que esos desarrolladores (tenemos algunos) también pueden tener una página de estado en bruto? (Si no, está bien, ¡tu respuesta ya es súper útil!)top -l 2
y tirar la primera página de muestras?Para obtener números de tipo similares de un sistema Windows, querrás echar un vistazo a powershell.
Solo para obtener una lista de procesos y mirar
get-process
. Echa un vistazo a esta referencia .Al hacer algunas búsquedas más, encontré un pequeño comando agradable aquí .
Lo que si saca del bucle while presentado, para sus necesidades sería:
ps
en powershell es un alias paraget-process
.fuente