tcsh를 사용한 사후 원격 노후 프


11

장기 (주?) 프로세스를 실행하는 xterm에 tcsh 인스턴스가 있습니다. 실행중인 Xvnc 서버가 잡초에 나갔습니다. CPU를 100 % 소비하고 응답하지 않습니다. (이것은 알려진 버그이며 복구 할 수 없음을 알고 있습니다.)

장기 프로세스가 현재 stdout에서 차단되고 있습니다.

기본 프로세스 (tcsh, xterm 등)를 종료하고 장기 프로세스를 계속 실행할 수있는 방법이 있습니까?

(제발,에 대한 답변이 없습니다 screen. 알아요. 그것은 내 프로세스가 아니라 사용자의 것입니다. 그들은 배우지 않을 것입니다.)

답변:


17

이 게시물 이 도움 이 될 수 있습니다. 권장 사항은 다음과 같습니다.

  1. 프로세스 배경 (Ctrl-Z, bg 사용 )
  2. 실행 [작업 ID] 부인 -h %를 (당신이 tcsh를 위해 번역해야 할 것이다, 그래서 가능성이 떠들썩한-주의를)

나쁜 소식은 물론이다 BG는 이미 백그라운드로 될 수 ... 프로세스가 실행되는 동일한 쉘에서 수행 될 필요가있을 것이다 ...하지만.

정말 나쁜 소식은 것입니다 부인의 호출이 같은 쉘에서 수행해야 할 수 있습니다. 어떤 경우에, 당신은 망했다. 그러나 확실하지 않습니다. 어쩌면 루트가 강제로 연결을 끊을 수 있습니다.

흠. 가능한 좋은 뉴스 - 않습니다 tcsh의 부인을 자동으로 :

tcsh가 비정상적으로 종료되면 백그라운드에서 실행중인 작업이 자동으로 종료됩니다.

따라서 장기 프로세스가 이미 백그라운드 인 경우 tcsh 부모를 종료하면 계속 진행할 수 있습니다. 이제 프로세스가 시작 터미널에서 연결이 끊어졌습니다. 그렇지 않은 경우 위의 "나쁜 소식"을 참조하십시오.

불행히도 화면이 아니므로 다시 연결되지 않습니다. 어쩌면 (첫 번째 링크에서) gdb로 가짜로 만들 수 있습니다.

[...] 더러운 해킹으로 프로세스의 stdout / stderr / stdin을 다시 열 수는 없습니다.

따라서 여전히 빈 화면 창을 만들 수 있습니다 (예 : 절전 모드로 실행).

그런 다음 gdb를 사용하여 프로세스에 연결하고, call close (0)
call close (1)
call close (2)
call open ( "/ dev / pts / xx", ...)
call dup (0)
dup (0)
분리 호출

프로세스 출력이 화면으로 이동합니다. 예를 들어 [sic]은 프로세스가 아니라 "sleep"명령을 종료하지만 OP에는 충분할 수 있습니다.

그 과정에서 "call dup (1)"과 "call dup (2)"도 없어야하는지 궁금합니다.


그래, 그것은 전경 과정이기 때문에 내가 망친 것 같아.
— wfaulk

네. 그러나 당신이 말했듯이, 그것은 당신의 과정이 아니라 당신의 잘못이 아닙니다. 엉망이되어서 미안해
— quack quixote

2
이것은 단지 내 엉덩이를 구했다. 처음에 게시 한 것과 같은 문제가 발생했습니다 .X 서버 (및 사이의 xterm)가 혼잡했을 때 프로세스가 STDOUT에서 차단되고 있다는 것입니다. STDOUT을 제외하고는 아무것도 할 필요가 없었습니다. 그 결과물은 무관했다. 실제 데이터는 어딘가에 로그 파일에 있습니다. 그래서 gdb로 연결하고 "call close (1)"을 실행 한 다음 "cont"를 실행하면 다시 움직입니다. 정말 고마워!
— wfaulk

응! 흥미 롭군 그 모든 것을 고정 해제? 기묘함. 그것이 도움이 된 것을 기쁘게 생각합니다!
— quck quixote

2
"Ctrl-Z"를 포 그라운드 프로세스로 보내는 것과 SIGSTOP을 pid로 보내는 것은 같은 것임을 지적 할 가치가 있습니다. (SIGCONT는 프로세스를 다시 시작합니다.) 이것이 동일한 상황에서 다른 사람들에게 도움이 될지 여부는 알 수 없지만 빠른 테스트에서 SIGSTOP을 보낸 다음 SIGCONT를 전송하면 "Ctrl-Z"가 뒤에옵니다 bg.
— wfaulk

3

이 질문들은 도움이 될 수있는 Cryopid라는 프로그램을 말합니다. 그러나 그것에 대한 경험이 없습니다.

호스트 간 프로세스 이동

X 세션간에 xterm 이동

노후 프 프로세스


CryoPID는 정말 깔끔하게 들리지만, 프로세스 제품군이 있으며 적어도 아직까지는 여러 프로세스를 중지하고 다시 시작하는 것을 지원하지 않습니다.
— wfaulk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.