본문 바로가기
🎯 etc/Linux

[ nohup ] nohup.out 날짜별 로그 관리

by 깸뽀 2022. 12. 14.
728x90
🎯 Ubuntu Server 20.04 T2.micro

👉 nohup이란? https://bkyungkeem.tistory.com/56

 

[ nohup ] 세션이 끊겨도 서버가 계속 실행되도록 설정

📌 nohup 사용법 $ nohup [프로세스] & // java -jar파일 예시 // ex) $ nohupb java -jar test.jar & 📌 nohup 리눅스에서 프로세스를 실행한 터미널의 세션 연결이 끊기더라도 프로세스를 계속해서 동작하는 명령

bkyungkeem.tistory.com

👉 vi 명령어 https://bkyungkeem.tistory.com/54

 

[ Shell ] 쉘(Shell) 스크립트 작성방법 및 vi 명령어

📌 vi의 세가지 모드 1. 명령 모드 (Command Mode) vi를 시작할 경우 실행되는 모드 입력모드를 진입한 후 [ESC]를 누르면 명령 모드로 돌아옴 2. 입력 모드 (Insert Mode) 직접 글이나 코드를 작성할 수 있

bkyungkeem.tistory.com

 

 

📌 log.sh 만들기

설정파일은 nohup.out 안에 내용이 있을때만 rotation하는 방법으로 진행

⇒ 내용 유무와 상관없이 만들고 싶다면 if구문만 지우고 사용하면 됨

 

 

1. 쉘 스크립트 생성 ( 생성 후 i를 누르면 편집 가능)

$ vi log.sh

 

 

2. 스크립트 작성

#!/bin/bash

file=/home/ubuntu/dev/nohup.out       // nohup.out 경로
date=`date +%Y%m%d_%H%M%S`           // 저장할 날짜
filePath=/home/ubuntu/dev/log/log.${date}.out    // 저장경로/파일명

// 파일 용량이 0보다 클때 rotation
if [ -s $file ] ; then
        cp "$file" "$filePath"               // 1. nohup.out 복사
        echo "백업완료 cp $file $filePath"   // 2. print
        cat /dev/null > "$file"              // nohup.out의 byte를 0으로
else
        echo "백업 없음 $file"
fi
echo "********************************************"






//ESC누르고

:wq   // 저장하고 나가기
  • if [ 조건 ] ; then [true일 경우] else [전체 false일 경우] fi : shell 스크립트의 if … else 조건문
  • 사용 시 주의할 점: " [ 조건 ] "작성 시 대괄호 양 사이에 한 칸씩 공백이 있어야 함 ⇒ 붙여쓸 경우 에러발생
  • -s $file
    • -s : "$file"  지장한 파일이 존재하고 0 size 파일이 아닌지 체크하는 옵션
    • 파일이 있고 사이즈가 0보다 클 경우 true
  • filePath=/home/ubuntu/dev/log/log.${date}.out
    • /home/ubuntu/dev/log : 파일경로
    • log.${date}.out : 파일명
    • 디렉토리는 자동으로 생성하지 않기때문에 만들어 줘야함

 

3. 쉘 스크립트 실행권한 부여

// 실행권한 부여
$ chmod 755 log.sh

 

 

3. crontap 등록

log.sh를 특정 시간에 또는 특정 시간마다 실행시켜주는 설정

⇒ crontab 편집기에 cron 표현식을 등록

👉 cron표현식 자세히 보기

 

1. 등록

// crontab 등록,수정
$ crontab -e

// crontab 전체조회
$ crontab  -l;

 

2. 맨 밑줄에 cron표현식 추가

  GNU nano 4.8                     /tmp/crontab.g1t2FZ/crontab                     Modified
i# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
59 23 * * * home/ubuntu/dev/log.sh


 // 작성 완료 후 
 // 1. ctl + x
 // 2. y
 // 3. 엔터
  • 59 23 * * * : 매일 23시 59분에 log.sh 실행

 

 

 

 

📖 참고

 

 

 

728x90

댓글