본문 바로가기

코딩, 엑셀

맥에서 ssh로 프로세스 중단시키지 않게하기


맥에서 터미널로 ssh 프로토콜로 서버에 접속한다음 시간이 좀 오래 걸리는 DB 추출 프로그램을 돌릴 경우가 있다. 짧은 시간에 결과가 나오면 아무런 문제가 없지만, 30분 이상 오래 걸리는 작업일 경우 터미널에서 아래와 같은 오류를 내면서 연결이 끊어지게 된다. 

 

packet_write_wait: Connection to 1.1.1.1 port 22: Broken pipe

 

이렇게 되면 돌리고 있던 job이 완료되지 못하고 중간에 끊기게 되는데 이게 여간 번거러운 일이 아니다. 이를 방지하기 위해서 프로세스가 돌아가고 있는 중간중간에 엔터키를 눌러준다든가 하는식으로 타임아웃을 방지하고 있었는데, 맨날 이렇게 할수도 없고, 잡을 걸어놓고 다른 볼일을 보고 싶어도 할수가 없게 된다. 그래서 검색을 해보니 "nohup" 이라는 도구가 있다는 걸 알게 되었다. 

 

https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_nohup_%EC%82%AC%EC%9A%A9%EB%B2%95

 

리눅스 nohup 사용법 - 제타위키

 

zetawiki.com

이 문서를 자세히 읽어보면 nohup 사용법을 알게 되는데, 그냥 간단하게 아래와 같은 식으로 기존 잡을 돌리면 된다. 

 

nohup python3 db_job.py 30 &

 

이렇게만 해두면 print 결과는 nohup.out 이라는 이름의 파일에 쌓이게 된다.

 

tail -f nohup.out

 

으로 print 결과를 체크하면 된다.

 

 


Only I can change me life, no one can do it for me. – Carol Burnett