Risposte:
Sarebbe utile se tu fossi molto più specifico su ciò che stai cercando di fare.
Ecco un esempio estremamente semplicistico:
while true
do
clear
date
sleep 1
done
puoi usare il comando watch (1) per eseguire lo script a intervalli regolari:
watch -n 1 myscript.sh
Questo verrà eseguito myscript.sh
ogni 1 secondo cancellando lo schermo tra ogni corsa e con un timestamp nell'angolo. È possibile utilizzare l' -d
opzione e evidenzierà anche le differenze nell'output per esecuzione.
watch
. Potresti essere più specifico? Quale sistema operativo?
La maggior parte di questi dati è generalmente esposta nelle primitive del file system virtuale / proc. Ogni processo ha una voce in / proc in una directory chiamata PID. Quindi / proc / 5437 avrebbe le basi per il processo 5437. Leggere le primitive lì e analizzarle in modo appropriato sarebbe ancora vicino a ciò che fa la cima.
Top funziona effettivamente chiamando chiamate di funzione specifiche che estraggono queste informazioni direttamente dal kernel invece di estrarle dai file. Per fare lo stesso da bash dovresti estrarlo dal file system virtuale / proc o estrarlo da altre chiamate come ps
.
Per quanto riguarda il tempo reale, ciò non è del tutto fattibile a livello di dettaglio fornito da top. Puoi dividere il tempo abbastanza bene da sembrare in tempo reale, ma otterrai comunque intervalli di tempo.
Ehm, nel caso tu stia guardando l' top
output per un tempo più lungo, e non solo per verificare se un programma sta andando bene, ti suggerisco di usare htop .
Ti dà molte informazioni in tempo reale ed è più facile da controllare e gestire.
È possibile modificare il layout dell'output, ad esempio grafici a barre e colonne.
top
usa maledizioni e legge il /proc
file system
/proc
. Un altro modo per ottenere le informazioni è sysctl (8) / sysctl (3).
curses
un'interfaccia ... ma penso che questa sia più una domanda di programmazione e appartiene a SO