bash - tareas - El comando GPIO para frambuesa no funciona a través de crontab
instalar crontab ubuntu (2)
Tenga en cuenta que cuando ejecuta algo desde crontab
, no necesariamente tendrá las mismas variables de entorno establecidas.
El env más importante variable para usted es PATH
. Creo que bajo cron
tu PATH no contiene el directorio en el que se encuentra tu comando gpio
.
Puede agregar una línea como esta en la primera línea de su crontab:
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
y esto debería solucionar su problema, si gpio
se encuentra en uno de los directorios enumerados anteriormente.
La forma típica de solucionar problemas de crontab es asegurarse de que env. las variables son lo que usted espera que sean. Agregue líneas como esta en la primera línea del script para depurar:
set > /path/to/log/file # be sure that this file is writable
Ejecútelo una vez manualmente, copie el archivo de registro a un lado. Luego, ejecútelo nuevamente desde cron, compare la salida; verá qué los hace diferentes.
Tengo una Raspberry Pi. He instalado WiringPi para el piloto GPIO en el tablero a través de la línea de comandos.
He hecho un script llamado aggiornaora.sh
gpio -g write 18 1 #it set the GPIO port to 1
#log with reverse append
(echo ''accensione'';date;echo '' '') | cat - logstufa.txt > temp && mv temp logstufa.txt
Este script funciona bien si intento ejecutarlo directamente a través de sh aggiornaora.sh
. Pero cuando cron ejecuta el script, solo hace la segunda acción. Todo con permiso de root. He comprobado este problema a través de "gpio readall".
En tu opinión, ¿cuál podría ser el problema?
Sí, he tenido el mismo problema (usando comandos gpio en crontab). Una solución rápida que funcionó para mí fue anteponer un ''sudo'' a los comandos de gpio como: sudo gpio write 0 1
Cuando revisé mi script bash y preparé el ''sudo'' a todos mis comandos gpio todo funciona bien.
La respuesta anterior sugerida por mvp es la "mejor" forma de solucionar este tipo de problemas con crontab. Espero que esto ayude