crontab을 사용하여 스크린 세션을 시작하려면 어떻게합니까?


12

화면을 시작하고 게임 서버를 시작하고 분리하도록 crontab 항목을 만들고 싶습니다. 이것은 서버가 재부팅되고 자동으로 시작되도록하려는 경우입니다.

000 0 (명령)

시작할 때 실행해야합니다.

~ / cube / server.sh에 위치한 쉘 파일을 실행합니다.


이 컴퓨터의 사용자입니까, 아니면 초기화 스크립트에 액세스 할 수 있습니까?
Corey S.


@Dennis : 그렇습니다. 그러나 우리는 그가 실행중인 게임 서버에 그가 액세스해야 할 일종의 콘솔이 없다고 가정 할 수 없습니다 (즉, 항상 포 그라운드에서 실행됩니다). 그렇지 않으면 왜 스크린을 괴롭 히겠습니까? 물론, 그는 nohup과 배경을 알지 못한다.
Corey S.

이 컴퓨터의 사용자입니다.
Victor

답변:


15

이와 같은 것이 작동해야합니다. 이 예제는 화면을 생성하고 "top"을 실행합니다.

screen -d -m top

표시된대로 crontab에서 다음과 같은 작업을 수행하려고합니다.

@reboot /usr/bin/screen -dmS gameserver-screen /opt/mycoolgame/bin/gameserver

물론 게임 서버에 "일반"환경 세트가 필요한 경우 다음을 통해 더 가까이 갈 수 있습니다.

@reboot (. ~/.profile; /usr/bin/screen -dmS gameserver-screen /opt/mycoolgame/bin/gameserver)

1
. ~/.profile부분은 무엇을합니까?
Victor

cron 항목의 환경을 강제로 설정합니다. 그것없이, 당신은 단지 몇 가지 매우 구체적인 항목을 얻습니다. (자세한 내용은 man crontab 참조)
Corey S.

게임 서버를 실행하는 .sh 파일이 있는데 이것이 작동합니까? @reboot (. ~/cube; /usr/bin/screen -dmS gameserver-screen ./server.sh)
Victor

아마도 가장 좋은 방법 일 것입니다. 작동한다면 프로파일에 대해 걱정할 필요는 없지만 전체 $ PATH 등이 필요한 경우 server.sh 스크립트에서 .profile을 항상 소싱 할 수 있습니다.
Corey S.

5

이것으로 충분합니다 ... 실행

$ crontab -e

그런 다음 다음을 입력하십시오.

@reboot screen -dmS Victor

이 'Victor'명령이 스크립트 실행과 어떤 관련이 있는지 설명해 주시겠습니까? 예를 들어 OP가 요청한 스크립트?
Patrick

1
-S는 세션 이름입니다
atx

4

완벽을 기하기 위해 목적 대신 tmux 를 대신 사용할 수도 있습니다 screen( 비교는 이 링크 참조 ).

@reboot tmux new-session -d -s yourNameOfTheSession "your command to run"

0

비슷한 상황이 있었지만 다른 불합리한 제한으로 인해 crontab을 사용할 수 없었습니다. 실제로 inittab 호출 화면이있었습니다. (정보를 모호하게하기 위해 일부 이름을 대체했습니다) :

XXX:5:respawn:/bin/su - useraccount -c "screen -D -m -c /home/xxxxxx/file.screenrc"

'file.screenrc'에서 몇 가지 옵션을 설정합니다.

sessionname obscuresessionname
multiuser on
cd
screen /home/xxxxxxx/programtostart

이렇게하면 부팅시 시작되었으며 프로그램이 종료되거나 화면이 닫히면 다시 생성됩니다. 기존의 것으로 간주되지는 않았지만 몇 가지 이상한 환경 요구 사항을 해결해야했습니다. 만약 우리가 그것을 제거해야한다면, 우리는 그 라인을 주석 처리하고 세션을 종료해야 할 것입니다. 그런 다음 다시 가져올 준비가되면 주석 처리를 제거하고 초기화하십시오. q.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.