/dev/null 2>&1 & 이란

>/dev/null 2>&1 & 이 무엇인지 알아봅니다.

출력을 전부 없애버리고 데몬에서 앱을 구동합니다.


/dev/null 2>&1 &

sample.jar /dev/null 2>&1 &

  • sample.jar 이란 파일을 실행시키려고 합니다.
  • 그런데 뒤에 이상한 명령들이 붙어있고 처음에는 굉장히 혼란 스럽습니다.

설명

데몬에서 돌아가라.

  • /dev/null 위치에다가 넣으라는뜻 입니다.
    • 이때 /dev/null 은 그냥 없는 공간입니다. 이곳에 넣으라는 이야기는 버리라는 이야기 입니다.
  • 2>&1
    • 2 가 의미하는것은 표준 에러입니다.
    • > 가 의미하는것은 그쪽으로 리다이렉트 하라는 뜻입니다
    • &1 가 의미하는것은 표준 출력을 의미하는 것입니다.
    • 즉 의미하는것은 >dev/null 에다가 표준에러 2 를 표준출력 1로 바꿔 넣으라고 하는것 입니다.
      • 만약 에러 로그를 보고 싶다면 dev/null 이 아닌 적절한 위치로 경로를 바꿔주면 됩니다.
  • &
    • 데몬, 백그라운드에서 구동시키게 하는것은 맨 뒤의 & 명령입니다.

정리

  • sample.jar /dev/null 2>&1 &
  • sample.jar 를 구동시키는데, 표준에러를 표준출력으로 리다이렉트 하여 버리고 백그라운드에서 구동하라는 뜻입니다.
    • 출력을 전부 없애버리고 데몬에서 앱을 구동합니다.

사용되는곳

  • 클라우드를 통해 앱을 배포하거나 할때, 해당 명령이 없다면, 계속해서 해당앱으로부터 나오는 출력이 있어 배포에 실패합니다.
    • 이런경우에 쉘을 통해 해당 명령으로 배포를 하면 문제없이 배포가 됩니다.

Reference

  • https://reebok.tistory.com/56
  • https://redcow77.tistory.com/213?category=919764