파일의 타임스탬프를 찾는 방법은 무엇입니까? 시간을 찾고 있어요

파일의 타임스탬프를 찾는 방법은 무엇입니까? 시간을 찾고 있어요

저는 BASH를 사용하여 파일(~/logs/Server_Info.log)에서 타임스탬프를 가져오는 스크립트를 만들고 있습니다. 특히 타임스탬프에서 시간을 추출하여 변수에 기록하고 싶습니다.

타임스탬프에 사용하는 형식은 다음과 같습니다.

date +"%b-%d-%Y-%I:%M:%S %p"

이 스크립트를 사용하여 데이터를 추출합니다.

#!/bin/bash
LAST_HOUR="$(( $(date +%I) - 1 ))"
SEARCH_STRING=$(date +"%b-%d-%Y-${LAST_HOUR}:")

timeval=$(grep "${SEARCH_STRING}" ~/logs/Server_Info.log)
echo "$timeval"

exit 0

그러나 이 스크립트를 실행할 때마다 다음 두 가지 답을 얻습니다.

블랭크 출력

-또는-

04

내 타임스탬프가 다음과 같기 때문에 이것은 완전히 잘못된 것입니다.

Mar-24-2017-05:07:00 PM 

답변1

awk의 경우 다음과 같습니다.

$ var=$(date +"%b-%d-%Y-%I:%M:%S %p" | awk -F[-:] '{print $4}') && echo $var
04
$ var=$(date +"%b-%d-%Y-%I:%M:%S %p" | awk -F[-:] '{print $4 - 1}') && echo $var
3

답변2

로그 파일에는 2017-03-15T08:00:23.698411Z 형식의 날짜 형식이 포함되어 있습니다. 이 시간이 UTC 형식인 경우(예: 2017-03-15T08:00:23.698411Z(시간과 날짜는 08:00:23 및 2017-03-15)) IST로 변환해야 합니다. 지난 한 시간 동안 다음 명령을 사용하십시오.

date -d '2017-03-15T08:00:23.698411Z last hours' -u +%s

1489561223

date -d @1489561223 +"%Y/%m/%d-%H:%M:%S"

2017/03/15-07:00:23

2시간 전으로 돌아가려면 '지난 시간' 대신 '2시간 전'을 사용하세요.

참고:- Linux 서버에서 위 명령을 실행 중이며 Linux 서버 타이밍은 UTC입니다. IST Linux 서버에서 위 명령을 실행하려면 5시간 30분을 더 추가해야 합니다(예: "지난 시간" 대신 "6시간 30분 전").

관련 정보