![시스템 시작 타임스탬프를 안정적으로 얻는 방법은 무엇입니까?](https://linux55.com/image/58527/%EC%8B%9C%EC%8A%A4%ED%85%9C%20%EC%8B%9C%EC%9E%91%20%ED%83%80%EC%9E%84%EC%8A%A4%ED%83%AC%ED%94%84%EB%A5%BC%20%EC%95%88%EC%A0%95%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EC%96%BB%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
명령 에 대해 알고 있지만 uptime
부팅 이후의 초 수를 반환하므로 현재 타임스탬프에서 해당 숫자를 빼면 이론적으로 가동 시간과 현재 타임스탬프를 읽은 후 초 수가 변경되면 다른 결과를 얻을 수 있습니다. uptime -s
내가 원하는 것이지만 centos에서는 사용할 수 없습니다(그런데 어떻게 계산되나요?). /proc 디렉토리의 ctime만 얻을 수 있나요? 이것은 정확한 숫자를 제공하는 것 같지만 모든 Linux 시스템이 부팅 시 /proc을 생성하는지 궁금합니다.
답변1
가장 crtime
먼저리눅스에서는 까다롭다. 즉, 다음과 같이 실행하십시오.
$ stat -c %z /proc/
2014-10-30 14:00:03.012000000 +0100
또는
$ stat -c %Z /proc/
1414674003
당신에게 꼭 필요한 것일 수도 있습니다. 파일 시스템은 /proc
LFS 표준에 의해 정의되며 모든 Linux 시스템에서도 작동해야 합니다.대부분의 경우(모두?) UNIXen.
또는 실제로 두 번째 정밀도가 필요하지 않고 올바른 타임스탬프만 필요하다고 가정하면 다음을 사용할 수 있습니다 who
.
$ who -b
system boot 2014-10-30 14:00
From man who
: -b, --boot 시스템이 마지막으로 부팅된 시간
GNU를 사용하여 이를 epoch 이후의 초 단위로 변환할 수 있습니다 date
.
$ date -d "$(who -b | awk '{print $4,$3}' | tr - / )" +%s
1414674000
답변2
또 다른 해결책은 /proc/stat
[ btime
1]입니다.
$ cat /proc/stat | grep btime | awk '{print $2}'
출력 예:
1583547431
이는 에포크 이후 초 단위의 타임스탬프입니다.
답변3
macOS에서는 /proc
사용할 수 없지만 /dev
가능합니다. 다음은 몇 가지 다른 옵션입니다.
$ who -b
reboot ~ Dec 17 18:45
$ stat -f %m /dev
1608227137
-f %m
마지막 수정 시간이 "strftime(3) 형식"으로 표시되도록 지정합니다 .
$ stat -F /dev
dr-xr-xr-x 3 root wheel 4606 Dec 17 18:45:37 2020 /dev/
GNU 도구가 Homebrew를 통해 설치된 경우 다음 도구도 사용할 수 있습니다.
$ gwho -b
system boot 2020-12-17 18:45
$ gstat -c %Y /dev
1608227137
-c %Y
"마지막 데이터 수정 시간, 에포크 이후 초"를 표시하도록 지정합니다 .
$ gstat -c %y /dev
2020-12-17 18:45:37.000000000 +0100
%y
대신 사람이 읽을 수 있습니다.
답변4
위의 해결 방법은 RTC가 있는 컴퓨터에서만 작동합니다. RTC가 없는 Raspberry Pi 및 기타 임베디드 시스템에서 시스템은 시스템 디렉터리 구조를 생성할 때 참조 타임스탬프를 0으로 설정합니다. 여기서는 Linux에 대해 이야기하고 있으므로 /proc/uptime에서 정보를 읽어보세요.
cat /proc/uptime | awk '{ print $1 }'