본 글에서는 >> /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
What is /dev/null 2>&1?
I found this piece of code in /etc/cron.daily/apf #!/bin/bash /etc/apf/apf -f >> /dev/null 2>&1 /etc/apf/apf -s >> /dev/null 2>&1 It's flushing and reloading the
stackoverflow.com
2. https://twpower.github.io/133-difference-between-redirect-and-pipe
[Linux] Redirect('>')와 Pipe('|')의 차이
Practice makes perfect!
twpower.github.io
🐧 /dev/null 2>&1 명령어 의미 - 완벽 이해하기
리눅스 리다이렉션 2>&1 는 표준에러를 표준출력으로 redirection 하라는 의미이다. 보통 프로그램에서 에러가 발생하면, 화면에 에러메세지를 표시해서 사용자에게 경고를 주게 된다. 이러한 기본
inpa.tistory.com
'코딩공부 > 기타' 카테고리의 다른 글
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 |