SSH를 통해 다시 연결한 후 작업이 손실되는 이유는 무엇입니까?

SSH를 통해 다시 연결한 후 작업이 손실되는 이유는 무엇입니까?

ctrl+z 및 bg를 통해 백그라운드에서 작업이 실행 중입니다. ssh에 다시 연결한 후 jobs 명령에서는 작업을 찾을 수 없지만 ps grep에서는 찾을 수 있습니다. 이제 이것을 검색하여 tmux가 더 나은 솔루션일 수 있다는 것을 알았습니다. 그러나 여전히 ssh 종료가 jobs 명령에서 작업을 잃는 이유를 알고 싶습니다. 백그라운드에 넣어두었는데, 재접속 후에도 있어야겠죠?

tty/ssh 세션 연결을 끊은 후 작업을 어떻게 관리합니까?

답변1

쉘 작업은 사용자에게 직접 속하지 않습니다. 내 말은, 사용자를 위한 글로벌 작업 목록이 없다는 것입니다. 작업은 사용자에게 속한 프로세스일 수 있으며 해당 사용자에게 속한 모든 프로세스를 찾을 수 있습니다. 하지만 직업마다직업으로쉘 프로세스에 속하며 쉘은 목록을 유지하고 해당 작업을 추적합니다. 쉘 프로세스가 종료되면 작업 프로세스는 살아남을 수 있지만 이 프로세스를 포함하는 현재 작업 목록이 없기 때문에 이는 "기록에 있는" 작업일 뿐입니다.

연결을 끊으면 쉘 프로세스가 종료됩니다. 다시 접속하면 뜹니다새로운쉘 프로세스가 생성되었습니다. 새 프로세스는 다른 셸 프로세스(여전히 실행 중이거나 종료됨)의 작업에 대해 아무것도 모릅니다. 새 쉘이 다른 쉘의 작업을 채택하도록 허용하는 메커니즘은 없습니다.

쉘은 내부에 있거나 tmux연결 screen이 끊어져도 유지될 수 있습니다. 다시 연결하면 다시 액세스할 수 있습니다.동일한 껍질. 모든 사람은 자신의 직업을 아무 일도 일어나지 않은 것처럼 기억할 것입니다. 왜냐하면 그들의 관점에서는 아무 일도 일어나지 않았기 때문입니다.

관련 정보