Skript mit 'read dummy' vom cron starten
Hallo, ein Skript mit einigen "read dummy" (für interaktive Benutzung) soll jeden Tag einmal vom cron gestartet werden. Der cron bleibt aber am "read dummy" stehen, klar. Einen Tastendruck wird er nie bekommen. Wie frage ich vor "read dummy" geschickt und einfach ab, ob das Skript vom cron gestartet worden ist? In der Theorie ist mir eine LÖsung klar: Prozess-ID des cron ausfindig machen, dann den Eltern-Prozess des Skript damit vergleichen. Geht es auch einfacher? thx Ekkard
Hi Ekkard, Ekkard Gerlach schrieb:
Wie frage ich vor "read dummy" geschickt und einfach ab, ob das Skript vom cron gestartet worden ist?
In der Theorie ist mir eine LÖsung klar: Prozess-ID des cron ausfindig machen, dann den Eltern-Prozess des Skript damit vergleichen. Geht es auch einfacher?
wenn du keinen Bock auf viel gescripte hast, schreib in die crontab eine Variablenzuweisung oben rein und teste einfach auf diese Variable in deinem Script oder ruf dein script mit command-line parameter (hier böte sich -q an) auf, deine theor. Lösung ist allerdings universeller. MfG. Falk
Hi, Ekkard Gerlach wrote:
ein Skript mit einigen "read dummy" (für interaktive Benutzung) soll jeden Tag einmal vom cron gestartet werden. Der cron bleibt aber am "read dummy" stehen, klar. Einen Tastendruck wird er nie bekommen.
Wie frage ich vor "read dummy" geschickt und einfach ab, ob das Skript vom cron gestartet worden ist?
In der Theorie ist mir eine LÖsung klar: Prozess-ID des cron ausfindig machen, dann den Eltern-Prozess des Skript damit vergleichen. Geht es auch einfacher?
Vielleicht reicht ein solchen cron Aufruf: touch /tmp/laeuft && script && rm /tmp/laeuft und dann if [ -e /tmp/laeuft ] .. Das mit dem PID Vergleich ist aber bestimmt besser. -- - maik
*** Maik Holtkamp (s-y-l@gmx.net) schrieb in suse-linux heute:
[...] Vielleicht reicht ein solchen cron Aufruf:
touch /tmp/laeuft && script && rm /tmp/laeuft
und dann
if [ -e /tmp/laeuft ] ..
Jo. "Es funktioniert ja..." :(. Wenn er das selber Script interaktiv laufen lassen möchte, während es gerade auch per cron gestartet läuft, ist er angesch*. *Ganz* schlechte Lösung!
Das mit dem PID Vergleich ist aber bestimmt besser.
Besser? Trockenes "ja". MG Henning Hucke -- Intel Outside ;-)
*** Peter Wiersig (wiersig-ml@dns.glamus.de) schrieb in suse-linux heute:
[...] Versuch mal stdin umzuleiten:
* * * * * /bin/a_script < /dev/null
Laut man -P 'less +"13/^ {7}read"' bash ist das grundsätzlich auch eine gute Idee. Aber vieleicht will man, abhängig davon, ob man nun gerade interaktiv ist oder nicht, bestimmte Sachen tun oder lassen... IMHO ist es am günstigsten, festzustellen, ob man gerade interaktiv ist oder nicht oder es dem Script explizit zu sagen. Deshalb fand ich die Sache mit dem Schalter noch mit als beste Idee. Ekkard muß entscheiden, welches Verhalten für seine Anwendung günstiger ist. MfG Henning Hucke -- Die "letzten Worte", die auf dem Grabstein der menschlichen Hochkultur eingraviert sein werden: "Du bist zu pessimistisch..."
*** Ekkard Gerlach (suse@aiai.de) schrieb in suse-linux heute:
[...] Wie frage ich vor "read dummy" geschickt und einfach ab, ob das Skript vom cron gestartet worden ist?
--- schnipp #!/bin/bash if tty -s; then echo -n "Please enter something: " read dummy echo "You entered '$dummy'." else echo "I'm not running interactively" fi --- schnapp MfG Henning Hucke -- Stellt euch vor, deutsche wuerden alle Arbeitsplaetze annehmen, die deutsche Unternehmen in Ausland aufbauen, nachdem sie in Deutschland abgebaut worden sind... Ein Land ohne Volk. (c) Hucke
Hallo, On Tue, 20 May 2003, Ekkard Gerlach wrote:
ein Skript mit einigen "read dummy" (für interaktive Benutzung) soll jeden Tag einmal vom cron gestartet werden. Der cron bleibt aber am "read dummy" stehen, klar. Einen Tastendruck wird er nie bekommen.
Wie frage ich vor "read dummy" geschickt und einfach ab, ob das Skript vom cron gestartet worden ist?
Verwende in der crontab mal "yes | script" ;) -dnh -- Zu schön um nicht gesiggt zu werden ;-) [Rainer Behrendt in dag°]
participants (6)
-
David Haller
-
Ekkard Gerlach
-
Falk Sauer
-
Henning Hucke
-
Maik Holtkamp
-
Peter Wiersig