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
초 및 -c
csv 매개변수와 일부 명령줄 파이프를 사용합니다.
$ tuptime -sc | grep 'Current uptime' | awk -F\" '{print $8}'
1528524512