É provável que você precise definir o caminho completo para binários como screen
, pois quando a tarefa cron for executada, os valores de $ PATH não serão definidos da mesma maneira que um usuário quando você fizer login via Terminal ou SSH. Esta resposta no Stack Overflow é uma explicação decente de todo o negócio.
Por isso, recomendo que você altere seu script a partir disso:
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 usando which
assim :
which screen
A saída seria algo como:
/usr/bin/screen
Ou, você poderia 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 seu valor real de PATH em seu sistema, o 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 de $ PATH geralmente mudam, então você não quer ter um desejo de valores em seus scripts Bash.
PS: Além disso, uma pequena coisa, mas seu script Bash deve ter o valor real do interpretador Bash definido no “shebang " no topo dessa forma, para que seu script seja parecido com isto:
#!/bin/bash
/path/to/screen -A -m -d -S minecraftserver /home/minecraft/scripts/startServer.sh
É claro que /bin/bash
deve corresponder ao caminho Bash real de seus sistemas executando which bash
, mas duvido que não esteja no caminho /bin/bash
em uma instalação moderna.