2360 번 글의 답장글: Re: Re: Re: Re: 음.. bash 스크립트로... |
글쓴이: ..
|
글쓴날: 2005년 08월 09일 00:56:51 화(새벽) |
조회: 2517 |
[산이]님이 남기신 글:
>
>[..]님이 남기신 글:
>
>>
>>[산이]님이 남기신 글:
>>
>>>
>>>[..]님이 남기신 글:
>>>
>>>>-rw-r--r-- 1 root root 2548 8월 4 00:00 access_log
>>>>lrwxrwxrwx 1 root root 30 8월 4 03:49 aaa-acc ->
/var/www/logs/aaa-acc.050804
>>>>-rw-r--r-- 1 root root 253465 8월 2 23:59
aaa-acc.050802
>>>>-rw-r--r-- 1 root root 455701 8월 3 23:59
aaa-acc.050803
>>>>-rw-r--r-- 1 root root 38791 8월 4 04:11
aaa-acc.050804
>>>>-rw-r--r-- 1 root root 4274 8월 4 01:58 aaa-err
>>>>-rw-r--r-- 1 root root 4828 8월 4 03:48 error_log
>>>>lrwxrwxrwx 1 root root 32 8월 4 03:40 bbb-acc ->
/var/www/logs/bbb-acc.050804
>>>>-rw-r--r-- 1 root root 35058 8월 2 23:28
bbb-acc.050802
>>>>-rw-r--r-- 1 root root 57491 8월 3 23:25
bbb-acc.050803
>>>>-rw-r--r-- 1 root root 811 8월 4 03:40
bbb-acc.050804
>>>>-rw-r--r-- 1 root root 1181 8월 4 03:40 bbb-err
>>>>-rw-r--r-- 1 root root 5 8월 4 03:48 httpd.pid
>>>>-rw-r--r-- 1 nobody nobody 212 8월 4 03:48
mod_throttle.runtime
>>>>lrwxrwxrwx 1 root root 31 8월 2 11:16 ccc-acc ->
/var/www/logs/ccc-acc.050802
>>>>-rw-r--r-- 1 root root 29305 8월 2 15:51
ccc-acc.050802
>>>>-rw-r--r-- 1 root root 107 8월 2 11:16 ccc-err
>>>>
>>>>현재 위와 같은 로그 파일들이 있습니다.
>>>>로그파일은 crono를 이용하여 매일 심볼릭링크가 오늘날짜로
설정되도록 했습니다.
>>>>하고자 하는 작업은.. 어제 날짜들의 로그파일을 삭제하도록
하고 싶은데요.
>>>>여기서 조건이 한가지가 더 따라오더군요.
>>>>crono 프로그램이 access 파일을 오늘 날짜로 링크를 시켜주는
기능이 있더군요.
>>>>그런데 문제는 어세스파일의 갱신이 없으면, 즉 방문자가
없으면 몇일이 지나도 계속 마지막 갱신된 파일에 링크가
걸려있다는거죠.
>>>>예를 들면 aaa-acc -> aaa-acc.050801 이라는거죠. 오늘 날짜는
050804일 이라도요. 위에 ccc-acc를 보시면 이해가
될것같네요.
>>>>그래서 하루전 로그파일을 무조건 삭제하도록 하면, 갱신이
없는 로그파일 같은 경우도 삭제되므로
>>>>그것을 막기 위해 시스템에서 0시에 한번씩 wget으로 인덱스
파일을 긁어오도록 하려고요.
>>>>
>>>>첫번째조건.
어제 날짜(aaa-acc.YYMMDD)의
로그를 삭제할 것.
>>>
>>>YESTERDAY=`date --date '1 days ago' '+%y%m%d' 2>/dev/null` ## YYMMDD
>>>TODAY=`date '+%y%m%d' 2>/dev/null`
>>>
>>>YLOG="/var/www/logs/aaa-acc.${YESTERDAY}" ## 어제 로그
>>>TLOG="/var/www/logs/aaa-acc.${YESTERDAY}" ## 오늘 로그
>>>
>>>[ -f $YLOG ] && rm -f $YLOG
>>>
>>>
>>>>두번째조건.
하루동안 방문자가 1명도 없는 홈페이지의 경우는
>>>>어세스 파일 링크가 계속 몇일전 파일로 링크되어 있을수가
있으므로
>>>>시스템에서 wget을 통하여 사이트를 한번씩
긁어올것.
>>>>(어세스 로그를 갱신하여 오늘 날짜 로그가 생성되도록
유도.)
>>>
>>>wget .... -O /var/www/logs/aaa-acc.${TODAY}
>>>rm -f /var/www/logs/aaa-acc ## 강제삭제
>>>
>>>[ ! -f $TLOG ] && touch /var/www/logs/aaa-acc.${TODAY}
>>>
>>>ln -sf /var/www/logs/aaa-acc.${TODAY} /var/www/logs/aaa-acc
>>>
>>>이렇게 하면 될꼽니다. :)
>>>
>>>>
>>>>위 조건대로 bash 스크립트를 짜려고 하는데 이거 무지하게
힘들군요.
>>>>다른부분은 몰라도, 첫번째 조건 매칭하기가 너무
어렵습니다 ㅠ_ㅠ
>>>
>>>========================================
>>
>>========================================
>>
>>답변 감사드립니다.
>>그런데 첫번째에서 저건 문제가 안되는데.. 가장큰
문제는..
>>파일이 여러개이다 보니까 리스트를 뽑아 매칭해서 삭제해야
한다는겁니다.
>
>## 최근 7개만 남기고 모두 삭제하기
>##
>
>IFS='
>'
>cd /var/www/logs || exit 1
>
>N=0
>LISTS=`ls -t aaa-acc.* 2>/dev/null`
>
>for file in $LISTS ; do
> [ $N -ge 7 ] && rm -f $file
> N=`expr $N + 1`
>done
>
>이렇게 짜고 테스트해 보세요.
>
>>두번째 같은 경우는 그냥 wget 한번 해주면 cronolog가
알아서
>>링크를 바꿔주므로 별다른 작업은 필요없을듯 하고요. :-)
>
>========================================
========================================
감사합니다.
그런데 그냥 전 야메로 처리했습니다;;
|
이전글 : Re: Re: Re: 음.. bash 스크립트로...
다음글 : 산이님! 페이지 저장에 궁금한게 있습니다.
|
from 61.74.175.118
JS(Redhands)Board 0.4 +@
|