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
등이며 모든 세션에서 값이 정확합니다.
(나는 분명하기를 바라는 이유로 제어 문자를 사용하지 않는 것을 권장합니다.)