Physicist, Programmer. What you eat, how you think, and most importantly what you have done become who you are. Who are you? and who will you be?
[IT/Programming]
Ubuntu/Linux (우분투/리눅스) 에서 exit 해도 실행되던게 멈추지 않게 하려면?
kipid2025. 6. 17. 08:41
반응형
# Ubuntu/Linux (우분투/리눅스) 에서 exit 해도 실행되던게 멈추지 않게 하려면?
안녕하세요. 우분투(Ubuntu)를 포함한 리눅스 환경에서 터미널을 종료(exit 또는 창 닫기)해도 실행 중인 프로세스가 멈추지 않게 하는 방법은 여러 가지가 있습니다. 사용 목적과 상황에 따라 적절한 방법을 선택하시면 됩니다.
가장 대표적인 방법부터 가장 강력한 방법 순서로 설명해 드리겠습니다.
왜 터미널을 닫으면 프로세스가 종료될까요?
터미널을 종료하면, 해당 터미널에서 실행된 프로세스들에게 HUP(Hangup) 신호를 보냅니다. 대부분의 프로그램은 이 신호를 받으면 종료되도록 설계되어 있습니다. 따라서 우리의 목표는 이 HUP 신호를 무시하게 만들거나, 프로세스를 터미널 세션과 분리하는 것입니다.
## PH
2025-06-16 : First posting.
## TOC
## nohup 명령어 사용 (가장 간단하고 전통적인 방법)
nohup은 "No Hangup"의 줄임말로, HUP 신호를 무시하고 명령을 실행하게 해줍니다.
사용법
```[.lang-bash]
nohup [실행할 명령어] &
```/
nohup: HUP 신호를 무시합니다.
&: 프로세스를 백그라운드에서 실행시킵니다. 이걸 붙여야 nohup 실행 후 바로 다른 작업을 할 수 있습니다.
## tmux 또는 screen 사용 (가장 유용하고 강력한 방법)
tmux와 screen은 터미널 멀티플렉서입니다. 가상의 터미널 세션을 만들고, 그 세션 안에서 작업을 실행하는 방식입니다. 사용자는 이 세션에서 "연결을 끊었다가(detach)" 나중에 다시 "접속(attach)"할 수 있습니다. 터미널을 닫는 것은 단순히 연결을 끊는 행위일 뿐, 서버의 가상 세션과 그 안의 프로세스는 계속 살아있습니다.
tmux가 screen보다 현대적이고 기능이 많아 더 권장됩니다.
tmux 사용법
1. 설치 (설치되어 있지 않다면)
```[.lang-bash]
sudo apt update
sudo apt install tmux
```/
2. 새로운 세션 시작
```[.lang-bash]
# 'my_session'이라는 이름의 새 세션 시작
tmux new -s my_session
```/
3. 세션 안에서 명령어 실행
tmux 세션 안에서 원하는 명령어를 실행합니다. (예: ./run_gradlew.sh &)
4. 세션에서 빠져나오기 (Detach)
Ctrl + b 키를 누른 후, 손을 떼고 d 키를 누릅니다. 세션은 백그라운드에서 계속 실행되고 원래의 터미널로 돌아옵니다.
5. 실행 중인 세션 목록 확인
```[.lang-bash]
tmux ls
```/
6. 세션에 다시 접속하기 (Attach)
```[.lang-bash]
# 'my_session'이라는 이름의 세션에 다시 접속
tmux attach -t my_session
```/
7. 세션 종료
세션에 접속한 상태에서 실행 중인 프로세스를 Ctrl + c로 종료하고 exit를 입력하면 세션이 완전히 종료됩니다. 또는 밖에서 tmux kill-session -t my_session 명령어로 종료할 수도 있습니다.