오늘은 대한입니다.
sun's longitude:299 56 46.67 
· 자유게시판 · 묻고답하기 · 알파문서 · RPMS list
· 사용자문서 · 팁/FAQ모음 · 리눅스Links · 자료실
· 서버정보 · 운영자 · Books/FAQ · FreeBSD
/board/read.php:소스보기  

질문과 답변 게시판입니다.

현재 실시간으로 이곳 서버의 설정파일(몇개)를 보여주고 있습니다.
서버의 설정내용에 관한 질문은 먼저 이곳 서버의 설정내용을 참고하시길 바랍니다.

[*** 쓰기 금지단어 패턴 ***]
글 본문 중간에 업로드할 이미지를 추가하는 방법 : @@이미지이름@@
ex) @@foo.gif@@
2772 번 글의 답장글: Re: Re: 파일에서 원하는 날짜만...
글쓴이: 김리 글쓴날: 2008년 06월 17일 08:24:56 화(오전) 조회: 2452
지금 제가 근무하는곳이 모 통신사 IDC 내에서 DB 를
관리하는곳이라서

(당연히 쉘이 올라가는곳도 DB 서버)
php 로 돌리는것 자체가 허용이 안되네요.
java 로 짤려고 했었는데 그것도 안된다고 해서..ㅜㅜ
그래도 힌트 주셔서 감사드리고요..
 소스 분석해서 한번 열심히 짜보겠습니다. ^^;

감사합니다.

[산이]님이 남기신 글:

>[김리]님이 남기신 글:
>
>>-----------------------------------------
>>답변자가 기본적으로 참고할 내용입니다.
>>- 배포판(옵션)    : 
>>- 커널버전(옵션)
  : 
>>- 데몬버전(예:apache
 1.3.27) : 
>>- 데몬설치유형(RPM/컴파일/기타)
 : 
>>-----------------------------------------
>>*스팸필터링:한글
 4자(8개 문자) 이상 없으면 스팸페이지로 이동합니다.
>>
>>안녕하세요. ^^;
>>로그가 쌓이는 파일이 있습니다. 
>>
>>파일내용에 보면 날짜가 
>>-----------------------------
>>
>>Sat Jul 28 05:11:10 2001
>>ERROR- 어쩌구 저쩌구..
>>
>>------------------------------
>>
>>이런식으로 되어있습니다.
>>제가 원하는건 ERROR- 라는 문자가 있는 텍스트를 찾되
>>위에 날짜가 오늘것만.. 또는 언제 이후것만 찾고
싶은데
>>도저히 감이 안오네요.
>>
>>ex) sh searcherror.sh 0  <= 오늘것만 가져오기
>>    sh searcherror.sh 3  <= 3일 이내것만 가져오기
>>
>>이런 형식인데요.. 어떤식으로 구현해야 할지 느낌이 잘
안오네요..ㅜㅜ
 
>
>========================================
>
>일단 쉘로 구현하기가 약간 까다로워 보이네요.
>perl 이나 php 또는 파이썬을 이용해서 라인단위로 읽어서 특정
문자열(ERROR)을 만나면 그 이전 라인을 파싱해서 출력하는
방식으로 구현해야 합니다.
>
>쉘로는
>
>tr "@" "_AT_" < logfile | tr "\n" "@"  |
sed -e "s/@ERROR/ ;ERROR/g" | tr "@" "\n" | sed -e
"s/_AT_/@/g" | grep ERROR | grep -v grep
>
>이렇게 하면 ERROR 문자열을 포함한 라인과 바로 위의 라인을
한줄로 출력합니다.
>
>출력한 결과의 각 라인의 "Sat Jul 28 05:11:10 2001" 이것을
현재 시각과 비교해서 오늘것인지 어제것인지 비교 판단해야
하는데 shell 자체로 좀 까다롭네요.
>
>굳지 쉘로 하고자 한다면 php 의 도움을 받아야
합니다.
>
>
>LTIME=`/paht/to/php -r 'echo strtotime("Sat Jul 28 05:11:10
2001");'`
>
>이렇게 하면 $LTIME 변수에 unix timestamp 값이
저장됩니다.
>
>이 unix timestapm 값에 대한 날짜를 YYYYMMDD 형태는
>
>LDATE=`/path/to/php -r 'echo date("Ymd",$LTIME)';`
>
>이고,
>
>현재 시각에 대한 오늘 날짜는 DATE=`date '+%Y%m%d'` 이렇게
하면됩니다. 
>
>또한 하루전은 DATE=`date --date '1 days ago' '+%Y%m%d'`
>
>$LDATE 와 $DATE 가 비교해서 같다면 해당 라인은 매치되는
경우이므로
>해당 라인을 echo 하면 되겠죠.
>
>
>그런데 이렇게 쉘로 짜는 것 보다는 차라니 php 를 전체를
짜는게 좋을 수 있습니다.
>
>..................
>
>-- searcherror.sh --------------
>#!/bin/sh
>
>
>BDATE=`date --date "$1 days ago" "+%Y%m%d"`
>IFS="
>"
>
>for LINE in `tr "@" "_AT_" < logfile | tr "\n"
"@"  | \
>  sed -e "s/@ERROR/ ;ERROR/g" | tr "@" "\n" |
\
>  sed -e "s/_AT_/@/g" | grep ERROR | grep -v grep` ; do
>
>  STIME=`echo $LINE | awk -F ';' '{print $1}'`
>  LDATE=`/path/to/php -r 'echo
date("Ymd",strtotime("${STIME}"))';`
>
>  if [ "${BDATE}" = "${LDATE}" ] ; then
>        echo $LINE
>  fi
>done
>exit $?
>---------------
>
>한번 테스트해 보시고 고쳐서 사용해 보세요. 실행해 보질
않았음. 

========================================

 
이전글 : Re: 파일에서 원하는 날짜만...
다음글 : 3시간전 파일만 찾아서 각각 압축..?  
 from 203.229.169.253
JS(Redhands)Board 0.4 +@

Re: 파일에서 원하는 날짜만... 3시간전 파일만 찾아서 각각 압축..?
인쇄용 


apache lighttpd linuxchannel.net 
Copyright 1997-2026. linuxchannel.net. All rights reserved.

Page loading: 0.01(server) + (network) + (browser) seconds