본문 바로가기
C.W.K.
Stream
Lesson 01 of 05 · published

셸은 호스트에 남아

~11 min · ios, host, surface, pty, disconnect

Level 0불씨
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

폰은 유리지 공장이 아니야

폰에서 Smolder 를 열면 표면을 보는 거지, 두 번째 터미널 주인을 시작하는 게 아니야. 셸, PTY, CLI 프로세스는 맥에서 돌아. 아니면 맥의 데몬이 이미 닿는 법을 아는 다른 원격 호스트에서. 폰은 로컬 PTY 를 키우지 않아. 그 일들을 위한 SSH 키를 쥐지 않아 (폰 위의 키에 대한 나중 목적지는 다른 주인, 폰 위, 다른 전송). 붙고, 그리고, 사라져도 돼. 트랙 2 가 이미 실종을 닫힌 부착으로 만들었어. 이 레슨은 불이 어디에 사는지를 이름 붙여, 주머니 절반이 조용히 공장이 되지 못하게 해.

폰이 프로세스를 소유하면 잠그는 게 살해가 되고, 백그라운드가 동전 던지기가 되고, 떨어진 네트워크가 SIGHUP 가 돼. 기차에서 긴 일을 열지 못해. 이 퀘스트의 iOS 절반 전부(먼저 보기, 게이트웨이, 목적지)는 데몬이 주인으로 남지 않으면 무너져. "앱은 투영이야"랑 같은 갈라짐으로 읽어. 이제 주머니에 들어가는 두 번째 투영이 있는.

끊김은 끝내 달라는 요청이 아니야

연결을 잃고, 잠그고, 운영체제에게 죽임당하는 것: 그건 폰의 부착을 닫아. 호스트 세션을 끝내 달라는 요청이 아니야. 맥은 아직 붙어 있을 수 있어. 다른 폰이 구경꾼으로 아직 붙어 있을 수 있어. 자식은 유리 소식을 듣지 않아. POSIX 행업은 가로채진 채로 남아. 세션 로그가 iOS 생애주기 사건 때문에 자식이 끝났다고 보여 주면, 표면이 소유로 샌 거고 그 샘은 결함이지 iOS 버릇이 아니야.

그래서 "폰에서 셸을 돌리면 더 단순하잖아"는 단순화가 아니야. 배터리랑 살인자 OS 를 가진 두 번째 공장이야. 데모에는 단순해. 컴파일러에는 적대적이야. 오늘 손에 쥐는 계약은 호스트 일 이어가기야. 호스트 세션을 관찰하고, 호스트 세션의 조종을 잡고, 호스트를 통해 셸이나 CLI 를 열어. 폰의 직접 SSH 는 주인 다른 나중 목적지야. 여기서 시제를 섞지 마. 오늘 불을 쥐는 건 호스트야.

표면 둘, 수명은 하나

맥 앱이 보존 켜고 종료해도 폰이 같은 일을 볼 수 있어. 폰이 잠겨도 맥이 계속 칠 수 있어. 그 문장은 수명이 데몬에 살 때만 참이야. iOS 에서 "이 판만" 로컬 프로세스를 시작하는 설계는 불을 가른 거고, 복원, 영수증, Anvil 자리가 어느 기기가 자식을 소유했는지 짐작해야 해. 짐작은 주머니에서 엉뚱한 뇌에 치게 되는 길이야.

낭만 없이 증명해. 맥에서 일을 시작하고, 폰에서 붙고, 폰을 잠그고, 걸어 돌아와. 일은 아직 있어야 해. 같은 PTY, 없는 동안의 분으로 채워진 저널. 없으면 주머니 표면이 없는 거야. 주머니 주인이 있는 거고, 그걸 두려워하게 돼.

폰은 표면이야. 호스트가 셸을 쥐어. 끊김은 부착을 닫아. 세션을 끝내지 않아. 프로세스를 소유하는 주머니는 두 번째 공장이고, 두 번째 공장은 실패 모드야.

Code

자식이 사는 곳, 그리고 주머니 사건이 닫아도 되는 것·text
TODAY (working contract)
  child / PTY / journal   ->  Mac daemon (or a remote host it already reaches)
  Mac app                 ->  projection
  iOS app                 ->  projection, via tailnet mobile gateway
  iOS local PTY           ->  does not exist

LATER (destination, different tense)
  phone-owned SSH transport, phone-owned keys  ->  Track 8
  not a license to run today's jobs on the phone

pocket event              closes             does not close
lock / suspend / drop     iOS attachment     host session, PTY, child
Mac quit with preserve    Mac projection     host session, PTY, child
operator Close            host session       (this IS the kill)

External links

Exercise

사건 셋을 써 (폰 잠금, 네트워크 끊김, 맥 판의 운영자 닫기). 각각 자식이 어디에 있는지, 살아 있어야 하는지 이름 붙여. 앞의 둘이 자식을 죽이면 닫기만 죽일 때까지 다시 써. 그다음 설계 리뷰에서 거절할 문장 하나를 써: "오프라인용이니 폰에서 zsh 돌리자."
Hint
폰의 오프라인은 목적지 질문이지, 오늘의 컴파일러를 배터리로 옮길 이유가 아니야. 표에서 살인은 닫기뿐이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.