본문 바로가기
Dev Log/Server

/dev/null 이해하기

by 삽질하는큐 2021. 10. 14.

Backend 개발자로서 업무 중에 스크립트를 작성할 일이 많지 않지만, 배포 스크립트를 작성하다 보면 리눅스 잘 모르는 사람으로서 당황스러운 구문이 /dev/null이었다.

 

 

java -jar myapplication.jar > /dev/null 2> /dev/null < /dev/null &

 

이 구문은 다섯가지 구문으로 나눠볼 수 있는데,

java -jar myapplication.jar

=> jar로 되어있는 프로그램을 실행시킨다.

 

 

> /dev/null

=> 실행 결과에 대한 응답값(STDOUT)을 무시한다.

 

 

2> /dev/null

=> 실행시 오류(STDERR)를 무시한다.

 

 

< /dev/null

=> 실행한 곳에 EOF를 전달한다.

 

&

=> 백그라운드로 실행한다.

 

/dev/null 자체는 리눅스에서 null device로서 쓰여진 모든 내용이 지워지는 곳이라고 한다.

2라는 숫자는 표준 스트림에 해당하는데,

0 - 표준 입력

1 - 표준 출력

2 - 표준 오류라고 한다.

 

> /dev/null

에서는 사실 1이 생략되어있는 것과 동일하다고 한다.

 

STDOUT, STDERR을 무시하는 구문은 두 개를 합쳐서 이렇게 써도 된다고 한다.

> /dev/null 2>&1
OR
&> /dev/null