No puedo hacer que cron ejecute un script de python con sudo. El script se ocupa de la entrada GPIO, por lo que debe llamarse con sudo. Se supone que el programa guarda la temperatura y la humedad en los archivos, pero cat temp.txt y cat humid.txt me dieron cadenas vacías.
sudo crontab -e
* * * * * python /home/dixhom/Adafruit_Python_DHT/examples/temphumid.py 1>>/tmp/cronoutput.log 2>>/tmp/cronerror.log #!/usr/bin/python import sys import Adafruit_DHT import datetime # Adafruit_DHT.DHT22 : device name # 4 : pin number humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, 4) if humidity is not None: f = open("humid.txt","w") str = '{0}, {1}'.format(datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S"), humidity) f.write(str) else: print 'Failed to get reading. Try again!' sys.exit(1) if temperature is not None: f = open("temp.txt","w") str = '{0}, {1}'.format(datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S"), temperature) f.write(str) else: print 'Failed to get reading. Try again!' sys.exit(1)(vacío)
sudo crontab -e/usr/bin/python en cronchkconfig cron (cron encendido)sudo apt-get update sudo apt-get upgradesudo rebootCualquier ayuda sería apreciada. Gracias.
Opción 1: puede editar /etc/crontab . Allí puede especificar qué usuario ejecutará el trabajo respectivo en una columna justo después de la programación.
Opción 2: edite el crontab de root usando
sudo su crontab -eIría por la segunda opción porque esto es lo que sugieren los documentos ...
(Descargo de responsabilidad: no se aceptan garantías con respecto a las cosas de GPIO. Solo asumo que tiene razón con "necesita sudo", porque nunca hago GPIO en el raspi. Así que me referí a ejecutar un script solo como root).
El problema eran las rutas relativas. Los datos se guardaron en un lugar diferente de lo que estaba viendo.
Cambiando
f = open("humid.txt","w")para
f = open("/home/dixhom/Adafruit_Python_DHT/examples/humid.txt","w")resolver el problema