나는 프로그램을 시작하고 ps -p PID -o lstart=
다음과 같은 파일에 출력을 썼습니다.
$ long_running_command &
[1] 4562
$ ps -p $! -o lstart= > start_time
$ cat start_time
Wed Apr 6 06:16:31 2016
그러나 나중에 다시 실행하면 ps
약간 다른 결과가 나타납니다.
$ ps -p 4562 -o lstart=
Wed Apr 6 06:16:53 2016
제 인상은 lstart=
인쇄될 것 같아요특정 프로세스의 시작 시간. 다시 전화하면 시작 시간이 다른 이유는 무엇입니까 ps
?
답변1
나는 문제가 exec
실행 중인 프로세스를 호출하거나 이와 유사하게 교체하고 동일한 PID를 유지하지만 시작 시간을 재설정하는 것과 관련이 있다고 의심했습니다(그러나 재현할 수는 없었습니다). 설명이 훨씬 더 간단하다는 것이 밝혀졌습니다(불행히도 원래 질문에는 충분한 세부 정보가 포함되지 않았습니다).
자세히보다이 후속 조치, NTP 업데이트가 ps
호출 사이에 시스템 시계를 변경하고 있습니다. 분명히 시계 업데이트를 존중한다는 것은(이건 말이 되지만 여전히 약간 놀랍습니다) 단일 프로세스의 수명 동안 lstart
출력이 일관되게 의존할 수 없다는 것을 의미합니다 .lstart