[Bash] Background로 프로그램 돌리기

2023. 11. 1. 10:57Developers 공간 [Shorts]/Software Basic

728x90
반응형
<분류>
A. 수단
- OS/Platform/Tool : Linux, Kubernetes(k8s), Docker, AWS
- Package Manager : node.js, yarn, brew, 
- Compiler/Transpillar : React, Nvcc, gcc/g++, Babel, Flutter

- Module Bundler  : React, Webpack, Parcel

B. 언어
- C/C++, python, Javacsript, Typescript, Go-Lang, CUDA, Dart, HTML/CSS

C. 라이브러리 및 프레임워크 및 SDK
- OpenCV, OpenCL, FastAPI, PyTorch, Tensorflow, Nsight

 


1. What? (현상)

Server에서 작업하는 경우 작업을 돌려놓고 나서 다른 작업을 하고 싶을 때, 우리는 process를 Background로 돌려 놓고 싶게 됩니다.

 

어떻게 하면 좋을지 정리해보고자 합니다. 


2. Why? (원인)

  • X

3. How? (해결책)

3가지 방법을 정리해 보고자 합니다.

 

1. & 명령어

  • &(background) : user의 session내에서 화면 출력만 background로 전환해 실행하는 방법입니다. 따라서 session이 끝나면 실행되고 있던 프로그램도 함께 종료됩니다.
  • nohup(no hang up) : process를 현재 session과 detach해서 돌아갈 수 있도록 실행하는 명령어 입니다. 따라서 세션이 끊기 더라도 프로그램이 종료되지 않으므로, &명령어와 함께 실행한다면 유용하게 사용할 수 있습니다.
# Background로 실행하기 : nohup.out 파일 생성
nohup COMMAND &

# Background로 실행하기 : 원하는 파일 생성
nohup COMMAND > myfile.out &
[1] 3930

 

명령어를 실행하고 나면 위와 같이 나오는 데, 이는 PID를 의미합니다. 따라서 이를 이용해 아래와 같이 종료해 줄 수 있습니다.

kill -9 3930

 

 

2. tmux

tmux는 원래 session 안에서 여러 별도의 session을 만들어 가상 콘솔을 다중화하는데 사용할 수 있는 응용 소프트웨어입니다. 하지만 각각의 session을 가상으로 만들어 background에서 돌아가게 할 수 있다면 우리의 목적을 이룰 수 있습니다.

 

아래의 명령어들을 활용해 background로 동작하도록 만들 수 있을 것 같습니다.

# 새로운 session 시작하기
tmux new -s NAME

# session을 rename하기
tmux rename-session -t NAME1 NAME2

# session 리스트 확인하기
tmux ls

# 최근 session 열기
tmux a

# 특정 session 열기
tmux a -t NAME

# session을 종료하지 않고 나오는 방법
(Ctrl + b + d)

# 특정 session을 외부에서 종료하기
tmux kill-session -t NAME

 

3. screen

screen은 linux에 내장되어 있는 명령어로, tmux와 비슷하게 session을 자유롭게 열거나 화면분할 등 다양한 곳에 활용될 수 있습니다. 따라서 아래 명령어를 활용해 background로 동작하게 만들 수 있습니다.

# 새로운 session 시작하기
screen-S NAME

# session 리스트 확인하기
screen -ls

# 특정 session 열기
screen -r NAME

# session을 종료하지 않고 나오는 방법
(Ctrl + a + d)

 


 

728x90
반응형