이미 실행중인 스크린 세션에 명령 보내기


11

opensolaris에서 실행중인 gnu 스크린 세션 (4.00.03)으로 명령을 보내려고했지만 다음과 같은 조합을 통해 명령을 실행하도록 할 수 없습니다 screen -X

좋아, 나는 화면 세션을 screen -S test시작한 다음 screen -r -X "date"다시 연결 할 때 날짜를 보여 주려고 노력 했다. 그러나 화면에 오류 메시지 나 출력이 발생하지 않았습니다. 나는 너무 많은 조합으로 시도했는데 기억조차하지 못했습니다.

그것을 달성하는 방법에 대한 힌트가 있습니까?

내가하고있는 이유는 데몬으로 제공되지 않는 프로그램이 있고 화면 세션에서 시작하기를 원하기 때문에 나중에 무슨 일이 일어나고 있는지 알 수 있기 때문입니다.


1
마치 맨 페이지에서 말하는 "명령"이 화면 세션 자체의 설정과 같은 화면 명령을위한 것 같습니다. 화면 세션에서 열리는 쉘에 대한 명령을 보내는 대신. 그래서 누구나 bash 스크립트로 어떻게 만들 수 있는지에 대한 아이디어가 있습니까?

@Axon : 그렇습니다. -X는 쉘 명령이 아닌 화면 명령을 전송하지만 screen에는 새로운 화면 창을 열 수있는 'screen'명령이 있습니다.

답변:


18

실제로는 매우 간단합니다. 다음을 사용할 수 있습니다.

screen -S sessionname -X stuff 'command'`echo -ne '\015'`

echo -ne '\015'Enter키 누르기를 에뮬레이트합니다 .

참고 : 'stuff'는 화면 명령입니다. http://www.gnu.org/software/screen/manual/screen.html#Stuff


"재료"가 무엇을 나타내는 지 지정할 수 있습니까? 이름 ... 또는 명령 ... 또는 다른 매개 변수입니까?
Cerin

실제로 작동하지만 어떻게 든 간단하지는 않습니다.) 키 누르는 이벤트를 전달하고 화면에 줄 바꿈을 전달하는 것과 같습니다. 정상적인 화면 실행 명령이 없습니까?
ducin

@Cecin : stuff문자열을 stdin에 '넣는'화면 명령입니다
konrad

이것은 매우 좋지만 어떤 이유로 "screen -RsS sessionname -X stuff 'ls -l' echo -ne '\015'" 와 함께 작동하지 않습니다 . 왜 그렇 습니까?
e271p314

명령을 두 번 실행하지 않고 별도의 명령 줄에서 실행하지 않으면 screen -d -m -S sessionname; screen -S sessionname -X [...]아무것도 작동 (screen -d -m -S sessionname&)&sleep 10;screen -S sessionname -X [...]하지 않습니다. 다운 투표
user3338098 2016 년

5

원하는 것처럼 들립니다.

$ screen -S test -d -m -c / dev / null-sh -c '날짜; exec $ SHELL '

-S 테스트 :이 세션의 이름을 지정하십시오
-d -m : 시작 화면 분리
-c / dev / null : ~ / .screenrc를 무시합니다 (다른 파일을 제공하거나이 옵션을 삭제,
  필요에 따라)
-: 화면 끝 옵션
sh -c '날짜; exec $ SHELL ': 화면을 실행하기위한 명령입니다.
  '날짜'였으면 화면이 즉시 종료됩니다. 종료하고 싶지 않다면
  명령이 종료 된 후 화면을 표시하면 다음을 사용할 수 있습니다.
    $ screen -S test -d -m -c / dev / null-여기서 명령

아니면 그냥 dtach 원할 수도 있습니다 .


이것을 실행하면 아무것도 발생하지 않습니다. 성공 또는 오류 메시지는 없지만 screen -list열린 세션이 없음을 나타냅니다.
Cerin

이 대답은 나를 위해 일했습니다. 핵심은 화면 옵션을 끝내는 것입니다.
Plazgoth

1
screen -S <session_name> -X screen [-t <title>] <shell_command> [<args>]

(제목으로 새 창 열기 제목을 기존 세션의 이름에서) session_name 및 실행 shell_command (옵션 인수와 인수를 )

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.