Ich versuche mit cron als normaler user eine Text-Ausgabe auf der Console zu bewerkstelligen. Die Ausgabe soll jede Minute wiederholt werden.
Den cron-Job möchte ich als normaler User starten und wieder beenden können.
Dies ist letzlich nur ein Test und später folgenden Ablauf zeitgesteuert zu realisieren.
-Jede Minute soll Digitemp (Programm zur Erfassung von Temperaturen) gestartet werden.
Die Daten werden Automatisch in eine Datei gespeichert
-Ein Sript formatiert die Daten so um , dass diese für gnuplot nutzbar sind.
-gnuplot (unter x) wird aktualisiert
Leider habe ich komme ich mit cron nicht klar.
Ein mit root erstellter cronjob
*/1 * * * * /home/user1/ echo "Hallo Cron"
zeigt auf der console von user1 keinerlei Wirkung.
Was mache ich falsch?
Problem mit cron
- finupsen
- Beiträge: 1327
- Registriert: 21.04.2004 20:07:05
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dortmund
-
Kontaktdaten:
hallo,
also der befehl wird sicherlich ausgeführt, aber sicher nicht in der console eines anderen users.
Veilleicht ginge das so: echo "hallo" > /dev/pts/<nummer>
Dazu müsstest du erst ermitteln, welcher user, welche consolen benutzt ... wüsste ich
auf anhieb nicht, sorry ...
Aber warum schreibst du nicht ein script welches genau das tut was es tun soll und startest
dieses script via cron ... ?
Warum möchtest du "hallo" an einen anderen user senden ? verstehe den zusammen-
hang bzgl. temp.-messungen nicht so ganz.
also der befehl wird sicherlich ausgeführt, aber sicher nicht in der console eines anderen users.
Veilleicht ginge das so: echo "hallo" > /dev/pts/<nummer>
Dazu müsstest du erst ermitteln, welcher user, welche consolen benutzt ... wüsste ich
auf anhieb nicht, sorry ...
Aber warum schreibst du nicht ein script welches genau das tut was es tun soll und startest
dieses script via cron ... ?
Warum möchtest du "hallo" an einen anderen user senden ? verstehe den zusammen-
hang bzgl. temp.-messungen nicht so ganz.
Code: Alles auswählen
minute | stunde | tag des monats | monat | tag der woche | user (nicht home von user !) | command
In eine Konsole eines anderen Benutzers kannst du mittels "write" schreiben:
Den Zusammenhang dieses Tests zu deinem gewünschten Ergebnis kann ich allerdings auch nicht nachvollziehen
Ich würde für diese Anwendung nicht einmal den Cron heranziehen. Du willst ja, daß der User darüber befindet, wann dieses Script gestartet wird und wann nicht.
Also würde ich ein Script erstellen und deine Befehlssequenz zusammen mit einem "sleep 60" in eine Schleife packen.
Gruß
gms
Code: Alles auswählen
echo blabla | write hoppla /dev/tty1
Ich würde für diese Anwendung nicht einmal den Cron heranziehen. Du willst ja, daß der User darüber befindet, wann dieses Script gestartet wird und wann nicht.
Also würde ich ein Script erstellen und deine Befehlssequenz zusammen mit einem "sleep 60" in eine Schleife packen.
Gruß
gms
gms hat geschrieben:In eine Konsole eines anderen Benutzers kannst du mittels "write" schreiben:Den Zusammenhang dieses Tests zu deinem gewünschten Ergebnis kann ich allerdings auch nicht nachvollziehenCode: Alles auswählen
echo blabla | write hoppla /dev/tty1
Ich würde für diese Anwendung nicht einmal den Cron heranziehen. Du willst ja, daß der User darüber befindet, wann dieses Script gestartet wird und wann nicht.
Also würde ich ein Script erstellen und deine Befehlssequenz zusammen mit einem "sleep 60" in eine Schleife packen.
Gruß
gms
Hallo,
Sorry, ich habe mich vieleicht etwas unverständlich ausgedrückt.
Mein Problem ist grundsätzlich cron. Ich verstehe nicht wie ich mit cron eine Ausgabe auf der console hinbekomme.
Das hatte ich mit dem test mit "hallo cron" ausprobiert.
Erst wenn ich cron richtig behersche geht es an die eigentliche Aufgabe Digitemp zeigesteuert zu starten und die Werte in einer graphischen Ausgabe darzustellen.
Der Versuch
*/1 * * * * echo "Hallo cron" |write user2 /dev/tty2
funktioniert soweit, dass user2 nun im Minutenabstand Emails "Hallo cron" bekommt.
Das ist ein guter Anfang. Ich wollte jedoch den Text direkt auf der console sehen.
Laut doku sollte write auf das Terminal schreiben.
Noch besser wäre es "Hallo cron" im Minutentakt auf einer x-console zu sehen.
Hast Du eine Idee?
Da kommt allerdings die Fehlerbehandlung vom "cron" ins Spiel, wenn ein Cronjob Ausgaben auf stdout oder stderr liefert, werden diese Ausgaben an $MAILTO gemailt.hoppla hat geschrieben:funktioniert soweit, dass user2 nun im Minutenabstand Emails "Hallo cron" bekommt.
Ist dieser Usaer ("user2) auf auf "/dev/tty2" eingeloggt ? Möglicherweise muß dieser in dem Terminal noch "mesg y" absetzen, damit das funktioniert
Hallo gms,gms hat geschrieben:Da kommt allerdings die Fehlerbehandlung vom "cron" ins Spiel, wenn ein Cronjob Ausgaben auf stdout oder stderr liefert, werden diese Ausgaben an $MAILTO gemailt.hoppla hat geschrieben:funktioniert soweit, dass user2 nun im Minutenabstand Emails "Hallo cron" bekommt.
Ist dieser Usaer ("user2) auf auf "/dev/tty2" eingeloggt ? Möglicherweise muß dieser in dem Terminal noch "mesg y" absetzen, damit das funktioniert
besten Dank für die schnelle Info.
Der User ist auf tty2 angemeldet, mesg "y" ist aktiviert.
*/1 * * * * echo "Hallo cron" |write user2 /dev/tty2
und nun ist auch die Meldung auf der console:
Message from user2@msi2 on (none) at 18:51
Hallo cron
EOF
Die Messageinfo und das EOF sind zwar unschön aber nicht so schlimm.
Falls Du eine Idee hast wie die diese kleinen Unfeinheiten zu beseitigen sind, wäre schön.
Mein Problem mit cron ist nun aber grundsätzlich gelöst.
Nun gehts an das Script für die eigendliche Aufabe:
- Zeitgesteuert Digitemp aufrufen
- Ausgabe der Werte auf in eine Datei und auf die console
- Formatierung der Werte für gnuplot und an eine Datendatei anhängen
- Anzeige gnuplot aktualisieren.
mfg
hoppla