본 글에서는 >> /dev/null 2>&1의 의미를 풀어서 설명한다.
결론적으로 말하자면 표준출력(stdout)과 표준에러(stderr)를 모두 버린다는 뜻이다.
1. 해석하고자 하는 명령어
./app/myprogram >> /dev/null 2>&1
2. 명령어 뜯어보기
- ./app/myprogram >>
myprogram의 결과를 >> (redirect)에 뒤에 붙여서 쓴다는 의미이다. >>는 뒤에 붙여쓰고 >는 이미 존재하는 파일을 지운다.
- /dev/null
/dev/null은 redirect결과를 버릴때 사용하는 특별한 파일이다. 사실 그래서 위의 명령어에서 >> 대신 >를 사용해도 결과는 동일하다. 따라서 프로그램 표준 출력 결과를 /dev/null에 redirect시켜 모두 버려지게 만드는 것이다.
- 2>&1
2는 표준에러를 의미한다. 표준 에러를 표준인풋(1)으로 redirect 시켜라는 의미이다. 표준인풋은 이미 앞의 명령어로 /dev/null로 redirect 되고 있으므로 표준에러 또한 모두 /dev/null로 redirect 되어 사라지게 된다. 여기서 &의 의미는 파일이 아닌 file descriptor인 표준인풋을 나타내기 위해 사용된다.
3. 사용처
서버에서 프로그램을 구동할때 표준출력이 나오는것을 원치 않으면 명령어를 사용하면 된다. 생각보다 많이 사용하는듯 하다.
참고자료
1. https://stackoverflow.com/questions/10508843/what-is-dev-null-21
2. https://twpower.github.io/133-difference-between-redirect-and-pipe
'코딩공부 > 기타' 카테고리의 다른 글
IgniteFuture을 CompletableFuture로 변환 (0) | 2024.01.21 |
---|---|
java.lang.UnsupportedClassVersionError 원인 및 해결 방법 (1) | 2023.12.09 |
kafka 실행 / topic 생성 / topic 조회 (2.2 버전 이상 / 미만 포함) (0) | 2023.11.24 |
Spring Tool Suite "Could not find tools.jar" 오류 해결법 (0) | 2021.05.05 |
MapDB를 이용한 간단한 파일 DB 구현 (0) | 2021.04.12 |