본문 바로가기
AI프로그래밍 리뷰/프로그래밍

리눅스 터미널 백그라운드에서 프로세스 돌리기 (tmux or nohup)

by 펄서까투리 2020. 4. 29.

# 세줄 요약 #

  1. 리눅스 터미널에서 파이썬(.py) 등의 프로그램을 돌릴때 터미널 창을 닫아도 프로세스가 돌아갈 수 있도록 백그라운드에서 돌리는 방법
  2. nohup 명령어를 사용하여 프로세스를 돌리고, tail 명령어로 백그라운드에 돌아가고 있는 프로세스를 display 한다. 
  3. nohup도 좋지만, TMUX를 사용시 훨씬 편해진다!

 

# 상세 리뷰 #

1. nohup

  • nohup 명령어를 통해 프로세스를 백그라운드로 보내고, 프로세스 output은 nohup.out 파일에 저장된다.
    • ! 만약 nohup.out 파일이 아닌 원하는 파일명으로 저장하고 싶은 경우:
    • >>> nohup python main.py > test.out
  • 단 nohup 명령어만 사용할 경우, log와 같은 output 결과물을 터미널 상에서 볼 수 없다.
  • 따라서 tail 명령어를 사용하여 nohup.out에 저장되고 있는 output을 실시간으로 읽어드린다.
  • 이때 터미널을 종료하거나 tail 명령어를 강제 종료(ctrl + z)하여도 백그라운드에서 돌아가고 있는 프로세스는 죽지 않는다.
nohup python main.py & tail -f nohup.out

 

2. TMUX (추천!)

  • TMUX를 설치 시, tmux에 접속하여 사용하면 손쉽게 백그라운드 프로세싱이 가능하다.
sudo apt-get update
sudo apt-get install tmux
  • tmux 접속
    • command 창에서 tmux
tmux

tmux 화면, 그냥 터미널과 달리 아래에 초록색으로 tmux status 창이 보인다!

  • tmux status 설명 ([0] 0:bash*)
    • [0] : tmux 번호, tmux 를 생성할 때마다, 0, 1, 2 순서로 생김.
      • [>>> tmux ls] 명령어로 현재 생성된 tmux를 확인 가능하다.
    • 0:bash* 
      • 0: window 번호, 아래의 명령어로 window를 추가 생성하면, 옆에 1, 2, 3 순서로 생성됨.
      • bash : 사용중인 명령어, 혹은 프로세싱 중인 명령어
      • * : 현재 조작 중인 window 표시, 아래의 명령어로 window를 옮기면 "*"도 옮겨간다.
  • tmux 명령어
    • ctrl + b, c : window 생성 (다중 프로세스 가능!)
    • crtl + b, n : 다음 window 
    • crtl + b, p : 이전 window
    • ctrl + b, d : tmux detach (* command에서 exit 입력 시에는 tmux가 종료되므로 주의!)
  • 실행 중인 tmux에 재접속
    • 실행 중인 tmux 조회 후 [>>> tmux attach -t 0]처럼 열린 tmux로 접속
tmux ls # tmux 조회
tmux attach -t 0 # 생성된 번호로 접근

 

 

# Reference

https://linuxize.com/post/how-to-run-linux-commands-in-background/

https://linuxhint.com/install-tmux-ubuntu/

 

How to Install tmux On Ubuntu

While working on the command terminals of your computer, there can be times when you might need multiple terminal windows to continue your work. For example, you might need them when you want multiple processes to run simultaneously or when you want to exe

linuxhint.com

 

728x90
728x90

댓글