Ich spiele mit notify-send
und cron
(auf einer Arch-Maschine) herum und kann keinen Weg finden, sie zu kombinieren:
Ich habe die hier und hier gegebene Lösung ausprobiert , aber keine hat funktioniert. Wie kann ich sie verwenden?
EDIT: Ich habe das DISPLAY in der Crontab eingestellt und es hat immer noch nicht funktioniert. Ich habe das gleiche in Ubuntu versucht und dort funktionieren die Dinge gut. Hier ist meine Cron-Linie:
*/1 * * * * DISPLAY=:0.0 /usr/bin/notify-send "hellp" || echo "er" > .er
cron
notifications
Yotam
quelle
quelle
DISPLAY
?/var/mail/yotam
oder/var/spool/mail/yotam
)? Möglicherweise müssen SieXAUTHORITY
zusätzlich einstellenDISPLAY
, um diese Antwort zu sehen ./var/log/cron
? Wenn es angezeigt wird, prüfen Sie, ob Sie eine/etc/pam.d/crond
Datei unter Ubuntu haben. Wenn ja, stehlen Sie es, sonst sehen Sie, dass der Cron-Job wegen Pam nicht ausgeführt wird? Thread im openSUSE-Forum.Antworten:
Das einzige, was ich vorschlagen kann, ist, eine Named Pipe zu erstellen und Cron in die Pipe schreiben zu lassen und ein kleines Skript vom Sitzungsmanager starten zu lassen, das aus der Pipe liest und notify-send aufruft:
Lassen Sie dann in der Crontab das Programm schreiben
/tmp/.cron2notify.s
.Ich habe dies noch nicht getestet, sollte Ihnen aber einen Ausgangspunkt geben, von dem aus Sie arbeiten können.
quelle
Ich denke,
notify-send
dasD-Bus
hängt von den meisten Systemen ab, und die häufigste Methode zur Kontaktaufnahme mit dbus ist die$DBUS_SESSION_BUS_ADDRESS
Variable. Eine harte Codierungcrontab
ist jedoch wahrscheinlich nicht sehr praktikabel, da sich die Busadresse jedes Mal ändert, wenn Sie eine neue Instanz von dbus starten. Dies geschieht normalerweise, wenn Sie sich anmelden oder neu starten. Die Lösung von Arcege klingt nach einer guten Problemumgehung.quelle
Ich würde wirklich empfehlen, ein Wrapper-Skript zu verwenden. Um den Cron-Aufruf von notify-send zu emulieren, sshed ich mit "ssh localhost" in mein eigenes System. Das Aufrufen von '/ usr / bin / notify-send "foo"' hat nicht funktioniert, und ich hatte kein Glück, als ich DISPLAY =: 0.0 zur Zeile hinzufügte. Folgendes hat funktioniert:
Das ist sehr chaotisch, um es gelinde auszudrücken. Das ist sauberer.
Und in cron:
Bitte beachten Sie, dass das "Zimt" -Bit vorhanden ist, da dies der Fenstermanager ist, den ich verwende. Sie müssen es wahrscheinlich durch Nautilus oder was auch immer Sie als Fenstermanager haben ersetzen. Ich habe auch einen Benutzer als erstes Argument angegeben, da es später modularer wird, wenn Sie möchten, dass dies funktioniert, unabhängig davon, wer angemeldet ist.
quelle
Ich habe versucht, die Antwort von Arcege zu verwenden, konnte sie jedoch nicht zum Laufen bringen: Die while-Schleife wird beendet, nachdem die erste Zeile in die Named Pipe geschrieben wurde. Was für mich funktioniert hat, war ein ähnliches Skript mit einer Endlosschleife, in der ich von cron gesendete Signale abfange und dann notify-send aufrufe. Das folgende ist das Programm "Benachrichtigen-Weiterleiten":
und mein crontab sieht aus wie
quelle
Alternative: Sie könnten mit all dem ringen, was Sie tun, oder einfach die xmessage-Option verwenden:
quelle