So öffnen Sie eine URL automatisch zu bestimmten Zeiten jeden Tag

So öffnen Sie eine URL automatisch zu bestimmten Zeiten jeden Tag

Ich verwende Kubuntu 14.04. Ich habe Cron mit „sudo apt-get install cron“ installiert und dann diese Datei in IDLE erstellt, genannt openurl.py.

#!/usr/bin/env python

import webbrowser

webbrowser.open('http://eample.com')

Ich habe dann chmod +x openurl.pyin das Terminal eingegeben, um die .py-Datei ausführbar zu machen. Wenn ich in ./openurl.pydas Terminal eingebe, funktioniert das Skript.

Anschließend klickte ich mithilfe des Kickoff-Anwendungsstarters auf „Systemeinstellungen > Aufgabenplaner > Neue Aufgabe“. Anschließend suchte ich nach der Datei openurl.py und wählte aus, wann sie ausgeführt werden sollte.

Wenn ich crontab -edas ins Terminal eingebe, wird folgendes angezeigt:

#openurl
21 21 * * *     /home/craig/openurl.py


# File generated by KCron the Thursday 29 Jan 2015 21:20.

Und dann warte ich und nichts passiert. Was mache ich falsch?

Antwort1

Ich denke, Ihre Cron-Konfiguration ist korrekt. Ich bin mit der Python-Funktion webbrower.open() nicht ganz vertraut, aber ich gehe davon aus, dass Sie erwarten, dass das Python-Skript Ihre Seite in einem sichtbaren Browserfenster öffnet.

Ich denke, was hier passiert, ist, dass das Skript funktioniert, wenn Sie es von der Befehlszeile aus aufrufen, weil es in Ihrer Grafiksitzung ausgeführt wird. Wenn es von Cron aus aufgerufen wird, wird es in einer neuen Sitzung ohne die Hooks in Ihre aktuelle Grafikumgebung ausgeführt, sodass es den Browser nirgends starten kann. Sie können überprüfen, ob das Skript ausgeführt wird, indem Sie es eine Datei mit dem aktuellen Zeitstempel erstellen lassen oder den aktuellen Zeitstempel irgendwo in ein Protokoll schreiben lassen.

Wenn Ihr Hauptziel darin besteht, die Seite einmal täglich zu aktualisieren, können Sie hierfür ein Browser-Plug-In verwenden. Andernfalls müssen Sie das Umgebungsproblem lösen.

Antwort2

Das Problem besteht darin, dass Cron nichts von Ihrer Anmeldesitzung weiß.

Wenn das Skript von der Systemkonsole ( ctrl-alt-f1) aus nicht funktioniert, funktioniert es auf jeden Fall von cron aus.

Wenn Sie GUI-Aufgaben automatisieren möchten, ist es wahrscheinlich am besten, einen GUI-basierten Dscheduler anstelle von Cron zu verwenden.

Antwort3

Wie Andrew sagte, könnte Ihr Job scheitern, weil er eineX-Sitzung, da Sie versuchen, einen Webbrowser zu öffnen. Sie sollten export DISPLAY=:0;nach dem Zeitplan in Ihrem Cronjob platzieren, wie in

21 21 * * * export DISPLAY=:0; /home/craig/openurl.py

Wenn dies nicht funktioniert, können Sie versuchen, es :0durch die Ausgabe echo $DISPLAYin einem grafischen Terminal zu ersetzen.

verwandte Informationen