Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- Transfer-Encoding
- singleton
- Keep-Alive
- object
- InvocationHandler
- getRequestURI
- Session
- chunked
- Java
- clone
- Proxy
- Content-Length
- http/1.1
- Reference
- toString
- urlclassloader
- unmodifiableList
- reflection
- cookie
- http
Archives
- Today
- Total
pungjoo
standard output and standard error 본문
들어 가면서
우리들에게 입력과 출력을 담당하는 디바이스가 점점 많아지고 있습니다. 이런 입/출력 디바이스 중에 표준 출력에 대해서 알아 봅시다. 더불어 표준 오류도...
경험
쉘(shell) script를 보면 끝자락에 '> /dev/null 2>&1' 같은 이상 야릇한 기호가 들어 있는 경우가 있습니다.
풀이
'>'의 의미는 좌측에서 행해진 결과를 '>'를 기준으로 우측으로 보낸다는 의미입니다.
'> /dev/null' 은 결국 좌측에서 행해진 결과를 우측인 '널 디바이스'에게 보낸다는 것이죠. 즉 허공에 날린다....
그런데 이때 중요한 표준 오류에 대해서 간과하는 경향이 있습니다. 즉, 표준 출력만 알고 표준 오류는 모른다는 것이죠. 이클립스 같은 IDE를 사용하다 보면 오류 부분이 '붉은색(정의 하기 나름이겠지만)'으로 보이는 경험을 했을 것입니다. 이 부분은 일반적으로 System.err.print..(); 을 통해 출력한 내용입니다. logging을 사용하고 있다면 로깅 레벨에 따라서 붉게 표기가 되는 경우가 있겠죠..
예제
위와 같은 예제를 평상시 처럼 실행해 보겠습니다.
이번에는 표준 출력에 대한 이상 야릇한 문자열을 넣어 실행해 보겠습니다.
이번에는 다른 문자열을 넣어 실행해 보겠습니다.
정리
1> /tmp/log.txt 는 표준 출력에 해당하는 디바이스를 화면이 아닌 file로 변경한 것이고
2> /tmp/log.txt 는 표준 오류에 해당하는 디바이스를 화면이 아닌 file로 변경한 것입니다.
> /tmp/log.txt 2>&1 는 표준 출력/ 표준 오류를 표준 디바이스에서 /tmp/log.txt file로 변경한 것입니다.
@
우리들에게 입력과 출력을 담당하는 디바이스가 점점 많아지고 있습니다. 이런 입/출력 디바이스 중에 표준 출력에 대해서 알아 봅시다. 더불어 표준 오류도...
경험
쉘(shell) script를 보면 끝자락에 '> /dev/null 2>&1' 같은 이상 야릇한 기호가 들어 있는 경우가 있습니다.
풀이
'>'의 의미는 좌측에서 행해진 결과를 '>'를 기준으로 우측으로 보낸다는 의미입니다.
'> /dev/null' 은 결국 좌측에서 행해진 결과를 우측인 '널 디바이스'에게 보낸다는 것이죠. 즉 허공에 날린다....
그런데 이때 중요한 표준 오류에 대해서 간과하는 경향이 있습니다. 즉, 표준 출력만 알고 표준 오류는 모른다는 것이죠. 이클립스 같은 IDE를 사용하다 보면 오류 부분이 '붉은색(정의 하기 나름이겠지만)'으로 보이는 경험을 했을 것입니다. 이 부분은 일반적으로 System.err.print..(); 을 통해 출력한 내용입니다. logging을 사용하고 있다면 로깅 레벨에 따라서 붉게 표기가 되는 경우가 있겠죠..
예제
[pungjoo@do1 /home/pungjoo/test]$ ls -la
합계 12
drwxrwxr-x 2 pungjoo pungjoo 4096 4월 21 08:05 .
drwx------ 9 pungjoo pungjoo 4096 4월 21 07:56 ..
-rw-rw-r-- 1 pungjoo pungjoo 150 4월 21 08:04 Test.java
[pungjoo@do1 /home/pungjoo/test]$ cat Test.java
public class Test {
public static void main(String[] args) {
System.out.println( "표준 출력" );
System.err.println( "표준 에러" );
}
}
합계 12
drwxrwxr-x 2 pungjoo pungjoo 4096 4월 21 08:05 .
drwx------ 9 pungjoo pungjoo 4096 4월 21 07:56 ..
-rw-rw-r-- 1 pungjoo pungjoo 150 4월 21 08:04 Test.java
[pungjoo@do1 /home/pungjoo/test]$ cat Test.java
public class Test {
public static void main(String[] args) {
System.out.println( "표준 출력" );
System.err.println( "표준 에러" );
}
}
위와 같은 예제를 평상시 처럼 실행해 보겠습니다.
[pungjoo@do1 /home/pungjoo/test]$ java Test
표준 출력
표준 에러
[pungjoo@do1 /home/pungjoo/test]$
표준 출력
표준 에러
[pungjoo@do1 /home/pungjoo/test]$
이번에는 표준 출력에 대한 이상 야릇한 문자열을 넣어 실행해 보겠습니다.
[pungjoo@do1 /home/pungjoo/test]$ java Test 2> error.txt
표준 출력
[pungjoo@do1 /home/pungjoo/test]$ cat error.txt
표준 에러
[pungjoo@do1 /home/pungjoo/test]$
'2> error.txt'를 추가를 하고 실행하니 '표준 출력'만 표기가 되고 있는 것을 볼 수 있습니다. 또한 error.txt를 보면 출력되지 않았던 '표준 에러'라는 문자열이 보입니다.표준 출력
[pungjoo@do1 /home/pungjoo/test]$ cat error.txt
표준 에러
[pungjoo@do1 /home/pungjoo/test]$
이번에는 다른 문자열을 넣어 실행해 보겠습니다.
[pungjoo@do1 /home/pungjoo/test]$ java Test 1> out.txt
표준 에러
[pungjoo@do1 /home/pungjoo/test]$ cat out.txt
표준 출력
[pungjoo@do1 /home/pungjoo/test]$
이번에는 '1> out.txt'를 추가하고 실행하니 위와는 반대로 '표준 에러'만 표기 되고 out.txt에 '표준 출력'이라는 문자열이 들어가 있는 것을 볼 수 있습니다.표준 에러
[pungjoo@do1 /home/pungjoo/test]$ cat out.txt
표준 출력
[pungjoo@do1 /home/pungjoo/test]$
정리
1> /tmp/log.txt 는 표준 출력에 해당하는 디바이스를 화면이 아닌 file로 변경한 것이고
2> /tmp/log.txt 는 표준 오류에 해당하는 디바이스를 화면이 아닌 file로 변경한 것입니다.
> /tmp/log.txt 2>&1 는 표준 출력/ 표준 오류를 표준 디바이스에서 /tmp/log.txt file로 변경한 것입니다.
@
Comments