Untuk mengetahui kapan suatu proses dimulai, tebakan pertama saya adalah memeriksa waktu kapan /proc/<pid>/cmdline
ditulis / dimodifikasi terakhir kali.
ps
juga menunjukkan START
bidang. Saya pikir kedua sumber ini akan sama. Terkadang mereka tidak sama. Bagaimana bisa?
Jawaban:
Setidaknya di Linux, Anda juga dapat melakukan:
untuk memiliki waktu mulai yang lebih berguna.
Namun perlu dicatat bahwa inilah saat proses dimulai, belum tentu saat perintah yang sedang dijalankan dijalankan. Proses dapat (dan umumnya dilakukan) menjalankan lebih dari satu perintah dalam masa hidupnya. Dan kadang-kadang perintah menelurkan proses lainnya.
Mtimes dari file-file di
/proc
Linux (setidaknya) umumnya tanggal ketika file-file tersebut dipakai, yang akan menjadi pertama kalinya sesuatu mencoba mengaksesnya atau daftar konten direktori.Contohnya:
Mengembang
/proc/$$/xx*
menyebabkan shell membaca konten/proc/$$
yang menyebabkancmdline
file tersebut dipakai.Lihat juga: Stempel waktu soket di / proc // fd
sumber
proc adalah sistem file virtual jadi saya tidak akan bergantung pada informasi status file apa pun.
Waktu mulai dari proses ini terletak di / proc / PID / stat kolom 22 . Ini diberikan dalam sekejap setelah boot sistem. Untuk mengonversinya menjadi detik, Anda harus membaginya dengan
sysconf(_SC_CLK_TCK)
100 untuk sebagian besar sistem (tetapi tidak semua!).Untuk mendapatkan waktu boot sistem Anda menentukan uptime saat ini dalam hitungan detik yang merupakan nilai pertama dari / proc / uptime .
Memiliki dua angka yang Anda kurangi yang pertama dari yang kedua dan Anda mendapatkan jumlah detik berlalu sejak memulai program.
Contoh (untuk pidgin ):
Catatan: contoh sederhana ini tidak berfungsi jika
pidof
mengembalikan PID multipe.sumber