실행 중인 화면 세션을 나열하려면 어떻게 해야 합니까?
많은 서버를 가지고 있으며, 이 서버에서screen순서는 다음과 같습니다.
ssh서버 XXX로- 시작하다
screen - 몇 가지 탭으로 실험을 시작하다
- 분리하다
screen - 서버와의 접속을 끊다
실험이 실행되고 있는 동안, 어떤 서버에서 실험을 하고 있는지 쉽게 알 수 있습니다.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
'programing' 카테고리의 다른 글
| Excel - 값 변경에 따라 행 전체를 음영 처리 (0) | 2023.04.19 |
|---|---|
| 이미지 포함 WPF 버튼 (0) | 2023.04.19 |
| 부울 리스트에서 True 값의 인덱스 가져오기 (0) | 2023.04.19 |
| 도커 - 캐시 키 계산 실패: 찾을 수 없음 - Visual Studio에서 정상적으로 실행됨 (0) | 2023.04.19 |
| Excel 파일을 읽고 데이터베이스 Larabel 5에 업로드하는 중 (0) | 2023.04.19 |
