시스템이 부팅 된 타임 스탬프를 안정적으로 얻는 방법은 무엇입니까?


13

uptime명령을 알고 있지만 부팅 후 초를 반환하므로 현재 시간 소인에서 해당 숫자를 빼면 이론적으로 가동 시간 및 현재 시간 소인을 읽은 후 초가 변경되면 다른 결과를 얻을 수 있습니다. uptime -s내가 원하는 것이지만 centos에서는 사용할 수 없습니다 (btw는 어떻게 계산됩니까?). / proc dir의 ctime을 얻을 수 있습니까? 이것은 나에게 적절한 숫자를 줄 것 같지만 모든 리눅스 시스템이 부팅시 / proc을 만들 었는지 궁금합니다.


어떤 형식을 원하십니까? HH:MM:SS? 다른 것?
terdon

1
@terdon, UNIX 타임 스탬프
Fluffy

답변:


12

우선, Linuxcrtime 에서는 까다 롭습니다 . 즉, 같은 것을 실행

$ stat -c %z /proc/ 
2014-10-30 14:00:03.012000000 +0100

또는

$ stat -c %Z /proc/ 
1414674003

아마 정확히 당신이 필요로하는 것입니다. /proc파일 시스템은 표준 LFS에 의해 정의되고있는 리눅스 시스템뿐만 아니라이 있어야 대부분의 (모든?) UNIXen.

또는 실제로 초 정밀도가 필요하지 않고 타임 스탬프가 정확해야한다고 가정하면 다음을 사용할 수 있습니다 who.

$ who -b
   system boot  2014-10-30 14:00

From man who: -b, --boot 마지막 시스템 부팅 시간

GNU를 사용하여 신기원부터 초로 변환 할 수 있습니다 date.

$ date -d "$(who -b | awk '{print $4,$3}' | tr - / )" +%s
1414674000

1
사소한 경고는 부팅 시간이 RTC에서 결정되거나 RTC가없는 경우 기본값으로 결정된다는 것입니다. 이번에는 utmp"시스템 부팅"항목으로 init에 기록 되고로 읽습니다 who -b. 시작될 때까지 시스템 시간이 잘못되었을 수 있습니다. who -b내 rPi에서 1970 년에 부팅했다고 말하고 또 다른 RTC-less ARM은 2008이라고 말합니다 ;-)
mr.spuratic

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.