나는 다음과 같은 다양한 링크를 읽었습니다.
이것들은 모두 같은 말을 하는 것 같습니다. 사용 가능한 옵션을 대부분 시도했지만 내가 뭘 잘못하고 있는지 모르겠습니다.
현재 다른 가능한 문제가 발생하지 않도록 스크립트를 수동으로 로드하고 있습니다.
Filename="startup.sh" - 다음 내용이 포함된 sh 파일을 사용하여 시작 시 화면을 만듭니다.
#!/bin/sh
screen -dmS megadl
이것은 작동합니다.
Filename="start.sh" - 분리된 화면을 로드하고 다른 스크립트를 실행하기 위해 이 파일을 만들었습니다.
#!/bin/sh
screen -r megadl /home/pi/mega_start.sh
화면을 로드하지만 mega_start.sh에서는 아무 일도 일어나지 않습니다.
Filename="mega_start.sh" - 대부분의 코드가 있는 곳에 이 파일을 만듭니다. 테스트 목적으로 지금은 echo만 포함하고 있습니다.
#!/bin/sh
echo "test"
내가 뭘 잘못했나요? start.sh가 mega_start.sh 파일을 로드하기를 원할 때까지 계속 작동합니다.
답변1
"내가 뭘 잘못하고 있는 거지?" 부분에 대한 답은 매뉴얼에 있습니다 :)
-r 분리된 화면 세션을 복원합니다. 다른 옵션은 지정할 수 없습니다(-d/-D와의 조합 제외). 그러나 여러 별도의 스크린 세션을 구별하기 위해 [pid.]tty.host의 선택적 접두사가 필요할 수 있습니다.
세션에 연결된 동안에는 할 수 있는 일이 많지 않습니다. 그럼 당신은 무엇을 할 수 있나요? screen을 사용하여 stuff
명령을 기존 화면 입력 대기열에 넣은 다음 추가 할 수 있습니다 (스크립트 뒤의 새 줄이 실제로 명령을 실행합니다) start.sh
.
#!/bin/sh
screen -S megadl -X stuff '/home/pi/mega_start.sh\n'
screen -r megadl
해당 화면에서 이미 무언가를 실행하고 있다면 그곳으로 전달하게 되므로 중요한 것을 실행 중인 경우 위험할 수 있다는 점에 유의하는 것이 중요합니다.
$ screen -S test -X stuff 'top\n' # run top
$ screen -r test # top displaying processes
$ screen -S test -X stuff 'q' # kill top
$ screen -r test # top is no longer running