Ich suche nach meinem Bash, um zu piepen, wenn der Befehl, den ich ausführe, mehr braucht als eine bestimmte Wandzeit (sagen wir 1 Minute).
wenn es weiterhin alle paar Minuten piepst, bis ich eindringe oder etwas .. das ist groß.
Irgendwelche cleveren Ideen?
Ich kann die Bildschirmüberwachung als letzten Ausweg verwenden. (Ich bin auf Cygwin, aber das sollte nichts ausmachen).
Lassen Sie mich klarstellen:
%Vor%Ein bescheidener Vorschlag: Wenn Sie einen Befehl haben, von dem Sie wissen, dass er eine Weile dauern wird, folgen Sie einfach dem Befehl durch ein Semikolon, dann piepen Sie.
%Vor%Es gibt Befehle in Linux, die für Sie piepen werden. Sieh dir den Quellcode für den Signalton an, der mit Ubuntu (und wahrscheinlich anderen Distributionen) verfügbar ist, oder schaue dir Ссылка für einen anderen an Quelle (es ist der gleiche Code, glaube ich).
Es erlaubt Ihnen, Frequenz, Länge und Wiederholungen (unter anderem) mit Leichtigkeit zu steuern.
Damit es funktioniert, benötigen Sie ein Skript, das Ihr tatsächliches worker -Programm im Hintergrund startet und dann in eine "sleep 60"
-Schleife geht, die bis zum Ende piepst.
Das folgende Skript sollte ein guter Anfang sein. Sie führen es mit etwas wie:
%Vor% und es läuft die sleep 3600
im Hintergrund und piept jede Minute bis zum Ende.
So funktioniert es. Es führt die Argumente als Hintergrundprozess aus und speichert die Prozess-ID. Dann wird es alle paar Sekunden wiederholt, um zu prüfen, wann sich die Minute ändert und piepst, wenn dies der Fall ist (so kann der erste Piepton hier bis zu einer Minute dauern).
Der Austritt aus der Schleife geschieht, wenn der Prozess aus der Ausgabe von ps
verschwindet.
Sie können sogar Beeper Sleep 3600 & amp; das ganze in den Hintergrund zu stellen. Um den Signalton zu stoppen, müssen Sie entweder den Signaltonvorgang beenden (wenn Sie möchten, dass die Arbeit ohne Signaltöne fortgesetzt wird) oder den Arbeitsprozess selbst beenden (wodurch sowohl die Arbeit als auch der Signalton unterbrochen werden).
piepst für mich.
$!
gibt die PID des letzten Prozesses zurück, der im Hintergrund in bash ausgeführt wurde, damit Sie darauf schlafen und überprüfen können, ob es noch läuft.
Um klarer zu sein, erfassen Sie die PID mit $! und schlafe in einer Endlosschleife und überprüfe, ob Pid oben noch am Leben ist.
Nachdem Sie (hoffentlich) verstanden haben, was Sie wollen, hier ist der Code:
%Vor%Ich mag die Antwort von Pax. Schauen Sie sich an, was Piepsen können:
%Vor%Verwendung: Piepton [-f Freq] [-l Länge] [-r Wiederholungen] [-d Verzögerung] [-D Verzögerung] [-s] [-c] [-e Gerät]
piep [Optionen ...] [-n] [--neu] [Optionen ...] ... piep [-h] [--help] Piepton [-v] [-V] [--Version]
Sie könnten also die Signaltöne oszillieren lassen (lauter, länger oder beides), da das Programm länger als erwartet läuft.
Wenn Sie daran arbeiten, können Sie das Skript MUSAC-Versionen der beliebtesten Hits der 80er-Jahre abspielen lassen, was sicherlich jemanden zum Terminal locken wird, und zwar aus einem anderen Grund, als dass es aufhört.
Ich weiß nicht, ob es auf Bash funktioniert, aber mit vielen Shells etwas wie
%Vor%(Strg-g) piept nach erfolgreicher Ausführung des Befehls. Dies ist oft nützlich, wenn Sie einen lang andauernden Befehl ausführen und dann in einem anderen Fenster arbeiten möchten, aber benachrichtigt werden, wenn das erste beendet ist. (Ich bin unklar, ob das Ihr Ziel ist oder nicht.)
Sie fragen hier zwei völlig verschiedene Dinge. Zuerst fragen Sie, was zu tun ist, um nach einer Minute Signaltöne zu erhalten, danach werden Sie aufgefordert, Signaltöne zu erhalten, nachdem der Befehl beendet ist. Dies sind zwei Dinge, die ganz anders angegangen werden.
%Vor%Diese Funktion führt einen Befehl aus und piept ein Mal, sobald der Befehl abgeschlossen ist, während sichergestellt wird, dass der Beendigungscode des Befehls der Beendigungscode der Funktion ist.
%Vor% Diese Funktion piepst einmal nach einer bestimmten Zeit, es sei denn, der Befehl wurde vor dieser Zeit abgeschlossen (hier 60
Sekunden, eine Minute).
Dies ist eine einfache Anpassung der früheren Funktion, die jede Minute piepst, solange Ihr Befehl noch aktiv ist.
%Vor%Und schließlich eine Funktion, die jede Minute piepst, aber erst nachdem der Befehl beendet wurde. Hält piepst, bis Sie eine Taste drücken, um es zu stoppen. Dann kehrt die Funktion mit dem Exit-Code Ihres Befehls zurück.
Ich denke, das deckt alle Grundlagen ab, die Sie mit Ihrer Frage haben könnten.
Benutze (und kombiniere) sie wie folgt:
%Vor%