2360 번 글의 답장글: Re: 음.. bash 스크립트로... |
글쓴이: 산이
[홈페이지]
|
글쓴날: 2005년 08월 08일 20:19:37 월(저녁) |
조회: 2542 |
[..]님이 남기신 글:
>-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 스크립트를 짜려고 하는데 이거 무지하게
힘들군요.
>다른부분은 몰라도, 첫번째 조건 매칭하기가 너무 어렵습니다
ㅠ_ㅠ
========================================
|
이전글 : 음.. bash 스크립트로...
다음글 : Re: Re: 음.. bash 스크립트로...
|
from 222.106.218.166
JS(Redhands)Board 0.4 +@
|