Tengo un script para iniciar mi servidor de Minecraft cada reinicio. Puedo ver en los registros que está llamando al cmd, pero no se abre ninguna pantalla. Si trabajo, ejecuto el script manualmente, /home/minecraft/scripts/startMinecraft.sh
funciona perfectamente.
Aquí está mi crontab:
@reboot /home/minecraft/scripts/startMinecraft.sh
38 00,06,12,16 * * * /home/minecraft/scripts/backup.sh
Es un servidor centos 6.
Aquí está mi startMinecraft.sh
guión.
screen -A -m -d -S minecraftserver /home/minecraft/scripts/startServer.sh
Como dije antes, si ejecuto esa línea exacta manualmente, funciona perfectamente.
Respuesta1
Lo más probable es que necesite establecer la ruta completa para los archivos binarios, screen
ya que cuando se ejecuta el trabajo cron, no tendrá los valores $PATH configurados de la misma manera que usted, como usuario, los tiene configurados cuando inicia sesión a través de Terminal o SSH.Esta respuesta en Stack OverflowEs una explicación decente de todo el asunto.
Entonces te recomendaría que cambies tu script de este:
screen -A -m -d -S minecraftserver /home/minecraft/scripts/startServer.sh
A esto:
/path/to/screen -A -m -d -S minecraftserver /home/minecraft/scripts/startServer.sh
Y reemplácelo /path/to/screen
con la ruta completa real que puede obtener fácilmente usandowhich
como esto:
which screen
La salida sería algo como:
/usr/bin/screen
O bien, puede configurar $PATH colocándolo en su script de esta manera:
PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Por supuesto, eso debería coincidir con el valor de RUTA real en su sistema, que puede obtener escribiendo lo siguiente:
echo $PATH
Pero personalmente prefiero el método fullpath ya que es más limpio para mí y los valores $PATH cambian a menudo, por lo que no querrás tener una mezcla de valores en tus scripts Bash.
PD: Además, es una pequeña cosa, pero su script Bash debe tener el valor real del intérprete de Bash establecido en el archivo"el asunto"en la parte superior así para que tu script se vea así:
#!/bin/bash
/path/to/screen -A -m -d -S minecraftserver /home/minecraft/scripts/startServer.sh
Por supuesto, eso /bin/bash
debería coincidir con la ruta Bash real de su sistema al ejecutarse, which bash
pero dudo que no esté en la /bin/bash
ruta en una instalación moderna.