# 기존 crontab 항목 편집 (사용자 정의 cron job)
crontab -e
# root 사용자는 다른 사용자의 정보도 확인 가능
crontab -e <USER_ID>
# crobtab 리스트 출력
crontab -l
# crontab 삭제
crontab -r
*
은 모든 것과 일치함을 의미,
은 반복 실행을 의미-
는 범위 실행을 의미/
은 간격 실행을 의미
# 특정 시간
* * * * * <CMD> : 매 1분 마다 명령을 실행
0 * * * * <CMD> : 매 1시간 마다 명령을 실행 (1:00, 2:00, ...)
0 0 * * * <CMD> : 매 1일 마다 명령을 실행 (00:00)
0 2 * * * <CMD> : 매일 새벽 2시에 명령을 실행
0 2 * * 6 <CMD> : 매주 토요일 새벽 2시에 명령을 실행
0,10,20 * * * * <CMD> : 매 시간 0분, 10분, 20분마다 명령을 실행
0-30 0 * * * <CMD> : 매일 00:00부터 00:30까지 명령을 실행
*/10 * * * * <CMD> : 매 10분마다 명령을 실행
로그 파일 관리를 도와주는 도구
/etc/cron.daily
디렉토리 내 logrotate를 실행하는 shell script가 존재/etc/logrotate.conf
/etc/logrotate.d/*
옵션 | 설명 | 예시/비고 |
---|---|---|
rotate [숫자] | log파일이 [숫자]개 이상이면 삭제 | rotate 5 |
maxage [숫자] | log파일이 [숫자]일 이상이면 삭제 | maxage 30 |
size | 지정된 용량보다 클 경우 로테이트 실행 | size +100k |
create [권한][유저][그룹] | 로테이트 되는 log파일 권한 지정 | create 644 root root |
notifempty | 로그 내용이 없으면 로테이트 하지 않음 | |
ifempty | 로그 내용이 없어도 로테이트 | |
monthly | 월 단위 로테이트 진행 | |
weekly | 주 단위 로테이트 진행 | |
daily | 일 단위 로테이트 진행 | |
compress | 로테이트 되는 log파일 압축 | |
nocompress | 로테이트 되는 log파일 압축 하지 않음 | |
missingok | log파일이 발견되지 않은 경우 에러처리 하지 않음 | |
dateext | 백업파일의 이름에 날짜가 들어가도록 함 | |
copytruncate | 로그 데이터를 새로운 파일로 카피하고, 기존 파일을 0으로 만들어서, 새 로그 저장용으로 사용(즉, 저장될 파일은 같음) | 장점 : 앱이 로그 파일을 새로 열 필요가 없음. / 단점 : 카피를 하기 때문에 로그내용이 많은 경우 오랜 시간이 걸릴 수 있음 |
postrotate | 로그 로테이션이 완료된 후에 실행될 스크립트 | ex) 앱에 시그널을 보내서 로그 저장용 파일을 새로 여는 것 |
lastaction-endscript | logrotate output을 생성하고 실행 |
cd /data/log/logrotate
vim docker
/var/log/mongodb/mongod.log {
su root root
daily
size 300M
rotate 7
missingok
compress
delaycompress
notifempty
create 664 ubuntu ubuntu
sharedscripts
postrotate
sudo /bin/kill -SIGUSR1 `ps -ef | grep mongod | grep
-v grep | awk '{print $2}’`
endscript
}
logrotate -f /etc/logrotate.d/[rotate_name]
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 222-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate;
fi \
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
invoke-rc.d nginx rotate >/dev/null 2>&1
는 sudo service nginx rotate
명령어와 같음. (즉, nginx log 파일을 새로 오픈한 것)