¿Cómo muestra el comando "top" resultados en vivo?

9

¿Cómo puedo escribir un script de shell que muestre los resultados en tiempo real?

Algo así como el topcomando que actualiza los resultados después de algunos intervalos fijos de tiempo.

texto alternativo

Lazer
fuente
66
probablemente usando una cursesinterfaz ... pero creo que esta es más una pregunta de programación y pertenece a SO
xenoterracide

Respuestas:

7

Sería útil que fuera mucho más específico sobre lo que está tratando de hacer.

Aquí hay un ejemplo extremadamente simplista:

while true
do
    clear
    date
    sleep 1
done
Pausado hasta nuevo aviso.
fuente
13

puede usar el comando watch (1) para ejecutar su script a intervalos regulares:

watch -n 1 myscript.sh

Esto se ejecutará myscript.shcada 1 segundo limpiando la pantalla entre cada ejecución y con una marca de tiempo en la esquina. Puede usar la -dopción e incluso resaltará las diferencias en la salida por ejecución.

joshperry
fuente
Estaba pensando en cómo responder usando el reloj.
Kevin M
No tengo watch. ¿Podrías ser más específico? Que sistema operativo
Chris Page
2

La mayoría de esos datos generalmente se exponen en las primitivas del sistema de archivos virtual / proc. Cada proceso tiene una entrada en / proc en un directorio llamado PID. Entonces / proc / 5437 tendría las primitivas para el proceso 5437. Leer las primitivas allí y analizarlas adecuadamente te acercaría a lo que hace la parte superior.

Top realmente funciona llamando a funciones específicas que extraen esta información directamente del núcleo en lugar de extraerla de los archivos. Para hacer lo mismo desde bash, tendría que extraerlo del sistema de archivos virtual / proc o extraerlo de otras llamadas como a ps.

En cuanto al tiempo real, eso no es factible en el nivel de detalle que ofrece la parte superior. Puede reducir el tiempo lo suficiente como para que parezca en tiempo real, pero seguirá obteniendo intervalos de tiempo.

sysadmin1138
fuente
2

Erm, en caso de que esté mirando la topsalida durante más tiempo, y no solo para verificar si un programa está funcionando bien, sugiero usar htop .

Le brinda mucha información en tiempo real y es más fácil de controlar y administrar.

Puede cambiar el diseño de la salida, como gráficos de barras y columnas.

polemon
fuente
Creo que está preguntando cómo escribir una aplicación que realice encuestas a intervalos regulares, no específicamente sobre top u htop.
Chris
1

topusa maldiciones y lee el /procsistema de archivos

Recursividad
fuente
1
Excepto en sistemas que no tienen /proc. Otra forma de obtener la información es sysctl (8) / sysctl (3).
Chris Page