GNU 화면으로 프로그램을 실행하고 즉시 분리


27

시스템 부팅시 GNU Screen 세션에서 프로그램을 시작하는 스크립트를 작성하는 방법을 알아 내려고합니다. 나는 이것을 시도하고있다 :

#!/bin/bash
screen -S test -d -m -X $HOME/folder/folder/.program \
screen -S test2 -d -m -X $HOME/folder/folder/.program2 \

그러나 세션이 이미 분리되어 명령을 실행할 수 없습니까? 내가 필요한 유일한 것은 화면 세션에서 명령을 실행 하고이 세션을 즉시 분리하는 것입니다.

답변 주셔서 감사하지만 지금은 다른 문제에 직면했습니다. "프로그램 및 program2"에 일부 변수를 넣은 후 스크립트 작동이 중지됩니다. 이 같은:

#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program -f config.cfg

어떤 이유로 "-f config.cfg"가 무시되었습니다. 나는 또한 명령을 인용하려고 노력했지만 너무 도움이되지 않습니다.


-X옵션입니까?
enzotib

답변:


34

당신은 정말로 줄의 끝에을 두는 것을 의미 했습니까 \? 그렇지 않은 경우 제거하려고하면 다음 문자를 이스케이프 처리합니다.

또한, 삭제하면 -X설정이 나를 위해 작동 하는 데 도움이됩니다.

screen -S test -d -m -X touch /tmp/test

No screen session found그러나로 실패합니다 .

screen -S test -d -m touch /tmp/test

잘 작동합니다. 따라서 다음이 귀하에게 효과적이라고 생각합니다.

#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program
screen -S test2 -d -m $HOME/folder/folder/.program2

부팅시이 명령을 실행하면 $ HOME은 특정 사용자로 로그인 한 후와 다릅니다. 특정 사용자로 실행 해야하는 경우 좋아요를 사용하여 su해당 사용자로 실행해야하며 전체 경로를 지정하면 모든 모호성이 제거됩니다.

#!/bin/bash
screen -S test -d -m su - username /home/username/folder/folder/.program
screen -S test2 -d -m su - username /home/username/folder/folder/.program2

또는 위의 전체 스크립트를로 호출합니다 su - username /path/to/your/script.


답변 주셔서 감사하지만 지금은 다른 문제에 직면했습니다. "프로그램 및 program2"에 대한 변수를 입력 한 후 스크립트 작동이 중지됨
TbMa

이것은 : folder / .program이 끝나면 화면 세션이 자동으로 닫히는 것을 제외하고는 내가 찾은screen -S test -d -m $HOME/folder/folder/.program 것을 거의 정확하게 수행합니다 . 프로그램이 끝난 후에도 스크린 세션 (쉘)을 계속 유지할 수있는 방법이 있습니까? 아마도 프로그램을 독점적으로 실행하는 대신 프로그램을 시작한 다음 쉘 프롬프트로 돌아가는 쉘을 시작하십시오.
RocketNuts

4

Cry Havok에서 언급했듯이 프로그램을 명령 줄에 바로 배치 할 수 있습니다.

실제로 -X 옵션을 사용해야하는 경우 a) 'screen'명령을 지정해야하며 b) 세션이 미리 존재해야합니다.

screen -dmS test
screen -S test -X screen $HOME/folder/folder/.program
screen -dmS test2
screen -S test2 -X screen $HOME/folder/folder/.program2

프로그램을 명령 행에 놓으면 프로그램이 종료 될 때 화면이 종료됩니다. 콘솔 출력을 보려면 화면을 열어 두는 명령 줄 플래그가 표시되지 않습니다. 화면을 시작하고 여기에 표시된대로 명령을 개별적으로 보내면 sleep명령을 보내기 전에 세션을 시작하기 위해 화면 시간을 제공하는 명시적인 명령 이 필요할 수 있습니다 .
Chinasaur

이 답변은 매우 유사하다 stackoverflow.com 응답 응답 비슷한 질문을 . 이 답변은 사용자의 기본 셸 내에서 프로그램을 실행하기 때문에 @CryHavok보다이 답변을 선호합니다 (@CryHavok은 부모 셸없이 프로그램을 실행하므로 프로그램이 종료되거나 Ctrl-c하면 화면 세션이 즉시 종료 됨)
Trevor Boyd Smith
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.