screen을 실행하고 다른 명령을 즉시 실행

screen을 실행하고 다른 명령을 즉시 실행

화면 세션을 시작하는 방법과 사람의 개입 없이 연결된 화면 세션에서 명령을 실행하는 방법을 알 수 없습니다. 예상되는 동작은 다음과 같습니다.

[me@me ~]# screen -S name -L --mystery_flag 'hostname;echo yes;echo no'
#new screen session
[me@me ~]# hostname
me
[me@me ~]# echo yes
yes
[me@me ~]# echo no
no
[me@me ~]#

화면의 분리된 세션에 명령을 보내거나 이와 같은 명령을 보낸 후 화면 세션을 닫는 방법만 찾았습니다 screen -S name "command". 대화형 스크립트를 실행하는 데 사용되므로 세션을 열린 상태로 유지하고 싶습니다.

답변1

GNU는 screen다양한 옵션과 스크린 세션 내에서 실행되는 선택적 명령을 사용합니다. 명령이 제공되지 않으면 screen세션에 대화형 셸 세션이 포함됩니다. screen명령줄에 제공된 명령이든 실행 screen된 셸이든 실행 중이던 명령 이 종료되면 세션이 종료됩니다 .

두 가지 질문이 있습니다.

  1. 여러 명령을 실행하고 싶습니다.
  2. 세션이 결국 종료되지 않고 대화형 셸 세션에 남아 있기를 원합니다 screen.

screen첫 번째 문제를 해결하려면 시작 명령을 다음으로 설정하십시오.

sh -c 'hostname; echo yes; echo no'

이는 인라인 스크립트를 시작하는 단일 명령입니다 sh -c. 이 스크립트는 명령을 실행합니다. 실행 중인 스크립트에 필요한 경우(예제는 그렇지 않음) 대신 사용할 수 있습니다 bash -c.sh -cbash

두 번째 문제를 해결하려면 스크립트가 실행하는 명령 목록의 마지막 단계로 대화형 셸을 시작하는 것을 고려하세요 sh -c.

sh -c 'hostname; echo yes; echo no; exec bash -i'

exec bash -i대화형 쉘 세션을 시작합니다 bash(이렇게 exec하면바꾸다껍데기 sh -c).

세션에서 다음 명령을 실행하십시오 screen.

screen sh -c 'hostname; echo yes; echo no; exec bash -i'

쉘 세션이 종료되면 GNU는 screen종료됩니다 bash -i.

관련 정보