Bash에서 타임 스탬프 비교를 수행하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/205666

  •  03-07-2019
  •  | 
  •  

문제

나는 스팸을 보관하려는 경고 스크립트가있어서 경고가 전송 된 경우 마지막 시간을 말하면 다른 경고를 보내지 않도록 조건을두고 싶습니다. 이제 조건이 충족 될 때 신속하게 경고해야하기 때문에 매분 조건을 확인하는 Cron 작업이 있지만 제어중인 문제가 발생할 때까지 매니트마다 이메일을받을 필요는 없습니다. 이것을 달성하기 위해 Bash에서 시간을 비교하는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

지금까지 가장 쉬운 것은 타임 스탬프를 더미 파일의 수정 시간으로 저장하는 것입니다. 암소 비슷한 일종의 영양 touch 그리고 date 명령은이 시간을 설정/가져 오며 날짜 계산을 수행 할 수 있습니다. Bash는 파일이 더 새로워하는지 확인하기위한 테스트가 있습니다.-nt) 또는 이상 (-ot) 또 다른.

예를 들어, 마지막 알림이 1 시간 전에 한 경우에만 알림을 보내려면 다음과 같습니다.

touch -d '-1 hour' limit
if [ limit -nt last_notification ]; then
    #send notification...
    touch last_notification
fi

다른 팁

"테스트"사용 :

if test file1 -nt file2; then
   # file1 is newer than file2
fi

편집 : 이벤트가 언제 발생했는지 알고 싶다면 "터치"를 사용하여 나중에 "테스트"를 사용하여 비교할 수있는 파일을 만들 수 있습니다.

날짜 명령을 사용하여 두 번 표준 형식으로 변환하고 빼십시오. 이전 실행 시간을 도트 파일에 저장 한 다음 다음과 같은 작업을 수행하고 싶을 것입니다.

last = cat /tmp/.lastrun
curr = date '+%s'

diff = $(($curr - $last))
if [ $diff -gt 3600 ]; then
    # ...
fi

echo "$curr" >/tmp/.lastrun

(감사합니다, Steve.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top