Bir işlem bittikten sonra ne kadar sürdüğü nasıl kontrol edilir?


14

Şu anda bir işlemin ne kadar süredir çalıştığını kontrol etmek için aşağıdakileri kullanıyorum:

ps -eo uid,pid,etime | egrep '^ *MY_ID' | egrep 'PID_OF_PROCESS'

Ve bu aşağıdakileri çıkarır:

MY_ID PID_OF_PROCESS       00:16

Ancak, süreç bittikten sonra bunun ne kadar sürdüğünü öğrenmek istiyorum ama bu bilgiyi bulamıyorum.

Yanıtlar:


15

Süreç bittikten sonra böyle bir bilgi edinmenin mümkün olduğunu düşünmüyorum.

Önceden bu bilgilere ihtiyacınız olacağını biliyorsanız, komutu şu şekilde çalıştırabilirsiniz:

time <command>

Örneğin

~> time sleep 1

real        0m1.003s
user        0m0.002s
sys         0m0.001s

7

Unix değişkeninizin işlem muhasebesini destekleyip desteklemediğini kontrol edin . Örneğin, Ubuntu'da (ve diğer birçok Linux dağıtımında) bu, Install acct http://bit.ly/software-small acctpaketi tarafından sağlanır . Muhasebe alt sistemi çalışıyor ve çalışıyorsa, ne kadar işlemci süresi kullandıkları da dahil olmak üzere bitmiş işlemler hakkında bilgi gösterir (duvar saati süresi kaydedilmez).lastcomm

Belirli bir program için zamanlamaya ihtiyacınız varsa, programı çalıştırıntime .

Daha kesin bilgiye ihtiyacınız varsa, daha ince bir denetim paketi kullanın, örneğin Linux altındaki denetim alt sistemi .


Bu cevap imajını kaybetti.
mattdm

Ah @mattdm, bağlantı var idi standart Ask Ubuntu bağlantı içeren apt.ubuntu.comve sonra görüntü imgur silinir gördü. Ben SE genelinde yüzlerce kez kullanılmış olmalı ve hepsini düzenleme umudu sevmiyorum. Hala SE için tüm Java belgeleri taşındığında bile yapmadıkları için yapmazlar otomatik bir yedek yapmak için bekliyorum.
Gilles 'SO- kötü'

1

Bu soruları ve cevaplarını görmeden önce küçük bir bash senaryosu yaptım. Kök haklarınız yoksa ve acct yüklü değilse veya komutunuzu doğrudan çağırmazsanız, bu hala yararlıdır (benim durumumda: arka plan işlemlerini ayarlamak için bir GUI kullanıyorum). Çalıştırmadan önce PID'yi almanız gerekir (komut dosyasına eklemek isteyen herkes? :)

#!/bin/bash

echo "Checking run time"
read -p "What is the pid? " PID

while true; do
    # sleep needed! used to reduce cpu usage and mass of output
    sleep 5
    ps -eo uid,pid,etime | egrep '$PID' | egrep '$UID'
done

Bununla PROCESS_NAME adlı kişinin PID'sini bulun

ps aux | awk 'NR == 1 || /PROCESS_NAME/'

Aslında USER-ID ve PID'yi bir araya getirerek senaryoyu mantıksız hale getirmeye çalıştım, ama bu o kadar kolay ps -eo uid,pid,etime | egrep '$UID[[:space:]]$PID'değil ... her zaman işe yaramıyor gibi görünüyor ...


Tam ihtiyacım olan şey! Ben Centos 6.8 üzerinde '$ PID' etrafında tırnak atlamak egrep '$UID've ben gibi tek kullanıcı olarak atlamak gerekiyordu bulundu:ps -eo uid,pid,etime | egrep $PID
Chris Adams
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.