Uhmmm... ¿no será que el script se inicia pero falla inmediatamente? debido a que el sistema no está del todo cargado. Por ejemplo, falta todavía la conectividad de red y por eso se cierra el script prematuramente. Así se entendería que te funcionase al escribirlo a mano, ya que el sistema estaría totalmente cargado.
Como prueba pon antes un retardo generoso de, no sé... ¿unos 60 segundos?. Algo así:
Code: Select all
sleep 60
setsid /usr/bin/python2.7 /home/pi/Desktop/bot.py &
Yo inicio un script en Bash de esta forma y me funciona (sin necesidad del retardo o comprobaciones adicionales de conectividad, sistemas de archivos externos... etc, porque no lo necesito, en caso contrario lo haría). Si sigue sin funcionar simplifica al máximo el script, a ver si así al menos funciona y puedes ir aumentando la complejidad hasta dar con lo que te lo hace fallar.