반응형
스크립트나 명령어 실행시 나오는 시스템 출력등을 로그로 남기는 방법
같이 일하는 동료분이 물어봤는데 하도 오랬만이라 생각이 안났습니다. ㅋㅋ
단지 생각 나는건 CMD 2> /dev/null 리눅스를 하면서 이것을 썻던 기억이.. 자료를 찾아보았습니다.
<출처>http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10302&docId=71786938&qb=uK60qr26IMelwdjD4rfCuea5/Q==
보통 크론을 이렇게 돌리지 않나요...
/script_dir/script_file > /dev/null
혹은 /script_dir/script_file > /var/log/log_filename.log 2>&1
그렇지 않으면 스크립트 내부에 echo 그리고 명령어들을 바꿔 주는겁니다.
cp $1 $2 이런게 있으면 cp $1 $2 > /var/log/log_filename.log 2>&1
echo "context" 는 echo "context" > /var/log/log_filename.log 2>&1
이런식으로 바꾸는겁니다.
콘솔에서 실행한다고 하면
command > logfile 하면 결과중에 표준 출력은 파일로 에러 내용은 화면으로 나옵니다
command 1> logfile 위와 같겠습니다.
command 2> logfile 하면 에러 내용만 파일로 갑니다 표준출력은 화면으로 나옵니다.
command &> logfile 하면 표준 출력 에러출력 모두 파일로 갑니다.
command > logfile 2>&1 표준 출력은 파일로 가는데 에러출력은 표준 출력이랑 같이 나가게 한다는의미로
표준 출력이 나가고 에러가 나가는게 아니라 같이 나갑니다. 결국 윗줄이랑 같습니다.
(꼬고 꼬면 이런거도 됩니다. command 2> logfile >&2 )
심심해서 이렇게 해보니
command > logfile 2> logfile 이건 순서가 다르게 들어가네요.
find 명령어 쓸때 퍼미션 에러 나는거 보기싫으면 다음과 같이 합니다.
find / -name "*alpha*" 2> /dev/null 에러는 널로 가서 없어지고 화면에는 찾은 결과만 나옵니다.
find / -name "*alpha*" 2> /dev/null > search_log 마찬가지로 에러는 널로 가서 없어지고 결과만 파일로~
적다보니 신나서 너무 길게 적었네요... 즐컴하세요
[출처] 쉘 스크립트 실행로그 남기기|작성자 무한류