SORU
10 EYLÜL 2010, Cuma


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
10 EYLÜL 2010, Cuma


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ç.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Deany Boii

    Deany Boii

    27 Kasım 2007
  • Harvest: Greg Laurie

    Harvest: Gre

    6 HAZİRAN 2006
  • SRI International

    SRI Internat

    30 NİSAN 2008