tolong, tulis tujuan yang ingin Anda capai. untuk mengukur skrip waktu kerja gunakan timeperintah (waktu ./script.sh), untuk mencetak dateperintah waktu saat ini gunakan dan sebagainya.
Anda dapat menggunakan timeperintah bawaan Linux . Dari halaman manual:
waktu PERINTAH [argumen]
waktu menentukan informasi yang akan ditampilkan tentang sumber daya yang digunakan oleh PERINTAH dari string FORMAT. Jika tidak ada format yang ditentukan pada baris perintah, tetapi variabel lingkungan TIME diatur, nilainya digunakan sebagai format.
Saya menyadari ini adalah pertanyaan yang cukup lama tetapi ini adalah cara saya melakukannya untuk apa pun ketika saya ingin / perlu tahu berapa lama sesuatu berjalan.
Bash memiliki penghitung waktu bawaan dalam bentuk variabel internal bernama SECONDS(lihat: di sini untuk variabel internal lainnya)
Taruh SECONDS=0sebelum apa pun yang Anda periksa waktu menjalankan. Perlu setelah input pengguna apa pun untuk mendapatkan hasil yang baik jadi jika Anda meminta informasi, letakkan setelah prompt.
Lalu, letakkan ini di akhir yang Anda periksa:
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
Jika Anda hanya ingin mengetahui waktu dalam hitungan detik, Anda dapat menyederhanakan hal di atas menjadi:
echo "Completed in $SECONDS seconds"
Sebagai contoh:
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
Pintasan untuk mereka yang tidak menginginkan format waktu yang rumit: date +%T -d "1/1 + $SECONDS sec"(terbatas hingga kurang dari 24 jam, tetapi Anda juga dapat beradaptasi untuk menambah hari)
time
perintah (waktu ./script.sh), untuk mencetakdate
perintah waktu saat ini gunakan dan sebagainya.time yourprogram.sh
:, itulah yang dijelaskan oleh @Marius CotofanaJawaban:
Jika Anda menginginkan durasinya dalam hitungan detik, gunakan di bagian atas
dan pada akhirnya
sumber
Anda dapat menggunakan
time
perintah bawaan Linux . Dari halaman manual:Untuk menentukan waktu
cleanup.sh
skrip, gunakan:sumber
time
Anda menggunakan. hackernoon.com/...Saya menyadari ini adalah pertanyaan yang cukup lama tetapi ini adalah cara saya melakukannya untuk apa pun ketika saya ingin / perlu tahu berapa lama sesuatu berjalan.
Bash memiliki penghitung waktu bawaan dalam bentuk variabel internal bernama
SECONDS
(lihat: di sini untuk variabel internal lainnya)Taruh
SECONDS=0
sebelum apa pun yang Anda periksa waktu menjalankan. Perlu setelah input pengguna apa pun untuk mendapatkan hasil yang baik jadi jika Anda meminta informasi, letakkan setelah prompt.Lalu, letakkan ini di akhir yang Anda periksa:
Jika Anda hanya ingin mengetahui waktu dalam hitungan detik, Anda dapat menyederhanakan hal di atas menjadi:
Sebagai contoh:
sumber
date +%T -d "1/1 + $SECONDS sec"
(terbatas hingga kurang dari 24 jam, tetapi Anda juga dapat beradaptasi untuk menambah hari)sumber
@anask lakukan solusi cerdas untuk jawaban ini, hanya saya rekomendasikan untuk menggunakan yang asli
$SECONDS
sebagai gantinya untuk membuat yang baruTujuan dari
printf
dan divisi ini adalah untuk mengkonversi detik yang telah berlalu menjadi Jam kesatuan, Menit, Menit, yang terkait.sumber