문제

나는 많은 서버가 있는데,이를 사용하여 실험을 실행합니다. screen. 절차는 다음과 같습니다.

  1. ssh 서버 xxx로
  2. 시작하다 screen
  3. 몇 탭에서 실험을 시작하십시오
  4. 분리하다 screen
  5. 서버에서 분리하십시오

실험이 실행되는 동안 어떤 서버인지 쉽게 찾을 수 있습니다. ssh모든 서버에 in 및 실행중인 프로세스를 나열합니다 (사용 top 또는 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 소켓을 다소 훌륭하게 사용하지 않습니다.

다른 팁

명령 화면 -목록 당신이 원하는 것일 수 있습니다.

참조 남성

Joshperry의 대답이 맞지만, 화면 이름 (-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 현재 어떤 폴더를 확인하기위한 명령 줄에서

대부분의 경우 a screen -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

화면 세션을 나열합니다.

여기에 유용 할 수있는 또 다른 트릭이 있습니다.

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

screen -d -r

유용하다는 것을 알기를 바랍니다.

PS X | 그레프 화면

명령을 사용한 경우에 해당 화면이 무엇인지 확인하려면

화면 -a -m -d php make_something.php

따라서 화면을 사용하여 실험을 백그라운드에서 계속 실행하거나 무엇입니까? 그렇다면 백그라운드에서 시작하지 않겠습니까?

./experiment &

그리고 내가 한 작업을 알리는 방법을 묻는다면, 우편 명령과 함께 실험을하는 것은 어떻습니까?

./experiment && echo "the deed is done" | mail youruser@yourlocalworkstation -s "job on server $HOSTNAME is done"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top