화면에서 실행 중인 프로세스 나열(VT100/ANSI 터미널 에뮬레이션을 사용하는 관리자)

화면에서 실행 중인 프로세스 나열(VT100/ANSI 터미널 에뮬레이션을 사용하는 관리자)

설치 중에 화면을 통해 여러 프로세스를 실행하는 응용 프로그램이 있으므로 화면에 연결된 프로세스를 볼 수 있지만 "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가 실행됩니다 .screenSCREEN

  • 옵션은 하위 프로세스 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

추가 자료:

답변3

screen -ls그런 다음 tty(pty)가 검색되거나 ps -t ttynamettyname ps t ttyname과 연관된 프로세스 목록이 표시됩니다.

Ubuntu의 ps(1) 맨페이지 Ubuntu의 screen(1) 맨페이지

관련 정보