현재 내 서버는 다음 명령을 사용하여 HTML 페이지에 가동 시간을 출력합니다.
TIME=$(uptime -p) echo ""${TIME}"!" >> /var/www/html/index.new
생성되는 출력은 다음과 같습니다.
1일 1시간 2분 추가!
또한 (호기심에서) 내 시스템의 기록된 가동 시간을 표시할 수 있기를 원합니다. 하지만 이를 기록하고 (uptime-p) [일, 시간, 분] 형식으로 다시 표시하는 가장 좋은 방법은 확실하지 않습니다.
이를 수행할 수 있는 기존 도구가 있습니까? 아니면 가동 시간을 파일에 기록하고 grep 또는 유사한 것을 사용하여 가장 높은 값을 추출해야 합니까?
답변1
"uptimed"를 설치한 후 스크립트에 다음 줄을 추가했습니다.
uprecords | head -n 4 | tail -n 1 | awk '{print "Current uptime record is " $3,$4$5,$6" (hr:mis:sec)"}'
현재 가동 시간 기록은 1일 02:05:34(시:분:초)입니다.
이것은 내 요구에 완벽하게 맞아야합니다.
답변2
-s
시스템 시작 시간의 구문 분석 가능한 시간을 얻으려면 이 플래그를 사용하는 것이 좋습니다 . 그런 다음 합계 date
와 뺄셈을 사용하십시오.
이 작업을 반복하면서 계속해서 기록과 비교하세요. 물론 녹음시간은 파일로 저장해야 합니다.
(녹화파일을 초기화해야 합니다. echo 0 > record
)
이 스크립트가 계속 실행되는 한 무엇이든 간단히 로그 파일을 읽어 현재 로그가 무엇인지 알아낼 수 있습니다.
#!/bin/sh
format_time ()
{
t=$1
days=$(($t / 86400))
t=$(($t - 86400*$days))
hours=$(($t / 3600))
t=$(($t - 3600*$hours))
minutes=$(($t / 60))
t=$(($t - 60*$minutes))
echo "$days days $hours hours $minutes minutes $t seconds"
}
main ()
{
# Old record
record="$(cat record)"
# When the system started.
boot="$(date -d "$(uptime -s)" '+%s')"
while true; do
# You could also calculate the uptime before the loop and just
# increment it, but that will rely on the script running 24/7.
now="$(date '+%s')"
current_uptime="$(($now - $boot))"
# Set and save the record when it gets beaten
if [ "$current_uptime" -gt "$record" ]; then
record="$current_uptime"
echo "$record" > record
fi
# Status should be printed _after_ potentially having set
# a new record:
clear
echo "Current uptime: $(format_time "$current_uptime")"
echo "Record uptime: $(format_time "$record")"
# Don't waste system resources for silly things.
sleep 1
done
}
main
답변3
이미 사용하고 있으므로 uptimed
설치도 가능합니다.uprecords-cgi
uptimed
웹페이지에 저장된 정보를 렌더링하며 기본적으로 활성화됩니다.http://localhost/cgi-bin/uprecords.cgi.