콘솔 / 터미널 뷰를 애플리케이션 출력에 ‘연결’하여 무슨 말을하는지 볼 수 있습니까?
애플리케이션을 종료하지 않고 애플리케이션 출력에서 분리하려면 어떻게해야합니까?
일반적으로 명령 줄을 사용하여 대화 형 응용 프로그램을 시작하면 모든 종류의 멋진 출력을 볼 수 있습니다. 그러나 KINO와 같이 특히 수다스러운 프로그래밍이 실행 중이고 명령 줄을 통해 다시 시작하지 않고 주어진 순간에 출력을보고 싶다고 가정 해 보겠습니다. 나는 할 수 없다. 적어도 나는 방법을 모른다.
답변
여기에는 몇 가지 옵션이 있습니다. 하나는 명령의 출력을 파일로 리디렉션 한 다음 ‘tail’을 사용하여 해당 파일에 추가 된 새 줄을 실시간으로 보는 것입니다.
또 다른 옵션은 일종의 텍스트 기반 터미널 응용 프로그램 인 ‘화면’내에서 프로그램을 시작하는 것입니다. 화면 세션은 연결 및 분리가 가능하지만 명목상 동일한 사용자 만 사용하는 것을 의미하므로 사용자간에 공유하려는 경우 엉덩이에 큰 고통이됩니다.
답변
여기에 더 간단한 해결책이 있다고 생각합니다. /proc
경로에서 액세스 할 수있는 의사 파일 시스템 아래에서 찾고있는 PID와 이름이 일치하는 디렉토리를 찾으십시오 . 따라서 ID가 1199 인 프로그램이 실행 중이면 다음과 같이 입력 cd
합니다.
$ cd /proc/1199
그런 다음 fd
아래 의 디렉토리를 찾으십시오.
$ cd fd
이 fd
디렉토리에는 프로그램이 사용하는 파일 설명자 객체 (0 : stdin, 1 : stdout, 2 : stderr)가 있으며tail -f
필요한 항목 됩니다 (이 경우에는 stdout).
$ tail -f 1
답변
나는 이와 똑같은 것을 찾고 있었고 당신이 할 수 있다는 것을 알았습니다.
strace -ewrite -p $PID
정확히 필요한 것은 아니지만 매우 가깝습니다.
리디렉션 출력을 시도했지만 작동하지 않았습니다. 프로세스가 소켓에 쓰고 있었기 때문에 모르겠습니다.
답변
콘솔 / 터미널 뷰를 애플리케이션 출력에 ‘연결’하여 무슨 말을하는지 볼 수 있습니까?
이 질문에 대해서는 프로세스를 시작하기 전에 sceen 명령을 시작하지 않았더라도 출력을 잡을 수 있다는 것을 알고 있습니다.
시도한 적이 없지만 GDB를 사용하는 방법을 설명하는 흥미로운 기사를 찾았습니다 (프로세스를 다시 시작하지 않고).
원래:
- / proc / xxx / fd 덕분에 프로세스의 열린 파일 목록을 확인하십시오.
- 붙이다GDB로 프로세스
- 일시 정지 된 상태에서 관심있는 파일을 닫고 close ()를 호출합니다. 함수를 합니다 (GDB에서 프로세스의 모든 기능을 사용할 수 있습니다. 프로세스에 디버그 기호가 필요하다고 생각합니다 ..)
- create () 또는 open () 함수를 호출하는 새 파일을 엽니 다. (마지막에 주석을 살펴보면 사람들이 dup2 () 를 사용하여 동일한 핸들 을 사용하도록 제안하는 것을 볼 수 있습니다.)
- 프로세스를 분리 하고 실행하십시오.
그건 그렇고, 당신이 i386 상자에서 리눅스 OS를 실행하고 있다면, 주석은 출력을 새로운 콘솔로 리디렉션하는 더 나은 도구에 대해 이야기하고 있습니다 : ‘retty’ . 그렇다면 사용을 고려하십시오.
답변
나를 위해 이것은 일했습니다.
-
프로세스 소유자로 로그인합니다 (
root
허가가 거부 된 경우도 있음 ).~$ su - process_owner
-
다른 많은 답변에서 언급했듯이 파일 설명자를 꼬리표로 지정하십시오.
~$ tail -f /proc/<process-id>/fd/1 # (0: stdin, 1: stdout, 2: stderr)
답변
로컬에서 실행 된 yum 업그레이드 프로세스를 원격으로보고 싶었으므로이 작업을 수행하는 더 효율적인 방법이있을 수 있지만 다음은 수행 한 작업입니다.
watch cat /dev/vcsa1
사용중인 터미널에 따라 vcsa2, vcsa3 등을 사용하고 싶을 것입니다.
내 터미널 창이 명령이 실행되는 터미널과 같은 너비이면 2 초마다 현재 출력의 스냅 샷을 볼 수 있습니다. 다른 곳에서 권장하는 다른 명령은 내 상황에서 특히 잘 작동하지 않았지만 그 방법은 트릭을 수행했습니다.