access_log 레코드의 시간 범위를 빠르게 보려면 access_log의 첫 번째 시간과 마지막 시간을 출력하는 방법은 무엇입니까? 출력은 다음과 같습니다.
[21/Aug/2014:06:29:41 -0400] :::: [21/Aug/2014:10:29:41 -0400]
내 access_log 경로는 다음과 같습니다.
/var/www/vhosts/example.com/statistics/logs/access_log
액세스 로그 항목의 예:
123.123.123.123 - - [21/Aug/2014:08:12:30 -0400] "GET /wp-content/themes/simple/comment-style.css HTTP/1.1" 200 6221 "http://example.com/?p=1" "Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Firefox/31.0"
답변1
로그 항목이 엄격하게 시간순이 아닌 경우 GNU 시스템에서 다음을 수행할 수 있습니다.
# 1 2
# 12345678901234567890
# [21/Aug/2014:06:29:41 -0400]
< access.log sed -n 's/^[^[]*\(\[[^]]*]\).*/\1/p' |
sort -k1.9n -k1.5M -k1.2n -k1.14,1.21 |
sed -n '1p;$p' | paste -sd -
매년 여름 시간과 겨울 시간이 바뀌면 결과가 정확하지 않을 수 있습니다.
답변2
당신은 그것을 사용할 수 있습니다 sed
:
sed -n '1p;$p' /var/www/vhosts/example.com/statistics/logs/access_log
또는awk
awk 'NR==1;END{print}' /var/www/vhosts/example.com/statistics/logs/access_log
다음을 사용하는 다른 방법도 있습니다 tail
.head