ich muss die Laufzeit eines Programms ermitteln, sobald es geschlossen ist, und ich habe mir Folgendes ausgedacht
start=`date +"%M"`
while [ `pgrep vlc` ];do
echo vlcopen > /dev/null
done
stop=`date +"%M"`
[ $stop -lt $start ]&&time=$[ 60-$start+$stop ]||time=$[ $stop-$start ]
echo $time > time.txt
und es macht den Job, aber es ist sehr ineffizient und braucht viel Tassennutzung. Wie mache ich das effizienter?
Antwort1
Eine Möglichkeit besteht darin,time
Hinweis: Bash verfügt über ein Schlüsselwort. time
Wenn Sie dies tun:
time some command
dieser wird verwendet, SHELL_GRAMMAR: bash
Das, was time
man bei Männern findet, time
ist normalerweise so etwas wie/usr/bin/time
$ type -t time
keyword
Hauptpunkt bei der Verwendung dernicht bashZeit ist Funktionen wie -v
(GNU time
).
Siehe auch:Was bedeuten 'real', 'user' und 'sys' in der Ausgabe von time(1)?
Antwort2
Verwenden Sie dieBash SECONDS
-Variable:
SECONDS=0
# do stuff here, such as
sleep 5
duration=$SECONDS
echo "The stuff took $duration seconds to complete"
Die Effizienz wird gesteigert, da keine externen Prozesse mehr erstellt werden müssen.