ROKO

[Linux] SSH 종료 이후에도 process 실행 본문

Develop

[Linux] SSH 종료 이후에도 process 실행

RO_KO 2023. 2. 19. 09:33
728x90

인턴 생활하면서 실수나 혹은 서버에러로 서버와 ssh 연결이 끊어질때 실행시킨 프로세스가 중단되어 다시 학습시켜야 하는 과정이 필요했다. 물론 Check point 설정을 해놓으면 몹시 좋을 것이다. 하지만 인턴서버는 총 120Giga 메모리로 10명 남짓이 사용중이며 관리 권한이 꼬이면서 내부 temp 파일을 정리하지 못해. 불필요한 메모리 사용을 지양해 달라는 얘기를 들었다. 

 

그렇다면 이 상황에서 그나마 나은 선택이 무엇일까?

메모리 부족으로 인한 메모리 오버플로우는 해결할 수 없다. ssh 끊김 이후에도 프로세스 실행이 계속된다면 좀 더 리스크를 관리하기 쉽고 다른업무를 보기도 편하지 않을까?

 

해결 방법으로 아래와 같은 방법이 있다.

  • Back ground 실행
# command 뒤에 &를 입력하면 bg로 프로세스가 옮겨진다.
<command> &
  • disown
# 터미널 작업 리스트에서 해당 프로세스를 제거함으로써 ssh 종료에도 영향을 받지 않게함.
disown

bg (Back ground) 실행 후 jobs -l 을 실행하면 현재 터미널에서 실행중인 프로세스들이 출력된다.

disown 이후 jobs -l 을 실행하면 작업리스트에서 사라진것을 확인 할 수 있다.

 

  • 만약 여러 프로세스를 bg로 돌린경우 %<process index> 를 통해 실행해주면 된다.
# ex [1]proc 을 disown 할 경우
disown %1

 

  • fg (fore ground)로 가져오고 싶은 경우
# proc 1개 일때
fg

# proc 여러개 일때
fg %<process index>

TMUX

원래는 tmux를 사용하려 하였다. bash,zsh shell 기본 package가 아닌 따로 설치를 진행해주어야 하는 package이다.

 

linux install

# sudo -> super 관리자 모드, apt-get -> advanced package tool 약자로 linux, ubuntu debian 계열 설치 툴
sudo apt-get tmux

나는 linux sudo 관리 권한이 없을 뿐더라 권한 관리가 꼬인 상태여서 사용할 수 없었다. \(\rightarrow\) 서버 담당 박사과정 선배들이 욕을 하며 골머리를 앓는 중이다.

 

tmux 에 대해 알아보기 [link]


nohup

다른 해결 방법으로 nohup 명령어도 추천하고 있다.

# 기본 사용
nohup <command> &

# 표준 출력, 에러 저장
nohup <command> 1>"stdout" 2>"stderr"

# log 파일 안남기기
nohup <command> 1>/dev/null 2>&1 &
728x90

'Develop' 카테고리의 다른 글

Developer Track  (0) 2023.02.23
[Linux] GPU monitoring  (0) 2023.02.19
[Linux] htop  (0) 2023.02.09
MemoryError: Unable to allocate 13.9 MiB for an array with shape (24, 276, 276) and data type float64  (0) 2023.02.08
Comments