Ho avviato un programma e ho scritto l'output di ps -p PID -o lstart=
in un file, in questo modo:
$ long_running_command &
[1] 4562
$ ps -p $! -o lstart= > start_time
$ cat start_time
Wed Apr 6 06:16:31 2016
Ma quando rieseguo ps
in seguito ottengo un risultato leggermente diverso:
$ ps -p 4562 -o lstart=
Wed Apr 6 06:16:53 2016
Avevo l'impressione che lstart=
stamperebbe l'ora di inizio di un determinato processo. Perché ricevo un'ora di inizio diversa quando richiamo ps
?
Risposta accettata:
Avevo sospettato (ma non ero stato in grado di replicare) che il problema fosse in qualche modo correlato a un exec
call o qualcosa di simile che stava sostituendo il processo in esecuzione, mantenendo lo stesso PID ma ripristinando l'ora di inizio. Si scopre che la spiegazione è molto più semplice (e sfortunatamente non ho incluso abbastanza dettagli nella domanda originale).
Come dettagliato in questo follow-up, un aggiornamento NTP stava cambiando il mio orologio di sistema tra i ps
chiamate. Apparentemente lstart
rispetta gli aggiornamenti dell'orologio (il che ha senso, ma mi ha comunque sorpreso in qualche modo), il che significa che non puoi fare affidamento sull'output di lstart
per rimanere coerenti per tutta la durata di un singolo processo.