Linux 시작 시 여러 화면 세션을 어떻게 생성합니까?

Linux 시작 시 여러 화면 세션을 어떻게 생성합니까?

첫째, 시작할 때 명령을 실행하는 가장 좋은 방법은 무엇입니까, cron? 다른 사용자 간에 전환하기 위해 쉘 스크립트에서 사용할 수 있습니까 su? 그렇다면 어떻게 해야 합니까?

screen시작 시 여러 개의 분리된 세션을 어떻게 생성합니까 ? screen -A -m -d -S test ./script.sh작동할 것 같지만 cron으로 시작된 스크립트에서 이를 사용하면 부팅 후 실행 중인 화면 세션이 표시되지 않습니다.

명령 실행이 완료된 후 screen 세션이 닫히는 것 같습니다. 출력을 볼 수 있도록 열어 둘 수 있습니까?

감사해요!

답변1

시스템이 부팅될 때 명령을 실행하려면 @rebootcron에서 명령을 예약하세요. 자세한 내용은 참조하세요 man 5 crontab. 이는 crontab 라인이 다음과 같아야 함을 의미합니다.

@reboot screen -m ...

그런 용도로 사용하지 말고 su명령을 실행해야 하는 사용자의 crontab에 명령을 넣으십시오. 이렇게 하면 사용자는 루트의 개입 없이 명령을 관리할 수 있습니다. (그러나 보안상의 이유로 시스템 사용자가 명령을 변경하도록 허용하지 않고 시스템 사용자로서 명령을 실행하려면 다음과 같은 것이 su -c /path/to/command www-data/etc/rc.local좋습니다.)

Screen은 명령이 완료되면 창을 닫고 마지막 창이 닫히면 세션을 종료합니다. 스크립트가 완료된 후 출력을 보려면 스크립트 뒤에 다른 명령을 실행하여 입력을 기다리세요. 예를 들어, 창을 누를 때까지 창을 열어 두려면 다음을 수행하세요 Enter.

screen sh -c './script.sh; read'

화면에는 제한된 수의 기록 줄만 보관된다는 점을 기억하세요. 상호 작용이 필요한 경우 가 아니라면 script.sh출력을 파일로 리디렉션하는 것이 더 나은 서비스를 제공할 것입니다. 상호 작용이 필요한 경우 screen log명령을 사용하여 출력을 파일로 보낼 수 있습니다(그러면 입력이 필요하지 않을 때 screen 세션이 종료되어도 문제가 되지 않습니다).

답변2

시도해 보셨나요 screen -AmdS test bash -i ./script.sh?

무슨 일이 일어나고 있는지 상상해보십시오. 스크립트를 실행하는 화면이 시작된 다음 스크립트가 종료되면 화면이 종료됩니다. 이 bash -i부분은 대화형 모드에서 bash를 시작한 다음 bash가 스크립트를 실행하도록 화면에 지시합니다. 스크립트 실행이 완료되면 bash는 명령 프롬프트에서 계속 대기하며 시스템에 로그인한 후 연결할 수 있도록 screen 세션을 열어 둡니다.

답변3

원하는 작업을 수행하는 스크립트를 만듭니다. 단일 명령에 대해서만 사용자 간에 전환하는 경우 계속해서 을 사용하십시오 su -c. 그렇지 않으면 별도의 스크립트를 만들어 호출하세요.

그런 다음 시작 시 명령을 실행하려면 스크립트를 실행하는 명령을 다음 위치에 입력하세요./etc/rc.d/rc.local

관련 정보