Bir terminal işleminin yürütme süresini nasıl ölçebilirim?


160

Komut satırı üzerinden çağırdığım bir işlemin yürütme süresini ölçmeye çalışıyorum (örneğin, işlemin ne kadar sürede biteceğini bulmak istiyorum). Bunu başaracak işlemi çağıran komuta ekleyebileceğim herhangi bir komut var mı?

Yanıtlar:


197

timeÖlçmek istediğiniz komuttan önce ekleyin . Örneğin: time ls.

Çıktı şöyle görünecek:

real    0m0.606s
user    0m0.000s
sys     0m0.002s

İlişkin açıklama real, userve sys(dan man time):

  • real: İşlem tarafından kullanılan gerçek gerçek (duvar saati) süre, saniye cinsinden.
  • user: İşlemin doğrudan (kullanıcı modunda), saniye cinsinden kullanıldığı toplam CPU saniye sayısı.
  • sys: Sistem tarafından, işlem adına (çekirdek modunda) saniye cinsinden kullanılan toplam CPU saniye sayısı.

1
Ne @ninjalj, size daha fazla bilgi sağlayabilir real, userve syssüreleri bu komut donduğu nelerdir?
Christopher Kyle Horton,

2
@ JacobVlijm Bu cevap o kadar da ayrıntılı değil. :) Yorumunuzda düzenleme yapabilir ve bunu yapabilirsiniz.
muru

1
Yerleşik olmayan bir sudo apt-get install timekabuk kullanıyorsanız , gerekebileceğini unutmayın time.
poolie

1
Bu Bash'in çıktısı olduğunu unutmayın timeyerleşiğini ama man timebir yürütülebilir hakkında olacaktır ( /usr/bin/timegelen timepaketin) ve çıkış farklı görünürdü. Ayrıca Bash'te, help timeyerleşiklere yardım için koşabilirsiniz .
wjandrea

Sürecin, işin tamamlandığı anlamına gelmediğine dikkat edin. Bir kopya temizleme sistemi tamponları için "zaman" geri döndükten sonra ek dakikalar alabilir (bununla birlikte ayrılmamış sistem zamanıyla).
ubfan1

43

Satır satır delta ölçümü için gnomon'u deneyin .

Zaman damgası bilgilerini başka bir komutun standart çıktısına hazırlamak için, moreutils ts gibi bir komut satırı yardımcı programıdır. Neyin uzun sürdüğünü gösteren tarihsel bir kayıt istediğiniz uzun süren işlemler için kullanışlıdır.

Herhangi bir şeyi gnomon'a pipetlemek, her satıra bir zaman damgası hazırlar ve bu satırın tampondaki son satır olduğunu gösterir - yani, sonraki satırın ne kadar sürdüğünü gösterir. Varsayılan olarak, gnomon her satır arasında geçen saniye gösterecektir, ancak bu yapılandırılabilir.

gnomon demosu


2
Bu oldukça kaygan.
Nathan Arthur

1
(Link yazım hatası, Neyse ki URL tamam). sudo npm i gnomon -gVarsa yükleyebilirsiniz npm. '\ R' kullanarak (aynı satırda kalarak) "ilerleme" satırlarına karşı ne kadar iyi çalıştığından emin değilsiniz: bu durumda, ayrı olanları değil, tek bir uzun satır olarak saymasını istiyorum.
Tomasz Gandor

bu yüzden onu Gnomon'a aktarıyoruz! bu kadar ?
Ciasto piekarz


8
date +"%T" && cp -r ./file  /destination/folder/here && date +"%T"

Terminalde bu komutu çalıştırmak size bir dosyayla başa çıkmak için toplam süre verecektir


Bu size süreyi değil başlangıç ​​zamanını ve bitiş zamanını verir.
wjandrea

Bu, bazı şartlar altında iyi bir cevap. Örneğin, aşağıdaki findkomut - 2>/dev/nullyönlendirmeden - çok sayıda Permission denied mesaj verir . Ancak, 2>/dev/nullbu komuta eklemek o komutun timebölümünü keser . Aşağıdakiler, iyi bir uzlaşma sağlar: tek çıktı olarak START="$(date +"%s")" && find 2>/dev/null / -path /mnt -prune -o -name "*libname-server-2.a*" -print; END="$(date +"%s")"; TIME="$((END - START))"; printf 'find command took %s sec\n' "$TIME"(örneğin) verilmesi /usr/lib/libname-server-2.a find command took 3 sec .
Victoria Stuart

Benim yorumumun bir eki: tabii ki, bu sayısız uyarıdan kaçınarak basitçe time sudo find / -path /mnt -prune -o -name "*libname-server-2.a*" -print(yani as sudo) koşabilirsiniz Permission denied.
Victoria Stuart,

4

Zaman zaman kendimi uygulamanın önyüklenmesi gibi bir eylemin ne kadar sürdüğünü saymak için bir kronometreye ihtiyacım var, bu durumda buradaki çözümlerin çoğu işe yaramaz.

Bunun için sw kullanmayı severim .

sw

Yüklemek

wget -q -O - http://git.io/sinister | sh -s -- -u https://raw.githubusercontent.com/coryfklein/sw/master/sw

kullanım

sw
 - start a stopwatch from 0, save start time in ~/.sw
sw [-r|--resume]
 - start a stopwatch from the last saved start time (or current time if no last saved start time exists)
 - "-r" stands for --resume

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.