Saya memulai sebuah program dan menulis output dari ps -p PID -o lstart=
ke file, seperti:
$ long_running_command &
[1] 4562
$ ps -p $! -o lstart= > start_time
$ cat start_time
Wed Apr 6 06:16:31 2016
Tetapi ketika saya menjalankan kembali ps
nanti saya mendapatkan hasil yang sedikit berbeda:
$ ps -p 4562 -o lstart=
Wed Apr 6 06:16:53 2016
Saya mendapat kesan bahwa lstart=
akan mencetak waktu mulai dari proses yang diberikan. Mengapa saya mendapatkan waktu mulai yang berbeda ketika saya memanggil kembali ps
?
Jawaban yang Diterima:
Saya telah menduga (tetapi tidak dapat mereplikasi) bahwa masalah tersebut entah bagaimana terkait dengan exec
panggilan atau sesuatu yang serupa yang menggantikan proses yang sedang berjalan, menjaga PID yang sama tetapi mengatur ulang waktu mulai. Ternyata penjelasannya jauh lebih sederhana (dan sayangnya saya tidak memasukkan cukup detail dalam pertanyaan awal).
Seperti yang dijelaskan dalam tindak lanjut ini, pembaruan NTP mengubah jam sistem saya antara ps
panggilan. Rupanya lstart
menghormati pembaruan jam (yang masuk akal, tetapi masih agak mengejutkan saya), artinya Anda tidak dapat mengandalkan output lstart
untuk tetap konsisten selama masa hidup satu proses.