
Ich habe Cygwin mit cygrunsrv
und Cron installiert, damit ich die Vorteile der Linux-ähnlichen Planung unter Windows nutzen kann. Ich möchteBenachrichtigungvon einem Cron-Job.
Ich habe cron als Dienst mit dem folgenden Befehl installiert:
cygrunsrv -I cron -d "CYGWIN cron" -u cron_srv -p /usr/sbin/cron -a -n
Alles ist ok, der Dienst läuft und meldet keine Fehler. Außerdem habe ich diesem cron_srv
Benutzer alle nötigen Rechte gegeben, damit er Benutzerkontexte wechseln kann etc.
crontab -l
gibt diese beiden Jobs, die ich definiert habe:
HOME=/home/<username>
PATH=/usr/local/bin:/usr/bin:/bin:/cygdrive/c/utils/notifu:$PATH
# testing
* * * * * echo "Cron test at $(date +\%k:\%M)" >> ~/testcron.txt 2>&1
* * * * * notifu /p "Balloon Title" /t warn /w /m "event description"
cronevents
ergibt folgendes:
2014/03/03 13:08:01 [cron_srv] /usr/sbin/cron: PID 2592: (branchito) CMD (echo "Cron test at $(date +%k:%M)" >> ~/testcron.txt 2>&1)
2014/03/03 13:08:01 [cron_srv] /usr/sbin/cron: PID 4076: (branchito) CMD (notifu /p "Balloon Title" /t warn /w /m "event description")
..also keine Fehler. Und ich habe meine testcron.txt
Datei erstellt und korrekt mit meinem benutzerdefinierten Datumstest ausgefüllt. Aber notifu
es erscheint kein Sprechblasen-Fenster mit einer Meldung, obwohl kein Fehler gemeldet wird cronevents
, und es scheint genauso gut ausgeführt zu werden wie der Datumstestjob seines Freundes.
Ich habe meine PATH
Variable explizit festgelegt, damit sie das Programm finden kann notifu
, obwohl es im letzten angehängten enthalten ist PATH
, aber ich wollte sicher sein.
Das Interessante daran ist, dass der notifu
Befehl ohne Probleme vom Cygwin-Terminal aus ausgeführt wird, ein Ballon mit einer Meldung erscheint, aber vom Cron-Job aus nicht ausgelöst wird.
Ich habe etwas über die DISPLAY
Umgebungsvariable gelesen. Könnte das vielleicht ein Problem sein? Wenn ja, wie würde ich ihren Wert in der Crontab-Datei festlegen? Unter Linux ist es wie DISPLAY=:0.0
, aber ich weiß nicht, wie ich diesen Wert unter Windows festlegen kann.
BEARBEITEN
Bei weiteren Recherchen wurde mir klar, dass das Problem darin liegt, dass die Dienste ab Windows Vista nur und nur auf session 0 isolation
Ebene agieren und daher aus Sicherheitsgründen nicht mit dem Desktop interagieren können. Dies ist zwar möglich, jedoch nur über eine spezielle, sichere Desktopinstanz.
Ich möchte, dass mir jemand erklärt, wie es in diesem Fall (meinem Fall) möglich wäre, dass dieser Dienst Nachrichten an diese notifu
App senden kann, nur um einen Popup-Sprech mit dieser Nachricht anzuzeigen, und ob das möglich wäre, ohne den Dienst selbst zu ändern, da ich nicht der Autor davon bin. Gibt es also eine Möglichkeit, diesem Dienst einige logon as
Berechtigungen zu erteilen, damit er im Benutzerbereich agiert?