GNU Screen 세션에 명령을 보내는 방법은 무엇입니까? 세션을 대화형으로 사용하는 경우 Ctrl+ A이스케이프 시퀀스를 입력합니다.
lynx
"텍스트 기반 UI"(예 : 또는 ) 로만 작동하는 프로그램을 작동하려면 다른 위치(예: BASH 쉘 스크립트, PHP 페이지 등)에서 GNU SCREEN 세션으로 특정 키 입력을 보내야 합니다 vim
. 때로는 화면에 무슨 일이 일어나고 있는지 확인해야 하므로 명령을 사용하여 뷰를 내보냅니다 hardcopy -h outputFile
.
Ctrl+를 화면에 " 채워야 A" 하지만 +를 :보낼 수는 없습니다 . 나는 이것을 시도했습니다 :CtrlA
$screen -S test -p 0 -X 물건 '^A:'
하지만 이는 화면에 콜론(:)만 표시하고 ^A를 무시합니다.
현재 수행 중인 작업(작동하지 않음, 3단계를 완료하려면 수동 개입 필요):
설정 화면
$스크린-S 테스트
화면에 명령 주입
$screen -S test -p 0 -X 물건 'python^M'
$screen -S test -p 0 -X 물건 '42*9^M'화면 내에서 Ctrl+를 수행 A한 다음 :화면의 명령 입력을 불러올 수 있습니다. 해당 입력에 다음을 입력합니다.
:하드 카피 -h /tmp/scr-test.txt
cat
그런 다음 파일을 -ing하여 화면 내용을 가져올 수 있습니다.$고양이/tmp/scr-test.txt
다음을 생성합니다.
$cat /tmp/scr-test.txt
justin@justin2012:~$ python
Python 2.7.8(기본값, 2014년 10월 18일, 12:50:18) [GCC 4.9.1]
linux2에서는
"help", "copyright"를 입력하세요. , "크레딧" 또는 "라이센스"를 참조하세요.
>>> 42*9
378
>>>
답변1
screen -S test -p 0 -X stuff '^A:'
작동하지만 사용자가 원하는 작업이 아니라 예상되는 작업을 수행합니다. ^A
두 문자를 :
화면 창에서 실행 중인 응용 프로그램에 보냅니다. 이것이 stuff
바로 이 명령이 수행하는 작업입니다. 화면 인터페이스가 아닌 화면 창에서 실행 중인 응용 프로그램에 문자를 보냅니다.
당신이 원하는 것은 화면 내부에서 실행되는 응용 프로그램이 아니라 화면 자체에 명령을 보내는 것입니다. 따라서 이 명령을 사용하지 마십시오 stuff
. 이 명령의 목적은 아닙니다. 당신이 찾고 있는 기능은 간단합니다 screen -X …
. 이것은 screen -X stuff …
특별한 경우입니다.
hardcopy
예를 들어 화면에서 명령을 실행하려면 다음을 실행하세요.
screen -S test -p 0 -X hardcopy -h outputFile