본문으로 건너뛰기

백그라운드 작업을 탭으로 가져오기

처음부터 모든 작업을 화면에 띄울 필요는 없습니다. 숨겨진 PTY에서 작업을 실행하고 출력을 확인하다가, 필요해지면 같은 프로세스와 기록을 가진 탭으로 가져오세요.

내가 읽는 로그 / 탭으로 가져온 작업 — 디자인 컴포넌트로 구성한 배치 예시입니다. 실제 터미널은 아래 순서로 만들어 보세요.

준비

Tasty 윈도우를 열고 그 안의 터미널에서 아래 명령을 실행하세요. tasty 명령이 연결되지 않으면 CLI 준비를 먼저 확인하세요.

여기서 다루는 것은 실행 중인 Tasty 안의 탭 없는 PTY 입니다. GUI 없이 서버에서 Tasty 자체를 실행하는 headless 빌드와는 다릅니다.

아래 입력 예제는 Bash, Zsh, Git Bash 기준입니다. 숫자 2147483648과 페인 ID 1은 예시이므로 반드시 실제 응답에서 확인한 값으로 바꾸세요.

1. 탭 없이 셸 열기

tasty pty spawn
tasty pty list

생성 응답의 PTY ID를 기록하세요. 새 PTY는 목록에 나타나지만 화면에 탭이 생기지는 않습니다. 명령 없이 시작했으므로 셸이 입력을 기다립니다.

시작할 폴더와 처음 실행할 명령을 함께 줄 수도 있습니다.

tasty pty spawn --cwd ~/proj -- cargo test

--cwd는 PTY의 작업 폴더를 정합니다. -- 뒤의 내용은 PTY의 셸에서 바로 실행됩니다.

2. 명령 보내고 출력 읽기

tasty pty write --id 2147483648 $'pwd\n'
tasty pty read --id 2147483648 --lines 20

read는 기본으로 흐리게 표시되는 글자(예: Claude Code의 자동 완성 제안)를 빼고 읽습니다. 제출되지 않은 제안을 실제 출력으로 오해하지 않도록 한 것이며, 함께 읽으려면 --show-dim을 붙이세요.

write는 받은 문자를 그대로 보냅니다. Bash 계열의 $'...\n'은 실제 줄바꿈을 포함하므로 명령이 제출됩니다. 일반 큰따옴표 안의 "...\n"과는 다릅니다.

PowerShell에서 실행한다면 입력 명령은 다음처럼 쓰세요.

tasty pty write --id 2147483648 "pwd`n"

출력에 작업 디렉터리가 보이는지 확인하세요. 아직 출력이 없다면 read로 다시 확인합니다. 같은 방식으로 필요한 작업을 실행할 수 있습니다.

3. 실행 상태 확인하기

tasty pty state --id 2147483648

state는 종료할 때까지 멈춰 있지 않고 현재 종료 여부를 즉시 돌려줍니다. 기다리려면 다시 호출하세요. 예전 이름 pty wait도 같은 동작으로 받습니다. 셸이 살아 있으면 exited는 false입니다. 프로세스가 끝났다면 종료 코드와 성공 여부도 확인할 수 있습니다.

셸 안에서 명령 하나가 끝났다고 셸 자체가 종료된 것은 아닙니다. PTY의 종료 상태와 개별 셸 명령의 결과를 구분하세요.

4. 같은 작업을 탭에서 보기

tasty list panes
tasty pty attach-surface --pty 2147483648 --pane 1

목록에서 고른 페인 ID를 사용하세요. 아직 실행 중인 PTY만 가져올 수 있습니다. 프로세스와 출력 기록이 유지된 새 백그라운드 탭이 생기고, 기존 PTY ID는 pty list에서 빠집니다.

가져오기가 실패하면 프로세스는 종료되지 않고 원래 PTY ID로 돌아갑니다. 드물게 원래 ID로 돌려놓지 못하면 복구 필요 오류(-32068)를 받고, 그 프로세스는 pty list에 나타나지 않은 채 Tasty가 끝날 때까지 남습니다.

보던 화면은 자동으로 이동하지 않습니다. 보고 싶을 때 새 탭을 직접 선택하세요. 전환 응답에는 새 탭과 서피스 ID가 있으므로 이후 CLI 조작에는 해당 ID를 사용합니다. 이전 PTY ID로 pty read나 pty kill을 호출하지 않습니다.

5. 작업 정리하기

  • 아직 숨겨진 PTY라면 실제 ID로 tasty pty kill --id 2147483648을 실행하세요. 해당 프로세스를 종료하고 숨겨진 PTY 목록에서 제거합니다.
  • 탭으로 가져왔다면 작업을 마친 뒤 그 탭을 닫으세요. 숨겨진 PTY 목록에서 정리하는 대상이 아닙니다.

숨겨진 PTY의 개수에는 제한이 없고, 이미 끝난 PTY가 남아 있어도 새 PTY를 만들 수 있습니다. 동시에 실행할 수를 맞추고 싶다면 작업 순서 관리의 semaphore를 사용하세요.

실행 중인 PTY는 오래 확인하지 않아도 Tasty가 끝내지 않습니다. 직접 kill할 때까지 실행됩니다. 일정 시간 확인하지 않으면 끝내고 싶다면 만들 때 --idle-timeout <초>를 주세요. 그 시간 동안 read, write, state가 없으면 Tasty가 프로세스를 종료하고 경고 알림을 남깁니다. 백그라운드 출력은 이 시간을 늘리지 않습니다.

이미 끝난 PTY는 종료 코드를 확인할 수 있도록 목록에 남습니다. Tasty가 목록 정리 과정에서 종료를 처음 확인한 때와 마지막으로 read, write, state를 호출한 때 중 늦은 쪽부터 5분이 지나면 정리되고, 정리했다는 정보 알림이 남습니다. Tasty는 끝난 PTY를 주기적으로 확인하므로 처음 확인한 때는 실제 종료보다 최대 1분 30초 늦을 수 있습니다.

문제가 생기면

  • PTY를 찾을 수 없으면 tasty pty list로 확인하세요. 이미 탭으로 옮겼거나 정리되었을 수 있습니다. Tasty가 정리한 PTY라면 오류 메시지가 유휴 제한 만료인지 끝난 PTY 정리인지 알려 주고, 알림에도 남습니다.
  • 종료된 PTY는 탭으로 가져올 수 없습니다. 출력과 종료 상태를 확인한 뒤 정리하세요.
  • 입력이 실행되지 않으면 실제 줄바꿈을 보냈는지 확인하세요.

일반 자식 터미널과 출력 읽기 기능은 CLI 가이드, 작업 의존성과 실패 처리는 작업 순서 관리에 있습니다.

GitHub에서 원문 보기