본문 바로가기

컴퓨터활용/유닉스

쉘에서 로그 출력 방향 지정


■ 예약되어진 파일 기술자(File Descriptor)

---------------------------------------
번호  설 명
---------------------------------------
0    표준입력 stdin (Standard Input)
1    표준출력 stdout(Standard Ouput)
2    표준에러 stderr(Standard Error)

---------------------------------------


쉘은 아래 그림과 같이 표준입력을 키보드로, 표준 출력을 모니터로, 표준 에러를

모니터로 지정해석한다. 특별한 입력이 지정되지 않는다면 키보드에서 입력을 받

고 정상적인 출력 결과나 에러 메세지의 출력 방향이 지정되지 않는 경우  모니터

로 지정되는 것을 의미한다.


# ls /var /nodir > file.txt

 

모니터에 출력되는 내용은 정상적인 출력 결과와 에러 메세지이다. ">" 기호를 통해서 정상

적인 출력 결과는 file.txt 파일에 출력하도록 지정이 되어 있고, 에러메세지는 지정이 되어 있지 않으므로 모니터에 출력된다.



# ls /var /nodir 2> file.txt

 

정상적인 출력결과는 모니터에 출력이 되고 에러 메세지는 file.txt 파일에 출력되도록 지정 되어 있다.



# ls /var /nodir > file1.txt 2> file2.txt

 

정상적인 출력결과는 file1.txt 파일에 에러메세지는 file2.txt 파일에 출력되도록 설정 되었다.



# ls /var /nodir > file1.txt 2>&1
 

정상적인 출력결과와 에러메세지를 모두 file1.txt 파일에 출력되도록 설정 되었다.



[참고] CMD 2>/dev/null
일반사용자 전체 시스템의 파일과 디렉토리 목록중에 core 파일을 찾을려고 할때 검색할려고하는 내용보다 권한이 되지 않아서 'Permission Denied' 에러 메세지가 더 많이 출력되는 경우가 존재할 수 있다. 이런 경우 명령어의 마지막에 '2>/dev/null'을 붙여서 에러메세지는 보지 않고 정상적인 출력 결과만 보는 경우가 있다. 그런 경우 다음과 같이 명령어를 수행할 때 명령어의 끝 부분에 "2>/dev/null"을 붙인다.


$ find / -name core -type f 2>/dev/null