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.