PID를 사용하여 모든 프로세스의 출력을 읽을 수 있습니까? 을 사용하는 것과

fg작업 명령 을 사용하는 것과 유사한 방식으로 PID를 사용하여 이미 실행중인 프로세스에 터미널을 연결할 수 있습니까?



답변

해당 프로세스의 표준 파일 디스크립터를 얻을 수 있습니다. 예 stdout:

tail -f /proc/<pid>/fd/1

답변

여기 몇 가지 옵션이 있습니다. 하나는 명령의 출력을 파일로 리디렉션 한 다음 tail해당 파일에 실시간으로 추가되는 새 줄을 보는 데 사용 하는 것입니다.

또 다른 옵션은 내부에서 프로그램을 시작 screen하는 것인데, 일종의 텍스트 기반 터미널 응용 프로그램입니다. 스크린 세션은 연결하거나 분리 할 수 ​​있지만 명목상 동일한 사용자 만 사용하도록되어 있으므로 사용자간에 공유하려면이 세션을 사용하십시오.

그렇지 않으면 프로세스를 추적하고 프로세스가 수행하는 작업을 볼 수 있습니다 strace.

strace -e trace=open -p 22254 -s 80 -o output.txt
  • -p PID: 프로세스 ID PID로 프로세스에 첨부하고 추적을 시작하십시오.
  • -s SIZE: 인쇄 할 최대 문자열 크기를 지정합니다 (기본값은 32).
  • -o filename: 추적 출력을 화면 (stderr)이 아닌 파일 파일 이름에 씁니다.

답변

아래에 제공된 이러한 명령을 사용하여 다른 터미널에서 실행중인 프로세스를 연결할 수 있습니다.

  • retty(Man page : retty )
  • reptyr
  • screen

예:

screen -S PID
retty $(pgrep PID)
reptyr PID