Wie führe ich regelmäßig einen Befehl mit sehr kurzen Intervallen aus und erhalte die Rückgabe?


12

Ich muss einen bestimmten Befehl in einem Intervall von ca. 5 Sekunden aufrufen. Wie würde ich einen Daemon / Prozess einrichten, der im Hintergrund läuft, oder so ähnlich? Ich habe mir Cronjobs angesehen, aber das Mindestintervall scheint 1 Minute zu betragen. Jeder Rat wird geschätzt;)

Fedora ist das System.

EDIT der befehl wäre ein bashscript, also würde "watch" es meiner meinung nach nicht tun.

Antworten:


10
(
  while true
  do
    your-command-here
    sleep 5
  done
) &
disown

was ist verleugnet? was ist, wenn ich ohne renne?
Hans

@Marcel disownentfernt den letzten Job aus der Shell-Job-Tabelle, wodurch er wie ein Daemon aussieht, wie Sie es gefragt haben. Es ist kein echter Daemon, da es immer noch mit dem Terminal verbunden ist und sich in derselben Prozessgruppe befindet, aber nach dem Schließen der Shell weiter ausgeführt wird.
Juliano

okay toll, das würde funktionieren: D Nur aus Neugier, wie würde ich einen Daemon "machen"?
Hans

@Marcel Die einfache Möglichkeit besteht darin, daemon (3) aus C oder einer anderen Sprache mit Bibliothekszugriff aufzurufen (nicht aus einem Shell-Skript). Das ist der harte Weg .
Juliano

14

Warum denkst du, wird 'Uhr' nicht funktionieren?

$ cat periodic.sh
#!/bin/bash
echo $(date)
$ chmod +x periodic.sh

$ watch -n 5 ./periodic.sh

was ist, wenn ich mich auslogge? Das Skript sollte weiterhin ausgeführt werden.
Hans

Es wird angehalten, aber Sie können nohup watch -n 5 ./periodic.sh > periodic.log &die Ausgabe verwenden und speichern.
Naufraghi

Verwenden Sie für Piping die
Option

2

Vielleicht mit nohup? Es ist so konzipiert, dass ein Job ausgeführt wird, nachdem die Shell geschlossen wurde.

Sie können auch Bildschirme verwenden.


0

Der watchBefehl ist in Ihrem Fall angemessen. Ich würde einen Terminal-Multiplexer (z. B. tmux, screen usw.) verwenden und dann den Befehl mit ausführen

watch -n 5 ./script.sh

In diesem Fall würde das Skript auch dann ausgeführt, wenn Sie die Terminal- oder SSH-Verbindung zum Computer beenden.

Die einzige Einschränkung dieses Ansatzes besteht darin, dass das Skript nur dann alle 5 Sekunden ausgeführt wird, wenn die Ausführung innerhalb dieses Zeitintervalls abgeschlossen wurde.


watchErklären Sie bitte, warum Ihre Antwort diese Einschränkung überwindet, oder an welchem ​​Punkt Ihrer Meinung nach das OP watchfür die Aufgabe nicht geeignet war, da das OP ausdrücklich darauf hingewiesen hat, dass es dies nicht tun würde .
AdminBee
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.