nohup 명령시에도 putty 로그아웃시 프로세스가 종료되는 문제
ERROR

nohup 명령시에도 putty 로그아웃시 프로세스가 종료되는 문제

728x90
반응형

그냥 넣은 사진

✏️ nohup

자동매매를 돌리고자 백그라운드에서 프로그램이 계속 돌아가게할 필요가 있었다. 따라서 nohup 명령어를 이용했다.

nohup 명령어는 리눅스에서 프로세스를 실행한 터미널의 세션 연결이 끊어져도 지속적으로 동작하도록 해준다.

터미널에서 세션 로그아웃이 발생하면 리눅스는 해당 터미널에서 실행한 프로세스들에게 HUP signal을 전달하여 종료시키는데, nohup 명령어는 프로세스가 이 HUP signal을 무시하도록 해준다.

 

아래와 같은 명령을 입력했다.

nohup python3 -u main.py &

 

✏️ nohup.out 용량 문제

위에서 입력한 명령에 문제가 있었다. 발생하는 로그들이 전부 nohup.out 파일에 기록되기 때문에 디스크 공간을 크게 낭비하는 문제가 발생한 것이다. 필요한 정보들은 전부 슬랙으로 전송하도록 해두었기 때문에 굳이 로그를 남길필요도 없었기에 로그가 남지 않도록하기로 했다.

 

nohup python3 -u main.py 1> /dev/null 2>&1 &

표준 출력과 표준에러를 /dev/null로 재지향해주었다. 1> /dev/null은 표준출력을 사용하지 않겠다는 의미고, 2>&1은 표준에러를 표준출력과 같게 만든다.

 

✏️ nohup 명령어를 사용해도 프로세스가 종료되는 문제

이유는 파악하지 못했다. 참고할 자료가 있다면 댓글을 부탁한다. 해서 disown을 추가하는 방법을 이용했다.

disown은 작업에 대한 소유권을 ssh 세션에서 빼앗는 거다.

nohup python3 -u main.py 1> /dev/null 2>&1 & disown

 

주의할점은 disown명령으로 실행된 프로세스는 ps해도 PID가 나타나지 않는다. ps -e로 숨겨진 것까지 전부 보거나 본 경우엔 ps -e|grep python3 로 확인했다.

728x90
반응형