#매일 오후 4시 48분에 /log/app의 5일 경과한 로그 삭제
48 16 * * * find /log/app -ctime +5 -exec rm -rf {} \;
crond은 정해놓은 주기 시간마다 반복적으로 프로그램을 수행하도록 하는 데몬입니다.
특정시간 파일을 지우는프로그램을 crond 에 등록 하기
crond은 crontab 라는 것으로 작업목록이 등록 됩니다.
순서 : 1. 파일을 지우는 명령을 작성한다.
2. crontab에 등록한다.
3. crond 데몬을 재구동 한다. : 구동이 안된경우도 있으므로
1. crontab 등록 방법
# crontab 형식
# Min(0-59) Hour(0-23) Day(1-31) Mon(1-12) Week(0-6) command
5분 마다 command가 수행되도록 하는 방법을 예로 들어보면
1) */5 * * * * command
2) 0,5,10,15,20,30,35,40,45,50,55 * * * * command
3) Week 0 또는 7이 일요일 1부터 월요일
설명 :
command 앞에는 5가지 필드가 주기를 나타냅니다. ( 필드마다 스페이스로 구분)
순서대로 분 시 일 월 주 를 가리킵니다.
그리고 각 주기는 아래와 같이 숫자로 또는 * 로 설정 합니다.
* : 는 항상을 나타내고 숫자는 해당 위치에 따라 각 분 시 일 주 등을 나타냅니다.
위의 내용은 매 */5 분 마다 매시간 매일 매월 매주 command를 수행하라입니다.
2. 명령 작성
crontab이 뭔지는 아셨지요 ? (더자세한 것은 man 페이지를 참고 하시면 됩니다.)
파일을 지워야 하니 command 대신 파일 지우는 command 또는 셀 스크립트를 작성 해야 합니다.
error 파일은 그냥 두고 error.6405, error.16369 .. 들을 지우신다면
파일의 내용을 지우거나 파일을 지우려면 아래 내용을 수정해서 쓰시면 됩니다.
cat /home/work_bin/remove.sh
------------------------------
#!/bin/bash
# 파일을 삭제한다. error.6405, error.16369 ..
find /home/work/ -name error.* -exec rm -rf {} \;
#error 파일은 내용만 지운다
find /home/work/ -name error -exec cat /dev/null > {} \;
또는
cat /dev/null > error
[추가]
특정한 파일이 특정 기간이 지난 것만 지우는 법
find [Dir] -name error* -ctime +n : n day 이전에 생성된 파일
find [Dir] -name error* -mtime n : n day 1일간 에 수정된 파일만
find [Dir] -name error* -ctime +30 : 30일 이전 파일들을 모두 찾는다.
- ctime : 파일이 생성된 시간을 가진다.
- mtime 은 마지막 수정한 시간이다. 따라서 함부로 파일을 열고 닫으면서
- atime 은 마지막으로 access 된 시간이다 ( vi, cat ) 등으로 파일을 읽으면 변경됨.
- +n : n days ago
- n : n days ago
3. 셀 스크립트를 테스트 해보셔야 합니다.
파일 권한이 없어서 파일이 지워 지지 않는다면 root 계정에 cron 작업을 등록 해야 합니다.
4. crontab -e 명령으로
아래중 원하는 내용을 등록 하시면 됩니다.
# 매 5 분마다
*/5 * * * * sh /home/work_bin/remove.sh > /dev/null
# 매일 1시 마다 수행
0 1 * * * sh /home/work_bin/remove.sh > /dev/null
# 매일 오후 1시~4시 수행
0 13,14,15,16 * * * sh /home/work_bin/remove.sh > /dev/null
5. crond 구동
------------------------------------------------------------------
참고로 위사항은 의 crond 가 구동이 되어 있어야 수행합니다.
[root@dev5 ODBS22]# chkconfig --list crond
crond 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
서비스가 구동 되도록 등록 되어 있는지 확인 하시고
(현재 런레벨 3 5 중에 해제 혹은 off 이면 구동이 안되고 있겠지요)
[root@dev5 ODBS22]# chkconfig --level 345 crond on
[root@dev5 ODBS22]# /etc/rc.d/init.d/crond restart
하셔야 재부팅시도 crond가 계속 작동 됩니다.
good Luck..!
'IT > Linux_Apache_Nginx' 카테고리의 다른 글
[Linux]디스크 대량 사용 확인 및 조치 (0) | 2020.03.30 |
---|---|
Start / Stop and Restart Apache 2 Web Server Command (0) | 2019.11.05 |
Linux Shell 예제 (0) | 2019.09.19 |
zsh 쉘에서 단어 단위 이동 설정 (0) | 2019.09.18 |
Apache Rewrite Module (0) | 2019.08.07 |