프로세스를 다시 여는 방법은 무엇입니까? [복사]

프로세스를 다시 여는 방법은 무엇입니까? [복사]

나는 내 집 컴퓨터에서 퍼티를 사용하고, SSH를 통해 원격 서버에 연결하고, 완료하는 데 몇 시간이 걸리는 Python 프로그램을 실행하고 실행되는 동안 무언가를 인쇄했습니다. 이제 잠시 후 인터넷이 다운되어 Putty와 SSH를 닫았다가 다시 열어야 했습니다. "top"을 입력하면 백그라운드에서 실행 중인 Python 프로그램과 해당 PID 번호를 볼 수 있습니다. 기본적으로 프로세스를 다시 열고 내용을 다시 인쇄하는 데 사용할 수 있는 명령이 있습니까?

감사해요

답변1

screen 명령을 사용하여 커널 컴파일과 같은 작업을 시작할 수 있습니다. 예를 들면 다음과 같습니다.

screen -R -S YOUR_SESSION_NAME

그런 다음 Enter를 눌러 세션으로 돌아갑니다.

세션 종료: CTRL++ad

세션을 나열하려면:

mohsen@debian:~$ screen -ls
There is a screen on:
    30473.compilekernel (03/06/2015 05:59:05 AM)    (Detached)
1 Socket in /var/run/screen/S-mohsen.

세션을 분리하려면:

screen -dr 30473

세션 이름을 사용하지 않으면 화면 자체가 다음 형식을 사용하므로 서버에 여러 세션을 제공하기가 어려워집니다.

pid.tty.host

예를 들어:

30522.pts-0.debian

답변2

GNU 화면http://www.gnu.org/software/screen/터미널에서 실행되고 일종의 가상 세션을 생성하는 애플리케이션입니다. 연결을 끊으면 화면은 분리된 엔터티로 계속 실행되며 나중에 다시 연결할 수 있습니다.

먼저 설치 화면이 아직 설치되어 있지 않은 경우(설치되어 있을 수 있음).

그런 다음 서버에 로그인하십시오.

화면 세션을 시작합니다.

$ screen

이제 당신은 화면에 있습니다. 프로세스를 시작하세요. 나는 그것이 foo.py라고 가정합니다. 정상적으로 시작할 수도 있고, 시작하여 백그라운드로 보내는 것을 선호할 수도 있습니다.

$ foo.py &

백그라운드로 보내지 않으려면(즉, 터미널에서 실행되는 것을 보고 싶다면) 정상적으로 실행하세요. 하지만 그런 다음 새 화면으로 전환해야 합니다.

$ foo.py

스크립트가 실행되기 시작하면 ctrl-a ctrl-c("새 화면 만들기")를 누르세요.

그러면 새로운 빈 화면이 생성됩니다. 스크립트가 계속 실행 중이지만 다른 화면에서 실행 중입니다. ctrl-a ctrl-n을 입력하여 이를 직접 증명해 보십시오(예: 다음 화면으로 이동).

로그아웃할 준비가 되면 다음을 입력하십시오.

$ screen -d

이렇게 하면 가상 화면에서 벗어날 수 있습니다. 즉, 모든 것이 당신이 떠난 것처럼 여전히 실행되고 있습니다.

PuTTY를 끌 수도 있습니다. 귀하의 서버는 여전히 화면과 귀하가 시작한 모든 것을 실행 중입니다.

다시 연결하려면 다시 로그인하여 화면에 다시 연결하세요.

$ screen -raAd

이제 화면으로 돌아왔습니다. foo.py 명령의 출력을 볼 수도 있고, ctrl-a ctrl-n을 사용하여 전환해야 할 수도 있습니다.

아무튼 그렇게 되었습니다.

관련 정보