튜토리얼

SSH 연결을 끊은 후에도 프로세스 계속 실행하기(tmux, nohup)

SSH를 닫으면 SIGHUP으로 실행 중인 명령이 종료됩니다. tmux나 screen 안에서 실행해 살아 있게 유지하고 나중에 다시 연결하거나, 실행 후 방치하려면 nohup을 쓰세요. 연결이 끊기는 모바일에서 왜 이것이 두 배로 중요한지.

CC Chen Chen· 창업자·2026년 6월 24일·5분 분량

연결을 끊은 후에도 프로세스를 계속 실행하기

기본적으로 SSH 세션을 닫으면 그 안에서 시작한 것은 무엇이든 종료됩니다. 연결을 끊은 후에도 명령을 계속 실행하려면 터미널 멀티플렉서 ── tmux(또는 screen) ── 안에서 시작하세요. 이것이 가장 좋고 가장 유연한 선택지입니다. 일회성이라면 nohup … &도 됩니다. 모바일에서는 이것이 두 배로 중요합니다. 네트워크를 전환하거나 앱이 백그라운드로 가면 연결이 끊기므로, 분리하느냐 마느냐가 작업을 잃느냐 잃지 않느냐를 가릅니다.

왜 죽는가

SSH 세션이 끝나면 셸이 자식 프로세스에 SIGHUP("행업")을 보내고, 대부분 종료됩니다. 해결책은 세션을 견뎌내는 곳에서 프로세스를 실행하는 것입니다 ── 분리된 tmux/screen 세션, 또는 행업을 무시하도록 명시적으로 지시된 프로세스입니다.

최선의 방법: tmux

tmux는 연결과 독립적으로 서버에서 셸을 살아 있게 유지합니다. 시작하고, 작업을 실행하고, 분리하고, 연결을 끊어도 ── 작업은 계속됩니다. 나중에 떠난 바로 그 지점에 다시 연결합니다.

tmux                      # 启动一个会话
# … 跑你的长命令 …
# 分离:按 Ctrl-b 再按 d
# 现在可以安全断开

# 稍后重连后:
tmux attach               # 正好回到你离开处

세션이 여러 개라면: tmux ls로 목록을 보고, tmux attach -t 0으로 하나를 고릅니다. screen은 더 오래된 동등물입니다(screen, 분리는 Ctrl-a d, 재연결은 screen -r) ── 설치된 것을 쓰세요.

빠른 방법: nohup

그냥 실행하고 떠나고 싶은 단일 명령에는:

nohup ./long_job.sh > job.log 2>&1 &

nohup은 프로세스가 행업을 무시하게 하고, &는 백그라운드로 보내며, 리디렉션은 출력을 파일에 캡처합니다(출력할 터미널이 없으므로). 나중에 tail -f job.log로 진행 상황을 확인합니다. 이미 명령을 시작하고 나서 떠올랐다면? disown -h %1이 가장 최근의 백그라운드 작업을 셸에서 분리해 살아남게 합니다.

어느 것을 써야 하나?

하고 싶은 것…사용
돌아와서 세션과 상호작용하기tmux / screen
한 명령을 실행하고 잊어버린 뒤 나중에 로그 보기nohup … &
이미 시작한 작업을 살리기disown

왜 이것이 모바일에서 필수인가

휴대폰에서는 연결이 본질적으로 취약합니다. Wi-Fi 범위를 벗어나거나, 셀룰러로 전환되거나, 긴 대기 중에 OS가 앱을 일시 중단하면 ── 평범한 SSH 세션(과 실행 중인 명령)은 죽고, 흔히 broken pipe를 동반합니다. tmux 안에서 실행하면 연결 끊김은 아무 일도 아닌 게 됩니다. 작업은 서버에서 계속 실행되고, 재연결하면 tmux attach로 다시 연결합니다. 안정적인 주소(Tailscale)와 짝지으면 재연결은 한 번의 탭입니다. 이것이 휴대폰 관리를 믿을 수 있게 만드는 습관입니다.

휴대폰에서 tmux 명령을 제안하는 TermAI
모바일에서 긴 작업을 tmux 안에서 시작하면 연결이 끊겨도 작업이 죽지 않습니다 ── 재연결하면 다시 연결하세요. 명령이 확실하지 않으면 AI가 설정해 줄 수 있습니다.

자주 묻는 질문

SSH를 닫은 후에도 프로세스를 계속 실행하려면?
tmux(또는 screen) 안에서 시작하고, Ctrl-b 다음 d로 분리한 뒤 연결을 끊으세요 ── 프로세스는 계속 실행됩니다. 나중에 tmux attach로 다시 연결합니다. 일회성이라면 nohup command &를 쓰세요.

tmux와 nohup의 차이는?
tmux는 다시 연결할 수 있는 대화형 세션을 살아 있게 유지합니다. nohup은 행업을 무시하고 백그라운드에서 실행되는 한 명령을 시작할 뿐입니다. 세션으로 돌아오고 싶을 때 tmux를 쓰세요.

이미 명령을 시작했는데 ── 살릴 수 있나요?
네: disown -h %1은 실행 중인 백그라운드 작업을 분리해 세션을 견뎌내게 합니다. (이미 백그라운드에 있어야 합니다 ── Ctrl-z 다음 bg로, 또는 &로 시작.)

모바일에서 SSH가 끊기면 왜 작업이 죽나요?
끊긴 세션이 프로세스에 SIGHUP을 보냅니다. tmux 안에서 실행해 연결과 독립시키세요 ── 끊김이 흔한 모바일에서는 필수입니다.

핵심 요약

  • 왜 작업이 죽나: SSH를 닫으면 자식 프로세스에 SIGHUP이 전송됨
  • 최선: tmux에서 실행 ── 분리(Ctrl-b d), 연결 끊기, 나중에 tmux attach
  • 빠르게: nohup command > log 2>&1 &로 실행 후 방치
  • 이미 실행 중: disown -h %1로 살리기
  • 모바일: tmux는 연결 끊김을 아무 일도 아닌 게로 만든다
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog