contab을 사용하여 bash 스크립트로 스크린 세션 만들기


8

나는 .jar 파일은 내가 사용 crontab을 편집 한 서버가 부팅 (우리는 VPS를 사용하는), 그리고 그래서 때마다 실행하려면 crontab -e다음 추가를 @reboot bash /home/bash/startserver.sh. 그러나 스크립트가 작동하는 시점까지는 얻지 못했습니다.

내 스크립트는 다음과 같습니다.

#!/bin/bash
screen -S bukkit
cd $HOME/server
java -jar bukkit.jar

내가 사용해야하는 이유는 screenbukkit.jar를 시작할 때 해당 프로그램에 대한 더 많은 명령을 입력 할 수있는 콘솔로 들어가기 때문입니다 (이 사이트의 Minecraft 및 해당 서버에 모두 익숙하다고 확신합니다) , haha),하지만 다른 명령을 루트로 실행하고 다른 프로그램이 실행되는 동안 PuTTY 세션을 닫을 수 있어야합니다.

유일한 문제는이 스크립트가 실행될 때 스크린 세션을 생성하지만 ID가 비어 있으므로 ID가 목록에 표시 되지 않는다는 것screen -ls 입니다. 오히려 /run/screen/S-rootID를 찾아서 일반적인 ID를 사용해야 screen -X -S $name quit합니다.

어쩌면 이것이 가능하지 않거나 실제로이 작업을 수행하는 더 간단한 방법이있을 수도 있습니다 (단순히 좋아할 것입니다). 그러나 이것이 왜 작동하지 않는지 알 수 없습니다. 그리고 이것이 가능하다면 screen -S bukkitbash 스크립트를 실행할 때 세션에 다시 참여할 수 있습니까? (여러 가지 질문이 있습니다 만, 도와 주셔서 감사합니다! (괄호))

답변:


15

분리 모드에서 화면을 시작하고 내부에서 명령을 실행하십시오.

screen -d -m -S bukkit bash -c 'cd $HOME/server && java -jar bukkit.jar'

전용 스크립트를 만들 수도 있습니다 bukkit.sh.

#!/bin/bash -e
cd ~/server
java -jar bukkit.jar

스크립트가 더 복잡하게한다면 당신은을 위해 긴 줄을 작성하지 않도록 screen하고, 그래서 screen명령을 간단하게 동일하게 유지 할 수 있습니다 :

screen -d -m -S bukkit path/to/bukkit.sh

1
더 긴 파일을 가진 옵션과 두 개의 별도 파일을 가진 옵션을 모두 시도했지만 이제 화면 세션이 전혀 생성되지 않습니다. 명령 줄에서 직접 명령을 실행하려고 시도했지만 작동하지 않았습니다 .. : /
Jacob Larson

오류 메시지 나 다른 것이 있습니까? 먼저 bukkit.sh스크립트를 명령 행에서 작동 시키십시오. 그런 다음 screen -S bukkit path/to/bukkit.sh작동하는지 확인하십시오 . 그런 다음 screen -d -m -S bukkit path/to/bukkit.sh작동하는지 확인하십시오 . 마지막으로 cron을 설정하십시오. 가장 간단한 방법을 먼저 시도하고 약간의 단계를 수행하여 어떤 단계가 중단되는지 이해하십시오. 알려주세요. 도움이 필요하면 오류 메시지가 나타납니다.
janos

1

당신은해야 update-rc.d부팅 서비스를 설정하기 위해 다음과 같은 :

# update-rc.d cron defaults

@JacobLarson 천만에요 .. 도움이 될 경우 답변으로 표시하고
투표
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.