안녕하세요! 덩덩윤입니다.
2월 22일에 글을 쓴 이후로 첫 글을 쓰게 되었는데요,,,
워낙 정신없는 한 달을 보내느라 이렇게 되어 버렸네요 ....
사수분의 퇴사 ,,, 코로나 이슈 등등 ,,,

해서 오늘부터 다시 열심히 글을 써볼까 합니다! 화이팅 ,,~~
오늘은 리눅스 계열 운영체제에서 세션이 끊겨도 프로세스를 계속해서 수행하는 명령어를 알아보고자 합니다.
먼저. 왜 이런 명령어가 필요할까요? 서버 운영 측면에서 생각을 해보겠습니다.
엔지니어가 서버와의 연결 세션을 24/7으로 유지하면서 프로세스를 모니터링하는 것은 너무 비효율적이겠죠?!
더군다나 한 명의 담당 엔지니어가 관리하는 서버가 단 한대만 존재하는 일도 없을거고요...
이때 사용할 수 있는 것이 nohup 명령어입니다!
nohup 명령어를 사용해 실행한 프로세스는, 데몬 형태로 실행되어
서버와의 연결 세션이 끊어진다고 하더라도 계속해서 해당 작업을 수행하게 되는 것이죠!
이런 일이 가능하게 해주는 원리는 nohup 이라는 용어가 의미하는 바를 살펴보면 이해할 수 있습니다.
서버와 연결된 터미널에서 세션 로그아웃이 발생할때,
리눅스는 '해당 터미널'에서 수행된 프로세스에 대해 HUP 시그널을 전달해서 종료를 시키는데,
nohup 은 이 HUP 시그널을 무시한다는 의미를 가지고 있습니다!
때문에 세션 로그아웃이 발생하더라도 프로세스가 종료되지 않고 실행될 수 있는것이라고 합니다.
그럼 nohup 명령어의 사용법을 살펴보기 위해
저번에 알아보았던 man 명령어를 사용해볼까요 ~~
생각보다 컨텐츠가 많지 않네요 ?
hang up(HUP) signal 을 무시하는 명령어를 수행한다는 내용과,
nohup 명령어를 수행한 결과 아웃풋은 어느 경로에 출력되는지 등등에 관한 내용을 찾아볼 수 있습니다!
더욱 상세한 내용은
$ info coreutils nohup invocation
명령어를 입력하면 알아볼 수 있다고 하니 궁금하신 분들은 쉘에서 실행해보세요 ~!
그럼 실질적으로 nohup 명령어를 사용하는 예시에 대해 알아보겠습니다.
$ nohup ./example.sh
요렇게 간단하게 명령어를 사용할 수 있는데, 이렇게 아무 옵션을 주지 않고 nohup 명령어를 줄 경우엔
해당 프로그램의 출력이 nohup.out 에 출력되게 됩니다.
그럼 여기말고 다른 파일에 출력 결과를 쓰고 싶다면?
$ nohup ./example.sh > example_output.out
이렇게 >를 사용해서 출력을 기록할 파일을 옵션으로 줄 수가 있구요!
저는 출력결과는 기록안하고 그냥 HUP 시그널만 안받게하고 싶은데요? 라고 할 땐
$ nohup ./example.sh > /dev/null
/dev/null 이라는 경로로 출력을 정해주면, 출력 실패 에러 없이 출력 결과를 그냥 버릴 수 있습니다!
참고로 /dev/null 은 리눅스에서 출력을 버려 버릴 때! 자주 사용되는 경로이므로
알아두시면 요긴하게 사용하실수 있을거에요~!
그리고 저는 서버 작업이 있을때 nohup 명령어를 이렇게 사용한답니다!
$ nohup ./example.sh > /dev/null 2>&1 &
2>&1 & 라는 부분이 명령어에 추가된 것을 보실 수가 있는데,
여기서 2>&1 이 의미하는 바는, 표준에러까지도 표준출력으로 리디렉션시켜서
표준에러 출력도 버리겠다는 내용이구요!
맨 마지막에 & 은 백그라운드에서 프로세스를 실행시켜 동시에 다른 작업도 가능하게하기 위함입니다.
2>&1 을 자세하게 이해하기 위해서는 파일 디스크립터 개념을 알아야하는데,
https://jybaek.tistory.com/115
/dev/null 2>&1 의미
shell(#mode)에서 간단하게 명령어를 통해 테스트를 진행하면서 "/dev/null 2>&1"의 의미를 알아봅니다. 아래 명령어는 표준 출력을 /dev/null로 redirection 하라는 의미로 표준출력을 버리라는 의미입니다.
jybaek.tistory.com
리눅스 명령어 /dev/null 2>&1 의 의미를 알아봅시다.
안녕하세요. 이번 시간에는 /dev/null 2>&1의 의미를 알아보겠습니다. 이 글을 읽기 전에 파일 디스크립터와 dup2 함수 등에 대한 개념을 잡고 오시면 조금 더 편할 듯 싶습니다. [관련글] 파일 디스
codingdog.tistory.com
요 글들에 설명이 너무 잘돼있어서 참고하시면 좋을 것 같아요!
요렇게 nohup 가 어떤 명령어인지, 어떻게 사용하는지에 대한 내용을 알아보았습니다!
요 글을 읽어주신 분들께 도움이 되는 내용이었으면 좋겠습니다 ㅎㅎㅎ
그럼 오늘은 여기까지 쓰겠습니다 ~~~~~~ 뿅
참고한 사이트👍
https://joonyon.tistory.com/98
https://gracefulprograming.tistory.com/128
https://jybaek.tistory.com/115
/dev/null 2>&1 의미
shell(#mode)에서 간단하게 명령어를 통해 테스트를 진행하면서 "/dev/null 2>&1"의 의미를 알아봅니다. 아래 명령어는 표준 출력을 /dev/null로 redirection 하라는 의미로 표준출력을 버리라는 의미입니다.
jybaek.tistory.com
'IT 공부 > UNIX + LINUX' 카테고리의 다른 글
[UNIX/Linux] 리눅스의 접근 권한 제어 시스템, Permission (0) | 2022.05.28 |
---|---|
[UNIX/Linux] 명령어 매뉴얼을 살펴보자! --help 와 man (0) | 2022.02.22 |