Bash script kullanarak zaman komut
Bu kullanmak istiyorumzamanbir komutscript bashscript için geçen zamanı hesaplamak ve bir günlük dosyasına yazmak için. Ben sadece ihtiyaçgerçek zamanlıdeğil kullanıcı ve sys. Ayrıca düzgün bir biçimde ihtiyacımız var. e.g:00:00:00 00 (standart çıktı). Ben herhangi bir tavsiye takdir.
CEVAP
date
komut ve çalışma süreli olmak gerçekleştirmeden önce ve sonra geçerli saati almak için ve bu gibi fark hesaplayabilirsin:
#!/bin/bash
# Get time as a UNIX timestamp (seconds elapsed since Jan 1, 1970 0:00 UTC)
T="$(date %s)"
# Do some work here
sleep 2
T="$(($(date %s)-T))"
echo "Time in seconds: ${T}"
printf "Pretty format: d:d:d:d\n" "$((T/86400))" "$((T/3600$))" "$((T/60`))" "$((T`))""
Notlar: ((...)) $temel aritmetik için kullanılabilirbash- dikkat: bir eksi daha önce boşluk yok-bu komut satırı seçeneği olarak yorumlanabilir.
Ayrıca bakınız: http://tldp.org/LDP/abs/html/arithexp.html
DÜZENLEME:
Ayrıca, arama için sed bakmak ve üretilen çıktı ile gelen dizeleri ayıklamak isteyebilirsinizzaman.
DÜZENLEME:
Milisaniye zamanlama (örneğin aslında ama burada nanosaniye milisaniye için kesildi). date
sürümü %N
dosya desteği ve bash
çok sayıda destek gerekir.
# UNIX timestamp concatenated with nanoseconds
T="$(date %s%N)"
# Do some work here
sleep 2
# Time interval in nanoseconds
T="$(($(date %s%N)-T))"
# Seconds
S="$((T/1000000000))"
# Milliseconds
M="$((T/1000000))"
echo "Time in nanoseconds: ${T}"
printf "Pretty format: d:d:d:d.d\n" "$((S/86400))" "$((S/3600$))" "$((S/60`))" "$((S`))" "${M}"
YASAL UYARI:
Benim orijinal versiyonu " dedi
M="$((T00000000/1000000))"
ama bu görünüşe göre yeni sürüm bildiriliyor oysa bazı insanlar için işe yaramadı çünkü düzenlenmiştir. Kalan sadece kullanmak zorunda bence çünkü bu onaylamadım ama azınlıkta.
Sana hangisi uyarsa seç.
Biliyor script bir Bash komut dosyası ...
Bash kabuk komut getopts uzun kullanar...
Nasıl bir metin dosyasının ilk satırı ...
Başka bir Komut için Bash Script TÜM A...
Zaman aşımı gereksiz gecikme olmadan b...