Memahami format waktu yang telah berlalu untuk proses yang berjalan lama

10

Saya menggunakan psperintah sebagai bagian dari latihan untuk mengidentifikasi proses yang berjalan lebih lama dari batas yang diberikan.

Saya menggunakan templat berikut untuk mendapatkan waktu yang telah berlalu untuk perintah know process:

ps -eo etime,command | grep <something to identify a process> | grep -v grep | awk '{print $1}'

Saya perhatikan dengan proses yang berjalan singkat, nilai etime (waktu yang berlalu) mengambil format minutes:secondsdan dari sini saya dapat dengan mudah menentukan berapa lama suatu proses telah berjalan.

Untuk proses yang berjalan sangat lama (berhari-hari panjang), saya tidak mengerti formatnya.

Saya memiliki proses server MySQL yang htopberjalan selama 126 jam.

Eksekusi ps -eo etime,command | grep mysql | grep -v grep | awk '{print $1}'memberi saya nilai 9-03:35:32.

Tebakan terbaik saya adalah ini berarti 9 sesuatu, 3 jam, 35 menit, 32 detik. Saya tidak tahu apa unit untuk 9.

Proses yang dimaksud telah berjalan 126 jam, sekitar 5,25 hari. Ini menunjukkan bahwa angka 9 pada output di atas tidak mewakili hari. Mereka tidak bisa setengah hari karena (9 * 12) jam + 3 jam + 35 menit + 32 detik kurang dari 5 hari.

Bagaimana cara menafsirkan nilai waktu yang telah berlalu yang saya lihat untuk proses yang berjalan lama? Unit apa yang menyertai angka 9 pada output di atas?

Jon Cram
sumber
Di sini, Anda melihat format waktu POSIX. Menit: detik adalah format waktu BSD. Linux psmenampilkan satu atau yang lain tergantung pada opsi yang Anda lewati.
Gilles 'SANGAT berhenti menjadi jahat'
Untuk mengecek, coba etimesalih-alih etimedan bandingkan hasilnya.
Ruslan

Jawaban:

16

Menurut standar :

Di lokal POSIX, waktu yang berlalu sejak proses dimulai, dalam bentuk:

[[dd-]hh:]mm:ss

di mana dd akan mewakili jumlah hari, jj jumlah jam, mm jumlah menit, dan ss jumlah detik. Bidang dd harus berupa bilangan bulat desimal. Bidang hh, mm, dan ss harus berupa bilangan bulat desimal dua digit di sebelah kiri dengan nol.

Jadi, 9 artinya berhari-hari, baik Anda percaya atau tidak. Bisakah Anda salah mengartikan output dari htop? Apa kata top (yang memiliki format waktu minutes:seconds)? Apakah Anda yakin bahwa bidang yang Anda lihat di htop setara dengan etime? (misalnya, bisa berarti 126 menit dari CPU waktu?)

Random832
sumber
Terima kasih atas konfirmasinya. htop jelas menunjukkan 126 jam, tapi saya pikir ini mungkin bukan waktu dinding tetapi waktu lain (mungkin waktu CPU). Bidang di htop tidak setara dengan etime, saya anggap salah di sini.
Jon Cram
1
@ JonCram Apakah Anda yakin ini jam? Top asli hanya menunjukkan menit (yaitu akan pergi ke menit di atas 60 daripada putus hingga jam), angka seperti 126: 37 berarti 126 menit dan 37 detik. Saya pikir htop mungkin sama. 126 jam waktu CPU dalam 9 hari sepertinya banyak.
Acak 832