napisz cel, który chcesz osiągnąć. do pomiaru timekomendy użycia czasu pracy skryptu (czas ./script.sh), do wydrukowania datekomendy użycia czasu pracy itd.
Możesz użyć wbudowanego timepolecenia Linuksa . Ze strony podręcznika:
czas POLECENIE [argumenty]
czas określa, które informacje mają być wyświetlane o zasobach używanych przez polecenie, z ciągu FORMAT. Jeśli w wierszu komend nie podano żadnego formatu, ale ustawiona jest zmienna środowiskowa TIME, jej wartość jest używana jako format.
Zdaję sobie sprawę, że jest to dość stare pytanie, ale w ten sposób robię to dla wszystkiego, kiedy chcę / muszę wiedzieć, ile czasu zajęło uruchomienie.
Bash ma wbudowany licznik sekund w postaci wewnętrznej zmiennej o nazwie SECONDS(patrz: tutaj dla innych zmiennych wewnętrznych)
Umieść SECONDS=0przed tym, co sprawdzasz, czas działania. Aby uzyskać dobry wynik, musi nastąpić po każdym wprowadzeniu przez użytkownika, więc jeśli monitujesz o informacje, umieść je po znaku zachęty.
Następnie umieść to na końcu tego, co sprawdzasz:
if(( $SECONDS >3600));then
let "hours=SECONDS/3600"
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $hours hour(s), $minutes minute(s) and $seconds second(s)"elif(( $SECONDS >60));then
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $minutes minute(s) and $seconds second(s)"else
echo "Completed in $SECONDS seconds"fi
Jeśli chcesz poznać czas w sekundach, możesz uprościć powyższe, aby:
echo "Completed in $SECONDS seconds"
Jako przykład:
read -rp "What's your name? ""name"
SECONDS=0
echo "Hello, $name"if(( $SECONDS >3600));then
let "hours=SECONDS/3600"
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $hours hour(s), $minutes minute(s) and $seconds second(s)"elif(( $SECONDS >60));then
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $minutes minute(s) and $seconds second(s)"else
echo "Completed in $SECONDS seconds"fi
Skrót dla tych, którzy nie chcą tak skomplikowanego formatowania czasu: date +%T -d "1/1 + $SECONDS sec"(ograniczony do mniej niż 24 godzin, ale możesz również dostosować, aby dodać dni)
time
komendy użycia czasu pracy skryptu (czas ./script.sh), do wydrukowaniadate
komendy użycia czasu pracy itd.time yourprogram.sh
:, że @Marius Cotofana wyjaśniłOdpowiedzi:
Jeśli chcesz czas trwania w sekundach, na najwyższym poziomie
i na koniec
źródło
Możesz użyć wbudowanego
time
polecenia Linuksa . Ze strony podręcznika:Aby zmierzyć czas
cleanup.sh
skryptu, użyj:źródło
time
którego używasz. hackernoon.com/…Zdaję sobie sprawę, że jest to dość stare pytanie, ale w ten sposób robię to dla wszystkiego, kiedy chcę / muszę wiedzieć, ile czasu zajęło uruchomienie.
Bash ma wbudowany licznik sekund w postaci wewnętrznej zmiennej o nazwie
SECONDS
(patrz: tutaj dla innych zmiennych wewnętrznych)Umieść
SECONDS=0
przed tym, co sprawdzasz, czas działania. Aby uzyskać dobry wynik, musi nastąpić po każdym wprowadzeniu przez użytkownika, więc jeśli monitujesz o informacje, umieść je po znaku zachęty.Następnie umieść to na końcu tego, co sprawdzasz:
Jeśli chcesz poznać czas w sekundach, możesz uprościć powyższe, aby:
Jako przykład:
źródło
date +%T -d "1/1 + $SECONDS sec"
(ograniczony do mniej niż 24 godzin, ale możesz również dostosować, aby dodać dni)źródło
@ anask zrobić sprytne rozwiązanie dla tej odpowiedzi, po prostu polecam użyć natywnego
$SECONDS
zamiast tego, aby utworzyć noweCelem podziału
printf
i podziału jest przeliczenie upływających sekund na odpowiadające im godziny, minuty, sekundy, odpowiednio.źródło