Respuestas:
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
puede usar el comando watch (1) para ejecutar su script a intervalos regulares:
watch -n 1 myscript.sh
Esto se ejecutará myscript.sh
cada 1 segundo limpiando la pantalla entre cada ejecución y con una marca de tiempo en la esquina. Puede usar la -d
opción e incluso resaltará las diferencias en la salida por ejecución.
watch
. ¿Podrías ser más específico? Que sistema operativo
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.
Erm, en caso de que esté mirando la top
salida 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.
top
usa maldiciones y lee el /proc
sistema de archivos
/proc
. Otra forma de obtener la información es sysctl (8) / sysctl (3).
curses
interfaz ... pero creo que esta es más una pregunta de programación y pertenece a SO