다음 /proc/uptime
과 같은 형식으로 표시하고 싶습니다 .
DD:HH:MM:SS
/proc/uptime
초 단위로 시스템 시간을 알려주십시오. 초를이 형식으로 변환하는 표준 솔루션이 있습니까?
다음 /proc/uptime
과 같은 형식으로 표시하고 싶습니다 .
DD:HH:MM:SS
/proc/uptime
초 단위로 시스템 시간을 알려주십시오. 초를이 형식으로 변환하는 표준 솔루션이 있습니까?
답변:
예를 들어 perl과 간단한 수학 으로이 작업을 수행 할 수 있습니다.
cat /proc/uptime | perl -ne '/(\d*)/ ; printf "%02d:%02d:%02d:%02d\n",int($1/86400),int(($1%86400)/3600),int(($1%3600)/60),$1%60'
초가 필요하지 않으면 간단히 uptime
명령을 실행할 수 있습니다 . 출력은 DD : HH : MM으로 간단히 변환 될 수 있습니다.
예를 들어 다음을 사용합니다 (가동 시간> 1 시간 인 경우에만이 방식으로 작동)
uptime | perl -ne '/(\d*) day[^\d]*(\d*):(\d*)/ ; printf "%02d:%02d:%02d\n", $1, $2, $3'
아니요, 실제로 어려운 문제는 아니기 때문입니다. 정수 나누기를 사용하여 초 수를 86400으로 나눠서 일 수를 구하십시오. 나머지를 가져 와서 시간을 얻기 위해 3600으로 나눕니다. 그 나머지를 60으로 나눠 분 수를 얻으면 몇 초가 남습니다. expr
쉘이 기본적으로 산술을 지원할 수 없을만큼 오래된 경우 명령을 사용하여 쉘에서이 모든 것을 수행 할 수 있습니다.
신기원부터 초 촬영하고 사람이 읽을 수있는 날짜에 그 돌리면 이다 어려운 문제, 그래서 예를 들면, 그 작업을 수행하는 표준 방법이있다 date -r SECONDS
쉘에서이. 그러나 그것은 다른 문제입니다.
가동 시간이 1 년 미만인 경우 다음 명령을 사용할 수 있습니다.
TZ=UTC date -d@$(cut -d\ -f1 /proc/uptime) +'%j %T' | awk '{print $1-1"d",$2}'
적어도 Linux에서는 총 유휴 시간을 포함하는 두 번째 필드가 있기 때문에 가동 시간 파일의 첫 번째 필드를 추출합니다. 나는 그 시대를 초 이후의 초 수로 취급하고 그 시간을 시간, 분 및 초 단위의 연중 날짜로 변환합니다. 일년 중 하루가 1부터 시작하기 때문에 마지막 awk
호출 에서 1을 뺍니다 .
\n
개행이 좋을 것입니다!