답변:
나는 최근에 이것을해야했다. 스택 오버플로 에서 화면에서 실행중인 프로세스의 PID 를 찾는 방법에 대답 했습니다 . PID가 있으면 ps
명령을 얻는 데 사용할 수 있습니다 . 다음은 귀하의 상황을 해결하기위한 추가 내용이 포함 된 답변의 내용입니다.
다음과 같이 스크린 세션의 PID를 얻을 수 있습니다.
$ screen -ls
There are screens on:
1934.foo_Server (01/25/15 15:26:01) (Detached)
1876.foo_Webserver (01/25/15 15:25:37) (Detached)
1814.foo_Monitor (01/25/15 15:25:13) (Detached)
3 Sockets in /var/run/screen/S-ubuntu.
foo_Monitor
화면 세션 에서 Bash에서 실행되는 프로그램의 PID를 원한다고 가정 해 봅시다 . 알려진 PID에 대해 PPID (부모 PID)를 검색하여 실행중인 세션 foo_Monitor
의 PID를 가져 오려면 화면 세션 의 PID를 사용하십시오 bash
.
$ ps -el | grep 1814 | grep bash
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 1815 1814 0 80 0 - 5520 wait pts/1 00:00:00 bash
이제 bash
세션 의 PID 만 얻으십시오 .
$ ps -el | grep 1814 | grep bash | awk '{print $4}'
1815
이제 우리는 그 PID로 프로세스를 원합니다 . 명령을 중첩하면 이번에는 -v
플래그를 사용하여 bash grep bash
가 아닌 프로세스를 가져옵니다 .
$ echo $(ps -el | grep $(ps -el | grep 1814 | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
23869
이 PID를 사용하여 명령을 찾을 수 있습니다 (두 번째 줄의 끝을보십시오).
$ ps u -p 23869
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
dotanco+ 18345 12.1 20.1 5258484 3307860 ? Sl Feb02 1147:09 /usr/lib/foo
모두 합치십시오.
$ ps u -p $(ps -el | grep $(ps -el | grep SCREEN_SESSION_PID | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
screen -S <your-fancy-name>
실행하는 명령에 따라 스크린 세션에 의미있는 이름을 부여하는 데 사용 하는 것은 어떻습니까? 에 의해 이름이 나열되고 screen -ls
세션을 재개하는 데 사용됩니다 screen -r <your-fancy-name>
.
추가하려면 다음을 편집하십시오.
며칠 전에 저의 관심을 끌었습니다. (더 많지 않은 경우)와 tmux
동일한 기능 세트를 screen
제공하며 필요에 맞는 기능이 제공됩니다. FAQ : "tmux는 이스케이프 시퀀스를 사용하여 심한 해킹 없이도 실행중인 응용 프로그램으로 자동으로 창 이름 바꾸기를 지원합니다. 기본적으로 설정되어 있습니다."