Eu tenho um script para iniciar meu servidor Minecraft a cada reinicialização. Posso ver nos logs que ele está chamando o cmd, mas nenhuma tela está sendo aberta. Se eu trabalhar, execute o script manualmente, /home/minecraft/scripts/startMinecraft.sh
ele funciona perfeitamente.
Aqui está meu crontab:
@reboot /home/minecraft/scripts/startMinecraft.sh
38 00,06,12,16 * * * /home/minecraft/scripts/backup.sh
É um servidor centos 6.
Aqui está meu startMinecraft.sh
roteiro.
screen -A -m -d -S minecraftserver /home/minecraft/scripts/startServer.sh
Como eu disse antes, se eu executar essa linha exata manualmente, ela funciona perfeitamente.
Responder1
Provavelmente, você precisa definir o caminho completo para os binários, pois screen
quando o cron job é executado, ele não terá os valores $PATH definidos da mesma forma que você, como usuário, os definiu ao fazer login via Terminal ou SSH.Esta resposta no Stack Overflowé uma explicação decente de todo o negócio.
Então, eu recomendo que você altere seu script a partir deste:
screen -A -m -d -S minecraftserver /home/minecraft/scripts/startServer.sh
Para isso:
/path/to/screen -A -m -d -S minecraftserver /home/minecraft/scripts/startServer.sh
E substitua /path/to/screen
pelo caminho completo real que você pode obter facilmente usandowhich
assim:
which screen
A saída seria algo como:
/usr/bin/screen
Ou você pode definir o $PATH colocando-o em seu script assim:
PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
É claro que isso deve corresponder ao valor PATH real em seu sistema, que você pode obter digitando o seguinte:
echo $PATH
Mas eu pessoalmente prefiro o método fullpath, pois é mais limpo para mim e os valores $PATH mudam frequentemente, então você não deseja ter uma mistura de valores em seus scripts Bash.
PS: Além disso, uma coisa pequena, mas seu script Bash deve ter o valor real do interpretador Bash definido no“Shebang”na parte superior assim para que seu script fique mais ou menos assim:
#!/bin/bash
/path/to/screen -A -m -d -S minecraftserver /home/minecraft/scripts/startServer.sh
É claro que isso /bin/bash
deve corresponder ao caminho Bash real do seu sistema em execução, which bash
mas duvido que não esteja no /bin/bash
caminho em uma instalação moderna.