기회는 바이너리와 같은 전체 경로를 설정해야합니다. screen
cron 작업이 실행될 때 터미널이나 SSH를 통해 로그인 할 때 사용자가 설정 한 것과 동일한 방식으로 $ PATH 값을 설정하지 않기 때문입니다. 스택 오버플로에 대한 답변 전체 거래에 대한 예의 바른 설명입니다.
그래서 나는이 스크립트를 다음과 같이 바꿀 것을 권한다.
screen -A -m -d -S minecraftserver /home/minecraft/scripts/startServer.sh
이에:
/path/to/screen -A -m -d -S minecraftserver /home/minecraft/scripts/startServer.sh
그리고 /path/to/screen
당신이 쉽게 얻을 수있는 실제 전체 경로 which
이렇게 :
which screen
출력은 다음과 같습니다.
/usr/bin/screen
또는 실제로 $ PATH를 다음과 같이 스크립트에 배치하여 설정할 수 있습니다.
PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
물론 다음과 같이 입력하여 얻을 수있는 실제 PATH 값과 일치해야합니다.
echo $PATH
하지만 나는 개인적으로 나에게 더 깨끗하고 $ PATH 값이 자주 변경되므로 fullpath 메소드를 선호하므로 Bash 스크립트에 값의 소원을 갖기를 원하지 않는다.
추신 : 또한, 작은 일이지만 귀하의 Bash 스크립트는 실제 배쉬 인터프리터 값을 가지고 있어야합니다. "오두막" 위와 같이 스크립트가 다음과 같이 보일 것입니다.
#!/bin/bash
/path/to/screen -A -m -d -S minecraftserver /home/minecraft/scripts/startServer.sh
물론 그 /bin/bash
실행에 의한 시스템의 실제 Bash 경로와 일치해야합니다. which bash
하지만 나는 그것이 /bin/bash
현대 설치 경로입니다.
#!/bin/bash /usr/bin/screen -A -m -d -S minecraftserver /home/minecraft/scripts/startServer.sh
그리고 불행히도 변화가 없습니다. 도움을 주셔서 감사합니다.