cron 탭을 사용하여 스크린 세션을 실행하지 않는 쉘 스크립트

cron 탭을 사용하여 스크린 세션을 실행하지 않는 쉘 스크립트

저는 Almalinux VPS에서 아이들을 위해 Minecraft Bedrock 서버를 운영하고 있습니다. 완전히 지원되지는 않지만 작동합니다. 하루에 2번 정도 문을 닫습니다. 서버를 자동으로 다시 시작하려고 합니다. 매분마다 실행되고 서버를 다시 시작하도록 설계된 cron 작업이 있습니다. 다시 시작된 명령줄은 터미널에서 실행하면 작동하지만 crontab에서는 작동하지 않습니다. 에코 메시지가 나에게 이메일로 전송되므로 스크립트 자체가 실행됩니다. 로그 파일 쓰기를 포함하여 screen 명령을 여러 번 반복했지만 파일이 생성되지 않았습니다.

내 crontab 항목:

* * * * * root /bin/bash /home/mcserver/minecraft_bedrock/restart.sh

내 파일 restart.sh:

#!/bin/bash
ps_out=`ps -ef | grep bedrock_server | grep -v 'grep' | grep -v $0`
result=$(echo $ps_out | grep bedrock_server)
if [[ "$result" == "" ]]; then
    echo "attempting restart"
    screen -d -m /home/mcserver/minecraft_bedrock/bedrock_server 
fi

올바른 방향으로 안내해 주셔서 감사합니다!

편집: 몇 가지를 더 시도한 후에 스크립트가 작동하도록 할 수 있었습니다. 이 질문에 대해서는 제가 이해하지 못하는 부분이 있을 것 같아서 직접 답변하지는 않겠으며, 화면 사용법이나 왜 작동하지 않는지 설명해주신 사용자분께 답변을 드리고 싶습니다. 아래 코드(작동)에서는 제가 시도했지만 작동하지 않은 것(screen 및 tmux 사용)을 주석으로 처리했습니다. 방금 시작 파일 ./bedrock_server를 실행하려고 시도했지만 터미널을 사용해야 한다는 메시지가 표시되기 전에 오류가 발생하여 화면 사용을 시작하게 되었습니다. 최근 오류를 토대로 디렉터리를 절대 디렉터리로 변경한 다음 ./bedrock_server를 실행해야 한다고 판단했습니다. 작업 코드는 다음과 같습니다.

#!/bin/bash
ps_out=`ps -ef | grep bedrock_server | grep -v 'grep' | grep -v $0`
result=$(echo $ps_out | grep bedrock_server)
if [[ "$result" == "" ]]; then
    # screen -d -m /home/mcserver/minecraft_bedrock/bedrock_server
    #tmux new-session -d -s mc_session '/home/mcserver/minecraft_bedrock/bedrock_server'
    cd /home/mcserver/minecraft_bedrock/
    ./bedrock_server
fi

관련 정보