![로그 항목이 갑자기 종료되었는지 확인하는 가장 좋은 방법은 무엇입니까?](https://linux55.com/image/218306/%EB%A1%9C%EA%B7%B8%20%ED%95%AD%EB%AA%A9%EC%9D%B4%20%EA%B0%91%EC%9E%90%EA%B8%B0%20%EC%A2%85%EB%A3%8C%EB%90%98%EC%97%88%EB%8A%94%EC%A7%80%20%ED%99%95%EC%9D%B8%ED%95%98%EB%8A%94%20%EA%B0%80%EC%9E%A5%20%EC%A2%8B%EC%9D%80%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
로그 파일이 중간에 갑자기 끝나는 이전에 손상된 스크립트가 있습니다. 이는 각 사례를 볼 때 타임스탬프에서 분명하게 드러납니다. 이러한 모든 경우를 자동으로 grep하는 방법이 있습니까?
적절한 "payone_cancel.php end"를 사용한 건강한 결말의 예입니다.
2023-03-21T08:41:04+00:00 DEBUG paypal paypal_cancel.php begin
2023-03-21T08:41:04+00:00 DEBUG paypal params = {"id":123,"old_status":"","new_status":"DD"}
2023-03-21T08:41:04+00:00 DEBUG paypal JPATH_ROOT = [ROOT]
2023-03-21T08:41:04+00:00 DEBUG paypal PaypalCancel params = {"id":123,"old_status":"","new_status":"DD"}
2023-03-21T08:41:04+00:00 DEBUG paypal new_status is not EE or empty string, nothing to do
2023-03-21T08:41:04+00:00 DEBUG paypal paypal_cancel.php end
올바른 "paypal_cancel end" 줄 앞에 새 타임스탬프가 나타나는 오류 상태의 예:
2023-02-17T20:57:41+00:00 DEBUG paypal paypal_cancel.php begin
2023-02-17T20:57:41+00:00 DEBUG paypal params = {"id":"123","old_status":"EE","new_status":"EE"}
2023-02-17T20:57:41+00:00 DEBUG paypal JPATH_ROOT = [ROOT]
2023-02-17T20:57:41+00:00 DEBUG paypal PaypalCancel params = {"id":"123","old_status":"EE","new_status":"EE"}
2023-02-17T22:00:27+00:00 DEBUG paypal --- frontend paypal gateway begin ---
grep -l
다양한 경우에 행 수가 다르기 때문에 작동하지 않을 수 있습니다.
awk를 다시 배워야 할지도 모르겠네요....
답변1
grep -F 'old_status":"DD","new_status":"EE' -A1 | \
awk '{if (prev_line ~ /PaypalCancel/ && time != $1) print prev_line; time = $1; prev_line = $0}'
녹음하는 동안 1초가 지나면 오탐지가 포함되지만 그것만으로도 충분합니다.
비결은 이전 행과 시간 열을 변수에 저장한 다음 이를 비교할 때 사용하는 것입니다.