본문 바로가기
컴퓨터 공부/리눅스 자습서

ngnix 서버 관리를 위해 쉘 스크립트를 만들어봤다.

by 반짱코 2026. 4. 16.
728x90

아직 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를 사용해 보자.

 

 

 

 

 

감사합니다.

728x90

댓글