shell(#mode)에서 간단하게 명령어를 통해 테스트를 진행하면서 "/dev/null 2>&1"의 의미를 알아봅니다.
아래 명령어는 표준 출력을 /dev/null로 redirection 하라는 의미로 표준출력을 버리라는 의미입니다.
$ rm test > /dev/null
하지만, test라는 file이 존재하지 않는 경우 아래와 같은 표준에러가 출력됩니다.
$ rm test > /dev/null
rm: cannot remove 'test': No such file or directory
방금 언급했지만, 이것은 "표준출력"이 아닌 "표준에러"이기 때문에 화면에 출력이 된것입니다.
다시 강조하면 위에 예제는 /dev/null 로 redirection 을 통해 화면 출력을 하지 않는것은 표준출력에 한해서 해당됩니다.
자 그렇다면, 표준에러를 버리고 싶다면 아래와 같이 사용하도록 합시다,
$ rm test > /dev/null 2>&1
2>&1 는 표준에러를 표준출력으로 redirection 하라는 의미입니다.
- 0 : 표준입력
- 1 : 표준출력
- 2 : 표준에러
정리하면 "rm test"의 표준출력을 /dev/null로 버리는데, 표준에러는 표준출력으로 redirection 합니다.
결국 결과는 표준출력이 되기 때문에 /dev/null로 버려지고, 화면에 결과가 뿌려지지 않게 되는 것입니다.
/dev/null과 2>&1를 같이 사용하지 않는 경우 위의 예제는 결국 표준출력되기 때문에 화면에 에러 내용이 출력됩니다.
한편 표준출력과 표준에러를 분리해서 파일로 저장하고 싶을 때는 아래와 같은 형식을 사용할 수 있습니다.
$ foo.sh 1>output.log 2>error.log
-----------------------------------------------------------------------------------------------------------------------------------
nohup이란? 리눅스, 유닉스에서 쉘스크립트 파일( *.sh)을 데몬 형태로 실행시키는 프로그램
터미널 세션이 끊겨도 실행을 멈추지 않고 동작하도록 함.
& 이란? 프로세스를 실행할 때 백그라운드에서 동작하도록 만드는 명령어
nohup으로 실행할 쉘 스크립트파일(*.sh)은 현재 퍼미션이 755 이상 상태여야 가능. ( e.g. chmod 755 shell.sh )
실행 방법
$ nohup shell.sh &
$ nohup -- ./shell.sh &
종료 방법
"ps -ef | grep #{shell스크립트 파일명}"
kill -9 #{shell pid}
출처사이트 : https://jybaek.tistory.com/115, https://brownbears.tistory.com/164
'Linux' 카테고리의 다른 글
[Linux] JVM 상태 모니터링 및 GC 정보 확인 ( jstat 명령어 ) (0) | 2024.01.25 |
---|---|
[Linux] Socket 상태 조회 ( Socket Statistics ) (1) | 2024.01.24 |
[Linux] TCPDUMP 사용법 (0) | 2021.02.06 |