Çalışan bir işlemin duvar saati süresini nasıl alabilirim?


14

Büyük bir dosyanın karma denetimini başlattım ve kullanarak yeniden başlatmak istemiyorum time. dateKomutu çağırmadan önce başlangıçta veya hemen kullanmadan duvar saati süresini nasıl alabilirim ?

Yanıtlar:


12

Çalışan bir işlem için şunları yapabilirsiniz:

PID=5462
command ps -p "$PID" -o etime
command ps -p "$PID" --no-headers -o etime

Genel bir özellik olarak kabuk isteminizi değiştirebilirsiniz. Bu benim bash istem tanımı:

TERM_RED_START=$'\033[1m\033[31m'
TERM_RED_END=$'\033(B\033[m'
PS1='\nec:$(ec=$?; if [ 0 -eq $ec ];
then printf %-3d $ec;
else echo -n "$TERM_RED_START"; printf %-3d $ec; echo "$TERM_RED_END";
fi) \t  \u@\h:\w\nstart cmd:> '
PS2="cont. cmd:> "

Sizin için ilgili kısım \t, zaman için.

Ancak bu tüm sorunları çözmez. Yeni bilgi istemi işlemin ne zaman sona erdiğini gösterecektir, ancak ölçülecek komut başlatıldığında eski bilgi istemi oldukça eski olabilir. Bu nedenle, uzun süren komutlara başlamadan önce istemi yenilemeyi ya da geçerli işlemin ne kadar süreceğini bilmek istediğiniz zamanı hatırlamanız gerekir.

Eksiksiz bir çözüm için bir denetim özelliğine ihtiyacınız vardır (süreçlerin başlangıç ​​ve bitiş saatlerini kaydeder). Ancak bu, kabukla sınırlandırılamazsa büyük miktarda veriye neden olabilir.


1

Kabul edilen cevaba dayanarak, çalışan bir işlemin geçen süresini sürekli olarak aşağıdakileri kullanarak da izleyebilirsiniz watch:

PID=5462
watch command ps -p "$PID" -o etime
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.