아직 ngnix 서버에는 이렇다 할 기능이나 서비스가 없지만, 먼 미래에 쓸만한 홈페이지가 된다면 관련 로그들이 폭발적일 것으로 예상!
매번 access, error 로그를 전부 볼 수 없으니 쉘 스크립트를 사용해 반자동화 해 볼 생각이다.
목표는 nginx의 access, error 파일의 내용 중 내가 원하는 것만 따로 출력하는 것
전체코드
#!/bin/bash
ACCESS_LOG="/var/log/nginx/access.log"
ERROR_LOG="/var/log/nginx/error.log"
echo "=====SERVER LOG====="
echo "[ERROR (5)]"
if [ -s $ERROR_LOG ];
then
sudo tail -n 5 $ERROR_LOG
else
echo "Not Error"
fi
echo ""
echo "[IP LOG]"
awk '{print $1}' $ACCESS_LOG | sort | uniq -c | sort -nr
1. 먼저 access, error 로그 파일을 경로포함 변수로 만들어줬다.
ACCESS_LOG="/var/log/nginx/access.log"
ERROR_LOG="/var/log/nginx/error.log"
2. 에러 로그와 접속 아이피 로그를 얻기 위해 if문을 사용
if [ -s $ERROR_LOG ];
then
sudo tail -n 5 $ERROR_LOG
else
echo "Not Error"
fi
awk '{print $1}' $ACCESS_LOG | sort | uniq -c | sort -nr
에러로그의 파일 용량 체크를 위해 -s 사용, 최근 5번의 에러 메시지를 받기 위해 tail 사용,
접속로그의 특정한 열을 얻기 위해서 데이터를 뽑는 awk, 중복제거 uniq, 역순 정렬을 위해 sort -nr을 사용했다.
많이 접속한 아이피 주소를 알 수 있게 된다.
3. 실행

저장 후 실행해 봤지만 권한이 없어 실패했다.
ls -al 명령어를 사용해 권한을 확인해 봤다.

확인했더니 실행권한이 없어 실패한 것으로 판명됐다.
r = 읽기 권한, w = 쓰기 권한, x = 실행 권한
x가 없다.
4. 해결

간단하게 권한을 추가시켜 줬다. (chmod)

다시 확인해 보면 x 권한이 생긴 걸 확인할 수 있다.
5. 실행 결과

에러가 없는 상태라 Not Error 메시지가 나타나줬고, 접속했던 나의 아이피가 정상적으로 출력됐다.
요약정리✨
1. 쉘스크립트를 사용해 에러와 접속 로그를 관리해보고 싶었다.
2. awk, tail, uniq 등 명령어를 알아두면 좋을 거 같다.
3. 권한이 없어 에러가 나올 땐 chmod를 사용해 보자.

감사합니다.
'컴퓨터 공부 > 리눅스 자습서' 카테고리의 다른 글
| Crontab을 이용해서 Nginx 접속 로그를 자동으로 받기 (0) | 2026.04.29 |
|---|---|
| nginx를 사용한 웹페이지에서 동영상이나 사진을 볼 수 있게 만들기 (0) | 2026.04.19 |
| nginx 웹페이지 접속 기록 확인하기 (0) | 2026.04.10 |
| 리눅스 원격 접속을 통해 웹페이지 구축 및 소유권분리(chown) 실습 (0) | 2026.04.05 |
| 보안을 위해 ssh접속 포트를 변경하는 이유와 방법 (0) | 2026.04.02 |
댓글