설치 중에 화면을 통해 여러 프로세스를 실행하는 응용 프로그램이 있으므로 화면에 연결된 프로세스를 볼 수 있지만 "ps -ef" 또는 "ps auxww"를 통해서는 볼 수 없습니다. 화면 내에서 실행 중인 모든 프로세스를 나열하는 방법은 무엇입니까?
감사해요.
답변1
start cmd: # screen -ls
There is a screen on:
24525.pts-0.syscontrol (Attached)
start cmd: # pstree -p 24525
screen(24525)─┬─bash(10773)───su(10790)───bash(10791)
├─bash(10863)───pstree(11099)
└─bash(24526)
답변2
을 사용하면 pstree
문제가 크게 단순화되지만 몇 가지 설명이 도움이 될 수 있습니다.
시작하면 두 개의 프로세스 (상위 프로세스)와 (하위 프로세스) screen
가 실행됩니다 .screen
SCREEN
- 옵션은 하위 프로세스 ID와 함께 세션 식별자를 표시합니다
-ls
.screen
- 일관성을 위해 상위 프로세스 ID를 나열해야 합니다.
- 매개변수 목록을 표시하는 것이 도움
pstree
이 됩니다. - 동일한 컴퓨터에서 여러 화면 세션을 가질 수 있습니다.
이들을 하나로 묶으려면 스크립트가 필요합니다. 예는 다음과 같습니다.
# $Id: ps-screen,v 1.1 2016/10/23 22:19:56 tom Exp $
# http://unix.stackexchange.com/questions/172347/list-processes-running-inside-of-screen-manager-with-with-vt100-ansi-terminal-e
screen -ls | awk '/[0-9]+\./{print;}' | while read session
do
child=$(echo "$session" | awk '{sub("\..*","",$1); print $1;}')
printf '%s\n' "$session"
parent=$(ps -p $child -o ppid=)
pstree -p -a $parent
done
그리고 두 세션의 샘플 출력은 다음과 같습니다.
~ (101) ps-screen
38142.pts-1.vmw-debian7-64 (10/23/2016 06:20:28 PM) (Attached)
screen,38141
└─screen,38142
└─tcsh,38143
└─ps-screen,38161 /users/tom/bin/ps-screen
└─ps-screen,38164 /users/tom/bin/ps-screen
└─pstree,38169 -p -a 38141
3975.pts-0.vmw-debian7-64 (10/23/2016 06:15:28 AM) (Attached)
screen,3974
└─screen,3975
├─tcsh,5002
│ └─ded,19926 /usr/build//ncurses
│ └─vile,24647 /usr/build/ncurses/ncurses-6.0-20161029/NEWS
└─tcsh,36551
└─ded,36569 /tmp
추가 자료:
- pstree - 프로세스 트리 표시(리눅스)
- pstree - 프로세스 트리 표시(프리BSD)
답변3
screen -ls
그런 다음 tty(pty)가 검색되거나 ps -t ttyname
ttyname ps t ttyname
과 연관된 프로세스 목록이 표시됩니다.