Wenn ich ein Python-Skript in einem Terminal ausführe, wird es wie erwartet ausgeführt. lädt die Datei herunter und speichert sie an der gewünschten Stelle.
sudo python script.py
Ich habe das Python-Skript zur Root-Crontab hinzugefügt, aber dann wird es so ausgeführt, wie es soll, außer dass die Datei nicht geschrieben wird.
$ sudo crontab -l
> * * * * * python /home/test/script.py >> /var/log/test.log 2>&1
Unten finden Sie ein vereinfachtes Skript, bei dem das Problem weiterhin besteht:
#!/usr/bin/python
scheduleUrl = 'http://test.com/schedule.xml'
schedule = '/var/test/schedule.xml'
# Download url and save as filename
def wget(url, filename):
import urllib2
try:
response = urllib2.urlopen(url)
except Exception:
import traceback
logging.exception('generic exception: ' + traceback.format_exc())
else:
print('writing:'+filename+';')
output = open(filename,'wb')
output.write(response.read())
output.close()
# Download the schedule
wget(scheduleUrl, schedule)
Ich erhalte die Meldung "Schreiben: Name der Datei;" innerhalb des Protokolls, an das der Cron-Eintrag ausgegeben wird. Aber die eigentliche Datei ist nirgends zu finden ...
Das Verzeichnis / var / test ist auf 777 geändert und mit jedem Benutzer kann ich Dateien nach Belieben hinzufügen und ändern.
Antworten:
grep -i cron /var/log/syslog
2>&1
von der Befehlszeile, bis es wie vorgesehen funktioniert. Alle nützlichen Fehler werden in eine Datei umgeleitet, die nicht erstellt wurde. effektiv verloren.mutt
oder in/var/spool/mail
). Fehlermeldungen von cron werden standardmäßig an System-E-Mails gesendet.Ebenfalls:
quelle
Was funktioniert bei mir?
Crontab
Python-Skript
Umgebungsvariablen hinzugefügt. Verwendet tmp anstelle von var, um zu überprüfen, ob keine Berechtigungsprobleme vorliegen.
quelle
Für mich war die Lösung so einfach wie das Ändern des Dateizugriffsmodus. Anstatt:
Versuchen:
Ich habe dies verwendet, um Craigslist für Stellenausschreibungen (für mich selbst) zu kratzen und in eine Datenbank zu modellieren. Alles auf einem Himbeer-Pi gemacht.
Ich habe das gefunden und es ist dem Problem, das ich hatte, sehr ähnlich, obwohl ich meine Antwort von hier nicht ganz bekommen habe. Der Cron-Job wurde ausgeführt, aber das Python-Skript schrieb keine Dateien, wenn es über einen Cron-Job ausgeführt wurde. Das Skript würde Web-Scraped-Textdateien schreiben, wenn es über die Befehlszeile ausgeführt wird.
Lösung für mich war einfach das
wb
zurb+
rb+
Öffnet eine Datei zum Lesen und Schreiben im Binärformat. Der Dateizeiger am Anfang der Datei.quelle
Ich hatte ein ähnliches Problem:
Öffnete und schrieb die Datei nicht, wenn sie von cron ausgeführt wurde. Dies löste es
quelle