Back End/Linux

[Linux] 특정 명령어를 특정 주기로 실행하기

염소 2021. 9. 2. 20:50
반응형

■ 개요

프로젝트 진행 중 특정 쓰레드가 무한 루프에 같혀서 로그 파일의 크기가 엄청 커졌다.

운영중이라 앱을 재시작할 수 없어 5분마다 한번 로그 파일을 삭제하는 조치가 필요했다.

그때 사용한 임시 조치방편을 포스팅한다.

 

이런 일이 없는 것이 제일 좋으나 어떤 일이 일어날지 모르기 때문에 ..

 

■ 본문

쉘 스크립트로 무한루프 파일을 만들고 sleep으로 특정 시간마다 명령어가 실행되도록 처리했다.

 

일단 vi편집기를 통해 autoRemove.sh 파일을 생성한다.

vi autoRemove.sh

 

파일의 본문 내용은 아래와 같이 작성한다.

#!/bin/bash

while :
do
	ls -lh /logs | grep wrapper_20210902	-- 파일 용량 체크를 위해 출력
	cat /dev/null > /logs/wrapper_20210902.log  -- 특정 파일 null로 덮어쓰기
	ls -lh /logs | grep wrapper_20210902  -- 파일 용량 체크를 위해 출력
	echo "Log Deleted"
	sleep 300	-- 5분 대기
done

 

파일을 저장한 후 실행한다.

실행 권한이 없으면 chmod를 통해 파일 권한을 변경한다.

chmod 777 ./autoRemove.sh

 

 

자 이제 실행시키면 5분마다 특정 파일 내용을 지워주는 것을 확인할 수 있다.

종료하고 싶다면 ctrl + c를 이용해 종료하면 된다.

 

 

반응형