Memantau waktu dinding dari suatu proses pada windows?

2

Windows Task Manager memiliki kemampuan untuk menunjukkan waktu CPU saat ini dari setiap proses yang berjalan di windows, apakah ada cara (tidak harus melalui Task Manager) untuk mendapatkan waktu proses dinding saat ini?

Sebagai contoh, katakanlah saya memiliki skrip yang berjalan andal selama sekitar 45 menit. Tanpa menambahkan bilah kemajuan ke skrip, apakah ada cara untuk mencari tahu berapa lama telah berjalan?

Matematika di balik ini tampaknya cukup lurus ke depan;

WallTime = CurrentWallTime - WallTimeProcessStarted.

Demikian juga, karena matematika sangat sederhana, apakah ada cara untuk mendapatkan waktu ketika suatu proses dimulai?

Sean Madden
sumber
1
Coba Proses Explorer Microsoft SysInternal. Ini memberi Anda waktu mulai proses, waktu yang dihabiskan dalam mode pengguna dan mode kernel.
Ganesh R.
"Waktu dinding"? Apakah itu bahasa Inggris? Anda mungkin ingin mengedit judul Q., atau setidaknya memimpin dengan definisi dari frasa itu.
kreemoweet
"Jam dinding" dan "waktu dinding" adalah idiom umum di AS yang berarti waktu seperti yang dialami oleh pengamat manusia menonton jam di dinding.
Nicole Hamilton

Jawaban:

2

Tentu. Total waktu yang telah berlalu tersedia melalui bagian kinerja registri dan melalui Toolhelp API. Dan tentu saja, jika Anda memiliki waktu yang telah berlalu dan waktu saat ini, Anda dapat menghitung waktu mulai.

Ada dua cara untuk mengambil informasi melalui Win32, tetapi tidak ada yang sangat sederhana. Cara yang telah didukung sejak rilis paling awal dari WinNT adalah dengan menggunakan RegQueryValueEx untuk mem-parsing terlebih dahulu daftar penghitung yang tersedia di HKEY_PERFORMANCE_DATA, lalu ambil yang Anda inginkan pada proses contoh yang menarik. Cara yang lebih baru adalah dengan menggunakan CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS), yang diperkenalkan dengan WinXP.

Mungkin ada banyak aplikasi yang bisa melakukan ini, jadi Anda mengundang daftar yang saya yakin bisa ditambahkan orang lain. Inilah cara saya melakukannya di shell C saya . ps -sdaftar semua proses sistem. The uptimeutilitas sampel menghitung berapa lama sistem telah naik dari waktu yang telah berlalu dilaporkan oleh ps -suntuk proses Menganggur.

Pelaporan utilitas shell Hamilton C kali berlalu untuk proses sistem

(Waktu aktif untuk Idle hanyalah nilai ganjil yang dilaporkan oleh Win7.)

Nicole Hamilton
sumber
1

Jika Anda bersedia / dapat menggunakan Python, ada sesuatu yang disebut psutil yang mungkin akan berfungsi. Atau, Anda dapat mengunduh kode sumbernya dan melihat apa yang disebut Windows API yang digunakannya untuk memberikan informasi.

martineau
sumber