2013-06-27 3 views
1

7 일 이상 된 파일을 삭제 한 다음 폴더에 기록하는 스크립트가 있습니다. 그것은 모든 것을 정확하게 기록하고 지우지 만,보기를 위해 로그 파일을 열 때 그 파일은 매우 조잡합니다. (메모장에서 열면)BASH의 로깅 구성

/home/u0146121/OldLogFiles/file1.txt/home/u0146121/OldLogFiles을 :

log=$HOME/Deleted/$(date) 
find $HOME/OldLogFiles/ -type f -mtime +7 -delete -print > "$log" 

로그 파일은

예제 파일 출력을 읽기 어려운 /file2.txt/home/u0146121/OldLogFiles/file3.txt

어쨌든 파일을 더 좋고 깨끗하게 로그 할 수 있습니까? 어쩌면 파일 이름, 날짜 삭제 된 및 얼마나 오래된?

+0

메모장 이외의 다른 곳에서 열면 어떻게됩니까? 예 : 'head $ log'를 그냥하면, 제대로 표시됩니까? –

답변

0

로깅에는 logger을 사용하고 실제 로그 처리는 sysloglogrotate으로 두십시오.

+0

그렇게 쉽게 그런 식으로? 어떻게 시작 하시겠습니까? – mkrouse

+0

매뉴얼 페이지가 좋은 시작일 것입니다. syslog와 그 기능에 대한 전반적인 설명은 [here] (http://www.linuxjournal.com/article/5476)을 참조하십시오. [here] (http://www.thegeekstuff.com/2010/07/logrotate- 예제 /) 일부 logrotate 예제. –

0

시도
log = $ HOME/Deleted/$ (date);
# echo -e로 변경하고 필요에 따라 새 줄을 삽입하십시오.
find $ HOME/OldLogFiles/-type f -mtime +7 -exec echo {} \; > "$ log"

0

삭제 스크립트에서 맨 위에 2 개의 변수를 추가하고 "timeDate"및 "logDestination"을 호출 할 수 있습니다. 그들은 다음과 같이 보일 것이다 :

timeDate=$(date "+%d/%m/%Y %T")       
logDestination=/home/$USER/.deleteLog; touch $logDestination 

이제 $ (날짜 "+ % D/% m/%의 Y의 %의 T") 부분은 단순히 현재 날짜와 시간을 가져옵니다. 그것은 시스템 날짜를 얻기 위해 사라집니다. 날짜 (+ % d) 다음 월 및 년 (% m) (% Y) b.t.w 수도 Y는 YYYY와 같이 전체 연도를 반환합니다. 그런 다음 해당 날짜와 시간을 나중에 사용할 수 있도록 변수에 저장합니다.

logDestination 변수에는 .deleteLog라는 파일을 가리키는 디렉토리 또는 파일 경로가 있습니다. 이후 터치 부분은 완전히 필요하지는 않지만 실수로 파일이 없거나 삭제되거나 이름이 변경된 경우 파일을 존재하게합니다.

bash 스크립팅과 프로그래밍 언어 호스트에서 메소드 또는 함수가 만들어 지는데,이 메소드 또는 함수는 대개 단 하나의 작업 만 수행하는 코드 섹션 일뿐입니다. 이 기능은 로그 파일에 메시지를 쓰도록 설계되었습니다.

## Logging function 
function _logger() { 
     echo -e "$timeDate $user - [email protected]\r" >> $log 
} 

기능의 간단한 설명은 정보 양식을 수신 할 수 있다는 것입니다. 위의 함수를 살펴보면 원하는 경우 "$ @"기호를 표시합니다.이 자리 표시자는 함수에서 가리키는 모든 문자열 (텍스트)을 넣을 것입니다.

function _example() { 
    echo -e "[email protected]" 
} 

우리는 문자 그대로 (스크립트에서 아무 곳이나 기능에 따라)을 입력 할 수 있습니다이 함수를 호출과 메시지를주고 : 여기에 몇 가지 문자열이나 입력을 수신 할 수있는 기능을 더 줄일 버전입니다

example "hello" 

"hello"라는 문자열이 함수에 주어지며 함수의 echo 행은 터미널이나 화면에 "hello"를 출력합니다. 에코 라인의 -e는 에코가 활성 부분을 구별하는 데 도움이됩니다. 동작 수정에 대한 이해를 돕기 위해 "man echo"를 사용하는 것이 가장 좋습니다.

그래서 스크립트로 돌아갑니다.

디렉토리의 내용을 삭제하는 행이 있다고 가정 해 보겠습니다 (주의하고주의해야하며 줄은 제외하고 meh를 권장합니다).

삭제 한 후에 전화를 걸 수 있습니다.

_logger "deletion of file (or $FILE) successful." 

_logger 함수는 날짜 시간, 메시지를 넣고 새 줄을 시작합니다 (\ r). 함수의 $ 사용자는 현재보기로 배치됩니다. 귀하의 사용자 이름을 말할 것입니다.

함수를 여러 번 호출하여 코드 중복을 줄이고 스크립트를 더 깔끔하게 만들 수 있습니다.

+0

시스템 날짜를 끌어 로그 파일의 이름을 지정하지 않는 것이 좋습니다. 끔찍한 엉망으로 UTC 날짜 변경 _ 생성 _ 생성. * shudder – deviantlamb

+0

멋지다. 그러나 나는 그것을 이해하지 못한다. 나는 Shell 프로그래밍의 초보자이다. 기본적으로 내 스크립트는 삭제 된 파일을 기록하는 간단한 정리입니다. – mkrouse

+0

좀 더 설명하기 위해 내 대답을 수정했습니다. 가장 쉬운 수정은 \ r을 추가하여 로그 파일이 각 로그 입력을 새 행에 넣도록하는 것입니다. – deviantlamb