programing

실행 중인 화면 세션을 나열하려면 어떻게 해야 합니까?

easyjava 2023. 4. 19. 23:35
반응형

실행 중인 화면 세션을 나열하려면 어떻게 해야 합니까?

많은 서버를 가지고 있으며, 이 서버에서screen순서는 다음과 같습니다.

  1. ssh서버 XXX로
  2. 시작하다screen
  3. 몇 가지 탭으로 실험을 시작하다
  4. 분리하다screen
  5. 서버와의 접속을 끊다

실험이 실행되고 있는 동안, 어떤 서버에서 실험을 하고 있는지 쉽게 알 수 있습니다.ssh모든 서버에 입력 및 실행 중인 프로세스 목록 표시(사용)top또는ps).

다만, 실험이 종료하면, 어느 서버에서 스크린 세션을 열고 있는지(출력을 확인하거나 재기동하거나 할 수 있는 경우 등)를 특정하려면 어떻게 해야 합니까?

PS: 제 실험에서도 출력물은 파일로 출력됩니다.제 질문의 요점은 그게 아닙니다

사용자의 모든 화면 세션을 나열하려면 해당 사용자로 다음 명령을 수행합니다.

screen -ls

특정 컴퓨터의 모든 화면 세션을 표시하려면 다음 작업을 수행합니다.

ls -laR /var/run/screen/

내 기계에는 다음과 같은 메시지가 표시됩니다.

gentle ~ # ls -laR /var/run/screen/

/var/run/screen/:
total 1
drwxrwxr-x  4 root utmp   96 Mar  1  2005 .
drwxr-xr-x 10 root root  840 Feb  1 03:10 ..
drwx------  2 josh users  88 Jan 13 11:33 S-josh
drwx------  2 root root   48 Feb 11 10:50 S-root

/var/run/screen/S-josh:
total 0
drwx------ 2 josh users 88 Jan 13 11:33 .
drwxrwxr-x 4 root utmp  96 Mar  1  2005 ..
prwx------ 1 josh users  0 Feb 11 10:41 12931.pts-0.gentle

/var/run/screen/S-root:
total 0
drwx------ 2 root root 48 Feb 11 10:50 .
drwxrwxr-x 4 root utmp 96 Mar  1  2005 ..

이는 Unix Sockets가 보안, 상태 및 스트림을 처리하기 위한 파일 시스템 권한으로 포장된 상당히 뛰어난 Unix Sockets 사용법입니다.

명령어 screen -list가 필요할 수 있습니다.

남자를 만나다

기억하기 쉬운 가이드...

screen- 화면을 작성하려면

screen -list- 분리된(실행 중인) 모든 화면을 화면 ID와 함께 나열합니다.

여기에 이미지 설명 입력 이 그림에서 -

6764.pts-1.v1330

는 화면 ID 입니다.

screen -x [screen id]- 실행 중인 특정 화면에 연결/연결합니다.

Ctrl + D- 화면에서 Terminate / Stop 화면 실행을 중지합니다.

Ctrl + A, Then press D- 화면을 방해하지 않고 분리할 수 있습니다.

killall screen- 모든 화면을 분리하거나 종료합니다.

joshpery의 답변은 맞지만, 실제로는 세션 식별에 사용하는 화면명(-t 옵션에서 설정한 화면명)이 표시되지 않아 매우 불쾌합니다.(물론 그의 잘못은 아니지만, 그것은 스크린의 결점입니다.)

그래서 대신 다음과 같은 스크립트를 사용합니다.ps auxw|grep -i screen|grep -v grep

질문에 대해서는 잘 모르겠습니다만, 현재 열려 있는 화면 세션의 일람을 표시하는 것만으로 필요한 경우는, 다음과 같이 해 주세요.

screen -ls
 For windows system

 Open putty 
 then login in server

콘솔에 화면을 표시하려면 명령어를 작성해야 합니다.

 Screen -ls

화면에 액세스 할 필요가 있는 경우는, 다음의 커맨드를 사용할 필요가 있습니다.

 screen -x screen id

기입하다PWD명령줄에서 현재 어떤 폴더에 있는지 확인합니다.

대부분의 경우 ascreen -RRx $username/이면 충분합니다:)

그래도 모든 화면을 나열하려면 다음 스크립트를 경로에 넣고 화면 또는 원하는 대로 불러야 합니다.

#!/bin/bash
if [[ "$1" != "-ls-all" ]]; then
    exec /usr/bin/screen "$@"
else
    shopt -s nullglob
    screens=(/var/run/screen/S-*/*)
    if (( ${#screens[@]} == 0 )); then
        echo "no screen session found in /var/run/screen"
    else
        echo "${screens[@]#*S-}"
    fi
fi

옵션 -ls-all을 첫 번째 파라미터로 지정하면 모든 화면 세션을 표시하는 것을 제외하고 화면과 동일하게 동작합니다.

이미 여러 사람이 지적한 바 있다

$ screen -ls

화면 세션이 표시됩니다.

여기 당신에게 유용할 수 있는 또 다른 요령이 있습니다.

서버 xxx의 .bashrc 파일의 마지막 행으로 다음 명령을 추가하면 로그인 시 자동으로 화면 세션에 다시 연결됩니다.

screen -d -r

유용하게 쓰시길 바랍니다.

다음 명령을 사용할 수 있습니다.

screen -list

(또는)

screen -R

ps x | grep 화면

명령어를 사용한 경우 실행 중인 화면을 확인합니다.

screen - A - m - d php make _ something .php

그럼 실험을 백그라운드에서 계속 진행하기 위해 화면을 사용하는 건가요?그렇다면 그냥 백그라운드에서 시작하지 그래요?

./experiment &

그리고 내가 한 일을 어떻게 통지받는지 묻는다면, 메일 명령과 함께 실험을 진행하면 어떨까요?

./experiment && echo "the deed is done" | mail youruser@yourlocalworkstation -s "job on server $HOSTNAME is done"

언급URL : https://stackoverflow.com/questions/537942/how-to-list-running-screen-sessions

반응형