Linux에서 시작할 때 여러 화면 세션을 만드는 방법은 무엇입니까?


3

첫째, 시작시 명령을 실행하는 가장 좋은 방법은 무엇입니까? 사용해도 되나요 su 쉘 스크립트에서 다른 사용자간에 전환하려면 어떻게?

분리 된 여러 개를 어떻게 만듭니 까? screen 시작시 세션? screen -A -m -d -S test ./script.sh 작동하는 것처럼 보이지만 cron이 시작한 스크립트에서이 스크립트를 사용하면 부팅 후 화면 세션이 표시되지 않습니다.

명령이 실행 완료되면 화면 세션이 닫힌 것처럼 보입니다. 출력을 볼 수 있도록 열어 둘 수 있습니까?

감사!

답변:


7

시스템이 부팅 할 때 명령을 실행하려면 @reboot cron에서. 만나다 man 5 crontab 자세한 내용은 이것은 crontab 행이 다음과 같이 보일 것임을 의미합니다.

@reboot screen -m ...

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

Screen은 명령이 끝나면 창을 닫고 마지막 창을 닫을 때 세션을 종료합니다. 완료 후 스크립트의 출력을 보려면 입력을 기다리는 다른 명령을 실행하십시오. 예를 들어, 누를 때까지 창을 열린 상태로 두려면 들어가다 그 안에 :

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

화면에는 제한된 수의 기록 만 유지합니다. 않는 한 script.sh 때로는 상호 작용이 필요하기 때문에 출력물을 파일로 재지 정하여 더 나은 서비스를 제공 할 수 있습니다. 상호 작용이 필요한 경우 화면의 log 명령을 사용하여 출력을 파일로 보냅니다 (입력이 필요하지 않은 경우 화면 세션이 종료되면 문제가되지 않습니다).


유용한 감사입니다. 다른 방법보다 cron을 사용해야하는 이유는 무엇입니까?
Jacob Hawkins

@ 제이콥 : 내 확장 두 번째 단락을 참조하십시오.
Gilles

2

시도해 봤어? screen -AmdS test bash -i ./script.sh ?

무슨 일이 일어나고 있는지 상상해 봅니다. 스크립트를 실행하는 시작 화면이고, 스크립트가 끝나면 화면이 종료됩니다. 그만큼 bash -i part는 화면에 대화식 모드로 bash를 시작한 다음 bash에서 스크립트를 실행하도록 지시합니다. 일단 스크립트가 실행되면 bash는 명령 프롬프트에서 기다리고 시스템에 로그인하면 화면 세션을 열어 사용자가 접속할 수있게합니다.


수퍼 유저의 영광스러운 사용자로서 귀하가 제공 한 답변에 대한 수정을 고려하십시오. 자세한 세부 사항 .
James Mertz

1

원하는 것을 수행하는 스크립트를 작성하십시오. 단일 명령에 대해서만 사용자를 전환 한 다음 계속 사용하십시오. su -c. 그렇지 않으면 별도의 스크립트를 작성하여 호출하십시오.

그런 다음 시작시 명령을 실행하려면 명령을 실행하여 스크립트를 실행하십시오. /etc/rc.d/rc.local


고마워, 왜 내가 cron이나 다른 시작 방법 대신 rc.local을 사용해야합니까?
Jacob Hawkins

대부분은 동등합니다. 서로 다른 부분은 명령을 실행할 때 정확합니다. /etc/rc.d/rc.local은 다른 모든 서비스가 시작된 후 실행할 마지막 항목입니다. @reboot가 실행될 때 맨 페이지를 확인하고 싶을 것입니다.
Kevin M
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.