가동 시간 출력 수정

가동 시간 출력 수정

그래서 나는 얼마 전에 Bash를 실험해왔고 "uptime" 명령의 출력을 조작하고 싶었습니다. 예를 들어 가동 시간이 5분인데 나머지는 사라지는 경우 up x 분의 출력을 0:05로 변경했습니다.

현재 가동 시간 출력에 영향을 주지 않고 시간, 사용자 수 및 로드 평균을 표시하려면 어떤 방법을 사용해야 합니까?

원하는 출력은 다음과 같습니다.21:08:13 up 0:10, 3 users, load average: 0.30, 0.30, 0.25

어떤 도움이라도 대단히 감사하겠습니다!

#!/bin/bash

since="`uptime --since`"
start="`date --date "$since" '+%s'`"
now="`date '+%s'`"
sec=$((now-start))

days=$((sec/(60*60*24)))
sec=$((sec-days*(60*60*24)))

hr=$((sec/(60*60)))
sec=$((sec-hr*(60*60)))

min=$((sec/60))
sec=$((sec-min*60))

rest="$(uptime | perl -npe'{s/(.*,\s+)(\d+\s+user)/$2/}')"

printf "%d(days), %02d:%02d:%02d(hms), %s\n" $days $hr $min $sec "$rest"

전류 출력

0(days), 00:34:00(hms), 3 users, load average: 0.09, 0.14, 0.14

답변1

한 가지 방법은 Perl을 사용하는 것입니다. 이것은 단지 줄을 추가하고 printf줄을 변경합니다.

rest="$(uptime | perl -npe'{s/(.*,\s+)(\d+\s+user)/$2/}')"

printf "%d(days), %02d:%02d:%02d(hms), %s\n" $days $hr $min $sec "$rest"

결과:

 00:55:21 up 10 days,  2:38,  1 user,  load average: 0.05, 0.06, 0.07

한 필드가 여전히 누락되어 있습니다. 다음을 비교해 보세요.

$ ./uptime.bash
10(days), 02:45:06(hms), 1 user,  load average: 0.02, 0.03, 0.04
$ uptime
 01:02:10 up 10 days,  2:45,  1 user,  load average: 0.02, 0.03, 0.04

관련 정보