유효한 화면 세션 이름

유효한 화면 세션 이름

GNU 화면(버전 4)을 사용하면 다음 코드가 제대로 실행되는 이유는 무엇입니까?

$ screen -S some-name

하지만 세션 이름에 슬래시( )를 포함하려고 하면 /다중 사용자 지원에 대한 오류가 발생합니다.

$ screen -S some/name
Must run suid root for multiuser support.

화면 내에서 세션 이름을 설정하려고 하면 다음과 같습니다.

$ screen
C-a :sessionname some/name

다음 오류가 발생합니다.

: bad session name 'some/name'

따라서 a는 /세션 이름에 유효하지 않은 문자입니다. 보고 있다스크린 매뉴얼 페이지, 다음에 대해 유효하지 않거나 예약된 문자가 표시되지 않습니다 sessionname.

'-S 세션 이름'

새 세션의 이름을 sessionname으로 설정합니다. 이 옵션을 사용하면 기본 tty.host 접미사 대신 의미 있는 이름을 세션에 부여할 수 있습니다. 이 이름은 screen -list 및 screen -r 명령에 대한 세션을 식별합니다. 이 옵션은 sessionname 명령과 동일합니다(세션 이름 참조).

8.5 세션 이름 - 명령: 세션 이름 [이름]

(없음) 현재 세션의 이름을 바꿉니다. screen -list의 경우 이름 앞에 프로세스 ID가 표시됩니다. 매개변수 이름을 생략하면 해당 세션의 이름이 표시됩니다. 참고: $STY 환경 변수는 여전히 이전 이름을 반영합니다. 이로 인해 혼란이 발생할 수 있습니다. 기본값은 tty와 호스트 이름으로 구성됩니다.

또한 세션 이름이 일치하지 '않고 "인용문이 일치하지 않는다고 불평하는 것은 구문과 관련된 것 같습니다. 예를 들어 이름을 :sessionname 'test"'지정하십시오 . test"및 등 ^A^B제어 문자를 생성합니다.

세션 이름에 유효한 구문이나 문자는 무엇입니까?

답변1

screen 세션에 이름을 지정하는 목적은 -S이름을 지정하여(예: 를 사용하여) 세션을 조작할 수 있도록 하는 것입니다.screen -r ...

-r옵션 아래의 매뉴얼 페이지를 확인하십시오 .

-r [pid.tty.host]
-r sessionowner/[pid.tty.host]
분리된 화면 세션을 복원합니다. 다른 옵션은 지정할 수 없습니다(-d/-D와의 조합 제외). 그러나 여러 별도의 스크린 세션을 구별하기 위해 [pid.]tty.host의 선택적 접두사가 필요할 수 있습니다. 두 번째 양식은 다중 사용자 모드에서 실행 중인 다른 사용자의 스크린 세션에 연결하는 데 사용됩니다. 이는 화면이 다른 사용자의 디렉터리에서 세션을 찾아야 함을 나타냅니다. 이를 위해서는 setuid-root가 필요합니다.

따라서 문자가 포함된 세션 이름은 /로 해석됩니다 owner/name. (이는 -S해당 옵션 아래에 더 잘 문서화될 수 있습니다.)

할 수 있는하다

screen -S $USER/name

이는 다음과 같습니다.

screen -S name

화면 버전 4.01.00을 사용한 몇 가지 간단한 실험에서 세션 이름에 금지된 다른 특수 문자를 찾지 못했습니다. 다음 모두:

screen -S 'foo bar'
screen -S 'foo"bar'
screen -S "foo'bar"
screen -S 'foo\bar'
screen -S "foo'bar^Xbaz"

나에게는 잘 작동합니다.

마지막에는 ^X실제로 문자 그대로의 문자가 있습니다 Ctrl-X. screen -ls말 그대로 보여줘야죠 screen -ls | cat -A. 이름을 지정하여 이러한 모든 세션을 복원할 수 있습니다.

screen -dr 'foo bar'

$STY등이며 모든 세션에서 값이 정확합니다.

(나는 분명하기를 바라는 이유로 제어 문자를 사용하지 않는 것을 권장합니다.)

관련 정보