Befehl automatisch ausführen, wenn gewisse Zeit keine Eingabe getätigt wurde?

  • Hallo,

    kennt jemand eine einfache Möglichkeit, einen Befehl ausführen zu lassen, wenn beispielsweise 1 Minute lang keine Eingaben (Tastatur) stattfanden?

    Zudem soll der ausgeführte Befehl abgebrochen werden, wenn plötzlich eine Eingabe erfolgt.

    Danke
    Gruss
    matt

  • Befehl automatisch ausführen, wenn gewisse Zeit keine Eingabe getätigt wurde?? Schau mal ob du hier fündig wirst!

  • Hallo Matt,

    ja, ich kenne eine solche Möglichkeit. Aber es wäre sinnvoll, wenn Du Deine Idee etwas deutlicher vermitteln könntest.

    Du kannst jeden Befehl automatisch ausführen lassen, wenn festgelegte Bedingungen eingetreten sind - und Du kannst Befehle (so es sich um Linux-Kommandos oder andere extern gestartete Programme handelt) abbrechen, wenn festgelegte Bedingungen eingetreten sind.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Also hier die Details:

    Ich verwende einen Raspberry Pi B mit angeschlossener Cam als Kamera. Das heisst, an dem S-Video-Ausgang ist ein Bildschirm angeschlossen.
    Damit der Raspberry das Kamerabild nach dem Bootvorgang direkt auf den Ausgang gibt habe ich in der "rc.local" die Zeile eingetragen:

    raspivid -fps 31 -w -f -t 0

    Das funktioniert wunderbar. Allerdings kann ich raspivid nicht mehr mit der am RPi angeschlossenen Tastatur beenden.
    Solange der RPi in einem Netzwerk eingebunden ist, kann ich das mittels SSH machen. Aber er ist eben nicht immer in einem Netzwerk. In diesem Fall kann ich nicht mehr auf das Terminal zugreifen.

    Deswegen die Frage, ob es möglich ist, dass raspivid nach dem Bootvorgang automatisch gestartet wird, wenn z.B. 1 Minute keine Eingabe mit der Tastatur erfolgte und wieder beendet wird, wenn eine Taste der Tastatur betätigt wird.

  • Hallo Matt,

    na, so kompliziert brauchst Du gar nicht zu denken.

    Die allereinfachste Möglichkeit ist diese:

    Code
    raspivid -fps 31 -w -f -t 0 &

    Durch das Ergänzen mit & wird rc.local weiter bgearbeitet - und optimalerweise beendet. Danach steht Dir das gesamte Betriebssystem inkl. Bediening der Tastatur offen.

    Ab hier hast Du zwei Möglichkeiten:
    1. Du startest nach raspivid analog ein zweites Programm in der rc.local, z.B.

    Code
    /home/pi/tools/key_event_to_close_raspivid

    Dieses Programm musst Du selber erstellen. Das Programm macht nichts anderes als eine Minute zu laufen.
    Erfolgt kein Tastendruck, wird dieses Programm beendet - raspivid läuft wie gewollt weiter.
    Erfolgt ein Tastendruck, wird über

    Code
    pidof raspivid


    die Prozess-ID von raspivid ermittelt und dann über

    Code
    kill ...

    wird raspivid beendet.


    2. Du arbeitest ohne weiteres Programm. Du öffnest - da Dir der gesamte Raspberry Pi zur Verfügung steht - das Terminal, gibst ein

    Code
    top


    - suchst Dir die Zeile, in der raspivid steht,
    - merkst Dir die Prozess-ID <pid>,
    - drückst q zum Beenden von top,
    - gibst ein

    Code
    kill <pid>


    - und schon hast Du den Raspberry Pi im Einschaltzustand.


    Somit ist Deine Idee problemlos zu realisieren.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (4. Februar 2015 um 10:42)

  • Hallo Andreas,

    danke für deine Hilfe.
    Hab das jetzt eine recht einfache Methode angewendet. Allerdings fehlt das automatische Starten von Raspivid nach einer bestimmten Zeit ohne Tastatureingabe. Raspivid muss man dann eben manuell wieder starten...


    Mit den folgenden drei Zeilen in der "rc.local" funktioniert das:

    Code
    raspivid -fps 31 -w -f -t 0 &
    read VAR
    killall raspivid

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!