시스템 시작 시간을 에포크 형식으로 표시하는 방법은 무엇입니까?

시스템 시작 시간을 에포크 형식으로 표시하는 방법은 무엇입니까?

RPM을 설치한 후 재부팅이 발생했는지 확인하는 스크립트를 작성해야 합니다. RPM이 설치된 시점의 시간을 쉽게 알 수 있습니다. rpm -q --queryformat "%{INSTALLTIME}\n" glibc | head -1그러면 다음과 같은 출력이 생성됩니다 1423807455.

이 교차 점검은 rpm -q --info.

# date -d@`rpm -q --queryformat "%{INSTALLTIME}\n" glibc | head -1`
Fri Feb 13 01:04:15 EST 2015
# sudo rpm -q --info glibc | grep "Install Date" | head -1
Install Date: Fri 13 Feb 2015 01:04:15 AM EST      Build Host: x86-022.build.eng.bos.redhat.com

하지만 uptime에포크 시간을 가져오는 방법을 알아내는 데 문제가 있습니다 cat /proc/uptime. 내 시스템에서 cat /proc/uptime다음과 같은 출력을 이해할 수 없습니다 19496864.99 18606757.86. 왜 두 개의 값이 있습니까? 어느 것을 사용해야 합니까? 이 숫자에는 왜 소수가 있나요?

업데이트: 감사합니다 techraf

제가 사용할 스크립트는 다음과 같습니다.

#!/bin/sh

now=`date +'%s'`
rpm_install_date_epoch=`rpm -q --queryformat "%{INSTALLTIME}\n" glibc | head -1`
installed_seconds_ago=`expr $now - $rpm_install_date_epoch`
uptime_epoch=`cat /proc/uptime | cut -f1 -d'.'`

if [ $installed_seconds_ago -gt $uptime_epoch ]
then
        echo "no need to reboot"
else
        echo "need to reboot"
fi

스크립트에 대한 피드백을 주시면 감사하겠습니다.

감사해요

답변1

~처럼 수동(그리고 심지어위키피디아) 지적:

/proc/uptime

마지막으로 다시 시작한 이후 시스템이 실행된 시간을 표시합니다.

첫 번째 숫자는 시스템이 작동된 총 시간(초)입니다. 두 번째 숫자는 머신이 유휴 상태인 시간(초)입니다. 멀티 코어 시스템(및 일부 Linux 버전)에서 두 번째 숫자는 각 CPU의 누적 유휴 시간 합계입니다.

소수점은 초를 초의 소수 부분과 구분합니다. 이 지표를 사용하여 시스템이 작동된 시점을 계산하려면 현재 시간(에포크 형식으로 반올림됨)에서 시스템이 작동된 시간(초)(첫 번째 숫자)을 빼야 합니다.

예를 들어 Ruby의 시작 타임스탬프(정확도는 100ms, 제한됨 /proc/uptime):

`date +%s.%3N`.split[0].to_f - `cat /proc/uptime`.split[0].to_f

답변2

~처럼시작 시간선택적으로 출력을 얻을 수 있는 초 및 에포크 단위로 출력합니다.

이 줄에서는 Current uptime:실제 가동 시간과 시스템 가동 시간을 보고합니다.

$ tuptime | grep 'Current uptime'
Current uptime:     59 minutes and 27 seconds   since   08:08:32 09/06/18

따라서 -s초 및 -ccsv 매개변수와 일부 명령줄 파이프를 사용합니다.

$ tuptime -sc | grep 'Current uptime' | awk -F\" '{print $8}'
1528524512

관련 정보