퍼티 세션을 종료 한 후 프로세스를 어떻게 활성 상태로 유지할 수 있습니까?


41

퍼티를 사용하여 Linux 서버와 상호 작용하고 있습니다. 퍼티를 사용하여 프로세스를 시작했습니다. 프로세스가 실행 중이며 5-6 시간이 걸립니다. 퍼티 세션을 닫은 후에도 프로세스가 계속 실행되기를 원합니다. 퍼티 세션을 닫은 후에 어떻게 프로세스를 계속 유지할 수 있습니까? 컴퓨터를 항상 켜고 싶지 않습니다. 이 방법이 있습니까?.

답변:


32

나는 그런 종류의 물건에 스크린 을 사용 합니다. 실제로 때때로 나는 그것을 꽤 오랫동안 남겨두고 내가하고있는 일로 돌아갈 수 있습니다.


프로세스가 지금 실행 중입니다. 프로세스가 작동합니까? 프로세스가 중간에 있고 지금 다시 시작하고 싶지 않기 때문에 묻습니다

내가 가장 좋아하는 명령 줄 도구를 언급 한 +1 이런 상황에서는 보석입니다.
Noufal Ibrahim

@Noufal, 완전히! @prakash, 프로세스를 시작하기 전에 화면을 실행해야합니다
ziya

여러 대의 컴퓨터에 연결하려면 첫 번째 화면에서 여러 화면을 실행하는 것이 좋습니다. 따라서 하나의 화면에 연결하기 만하면 실행중인 모든 리모컨에 액세스 할 수 있습니다.

링크가 더 이상 작동하지 않습니다
Malky.Kid

31
^Z
bg %1
disown -h %1

'-h'는 세션이 완료 될 때 SIGHUP에 프로세스를 면역시킵니다.


3
프로세스를 '소유'하거나 '적응'할 수있는 방법은 없습니다. 일단이 작업을 완료하면 다시 포 그라운드로 가져올 수 없습니다. 프로세스가 일부 파일을 생성하기 위해 작업하는 배치 작업 인 경우 문제가되지 않습니다.

19

nohup명령을 사용하십시오 . 명령에 접두사를 붙이면 셸 세션을 로그 오프하거나 종료 할 때 멈추지 않도록 데몬을 데몬 화합니다. 표준 출력은 기본적으로 nohup.out이라는 파일에 있습니다. nohup(1)자세한 내용 은 매뉴얼 페이지를 확인 하십시오.


프로세스가 실행 중입니까, 해당 프로세스에서 작동합니까? 프로세스가 중간에 있고 지금 다시 시작하고 싶지 않기 때문에 묻고 있습니까?

적어도 정상적인 작동에서는 너무 늦습니다. 디버거를 프로세스에 연결 한 다음 적절한 시스템 호출 세트로 조정하면 백그라운드에 넣을 수 있다는 사실은 놀랄 일이 아닙니다. 그러나 그것은 추천 할 수있는 것이 아닙니다. 예를 들어, 귀찮게하지 않을 것이고, 적어도 무엇이 관여 될지에 대한 아이디어가 있습니다. 두 가지 선택 사항이 있습니다. 완료 될 때까지 연결 상태를 유지하거나 현재 프로세스를 중지하고 nohup을 사용하여 새 프로세스를 다시 시작하십시오.
Jonathan Leffler

1
bash를 사용하는 경우 (그리고 zsh라고 생각합니다) Tom Anderson의 솔루션과 disown프로세스를 사용하여 연결을 끊어도 계속 실행될 수 있습니다.
Noufal Ibrahim

그래-disown은 이미 실행중인 작업을 갈 수있는 길로 보입니다. 작업을 시작한 쉘이 필요한 특성을 조작 할 수 있기 때문에 가능합니다.
Jonathan Leffler

5

로 프로세스를 시작하십시오 nohup "processname" &. screen또는로 분리 할 수도 있습니다 tmux.


3

위의 솔루션은 꽤 잘 설명되어 있지만 PuTTY 구성을 다음과 같이 편집하기 전까지는 그중 어느 것도 나를 위해 일하지 않았습니다.

TCP Keepalives 활성화 (SO_KEEPALIVE 옵션)

나는 이것을 다른 곳에서는 보지 못했고 시행 착오로 발견했습니다.


1

Ctrl + z 현재 프로세스를 백그라운드로 보냅니다.

또한 명령 끝에 &를 추가하여 백그라운드에서 실행할 수 있습니다.


3
일반적으로 control-z는 프로세스를 일시 중단 된 애니메이션 상태로 만듭니다. bg 명령은 백그라운드에 넣습니다. 그러나 이는 프로세스가 터미널에 연결된 상태로 유지하는 반면 nohup은 터미널에서 프로세스를 분리하므로 퍼티의 연결이 끊어지고 프로세스는 연결이 끊어진 상태에서 유지됩니다.
Jonathan Leffler

'&'를 사용하여 백그라운드로 보내는 것은 퍼티와 함께 ​​작동하지만 쉘에서 직접 ssh를 사용하여 연결하면 연결을 닫으면 백그라운드 프로세스가 종료됩니다. 왜 그런지 아십니까?
Zardoz89

0

프로세스에 포함 된 프로그램이 백그라운드에서 항상 또는 자주 실행되도록하려면 제어 터미널과 분리하여 (옵션 플래그를 통해 이러한 동작을 제어 가능하게) 백그라운드에서 실행하도록 프로그램을 코딩 할 수 있습니다.

물론 현재 실행중인 프로세스가 아닌 장기적인 솔루션입니다.


0

&링크 후에 사용할 수 있습니다 .

예:

[localhost ~ ]# wget http://www.link.com/download/download.zip &

문제는 링크에 관한 것이 아니라 &명령 행 뒤에 부호를 추가한다는 의미 입니까?
Danny

0

퍼티 창을 닫은 후 weblogic을 계속 실행하는 방법 :

간단한 단계 : 퍼티를 통한 로그인 후 다음 단계를 따르십시오.

  1. startWebLogic.sh명령이 있는 서버의 디렉토리로 이동하십시오 .
  2. command를 입력 screen하고 누르십시오 Enter(새 화면이 열립니다).
  3. 새 화면에서 실행 명령을 입력하십시오 ./startWebLogic.sh.
  4. 를 눌러 Ctrl+ a를 누른 다음를 누릅니다 d(유지없이 Ctrl); 이전 화면으로 돌아갑니다.
  5. 서버 로그 화면으로 돌아가려면 command를 입력하십시오 screen -r.

0

프로세스가 nodejs를위한 것이고 원래 스택 오버 플로우에 게시 했으므로 의도 한 것일 수 있습니다. 나는 원래이 질문을 스스로 찾고있었습니다. 나는 pm2를 발견했고 놀랍습니다. 다른 답변은 일반적인 퍼티에 도움이 될 수 있지만 노드에 따라 다르면 모니터링에 내장되어 있으며 설정은 단순히

$ npm install pm2 -g
$ cd yourappdirectory

"PM2는 내장 된로드 밸런서가있는 Node.js 응용 프로그램의 프로덕션 프로세스 관리자입니다. 응용 프로그램을 영구적으로 유지하고 다운 타임없이 다시로드하며 일반적인 시스템 관리 작업을 용이하게합니다.

프로덕션 모드에서 응용 프로그램을 시작하는 것은 다음과 같이 쉽습니다. "

$ pm2 start yourappname.js

"저장 후 정지 명령을 사용하면 재부팅시 프로세스가 자동으로 시작됩니다"

$ pm2 save
$ pm2 freeze

그것의 모니터링

$ pm2 monit

다시 시작

$ pm2 restart yourappname

직접 로깅 정보

$ pm2 logs

이제 digialocean 브라우저 창 (위로 스크롤 할 수 없음) 대신 두 개의 퍼티 창을 쉽게 실행할 수 있습니다. 자세한 내용은 기본 github를 참조하십시오

https://github.com/Unitech/pm2

놀랍다.


pm2 무엇이며 표시하는 명령 에 대해 좀 더 설명해 주 시겠습니까? 의견에 응답하지 마십시오.  더 명확하고 완전하게 답변을 편집 하십시오.
G-Man은

커뮤니티에 대한 문서가 조금 더 추가되었습니다. 2 년 전에 pm을 찾았 으면 좋겠다.
sasy 솔루션
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.