연결을 끊은 후에도 프로세스를 계속 실행하기
기본적으로 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)와 짝지으면 재연결은 한 번의 탭입니다. 이것이 휴대폰 관리를 믿을 수 있게 만드는 습관입니다.
자주 묻는 질문
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는 연결 끊김을 아무 일도 아닌 게로 만든다
Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.