Der Ort, an dem ich arbeite, verfügt über Befehle, deren Ausführung viel Zeit in Anspruch nimmt.
Gibt es einen Befehl / ein Dienstprogramm, mit dem ich benachrichtigt werden kann, wenn die Befehlsausführung beendet ist? Es könnte sich um ein Popup-Fenster oder ein kleines Geräusch handeln.
command-line
unix
process
notifications
Utkarsh Sinha
quelle
quelle
fg;say "Job finished"
das funktionieren würde. Aber ... gibt es eine Möglichkeit, wie es weiter automatisiert werden kann - z. B. das Klingeln oder das Benachrichtigen nach Abschluss eines Auftrags, der mehr als eine Minute dauert? Gibt es eine Shell-Variable, z. B. in Bash, die die verstrichene Zeit des letzten Befehls angibt?Antworten:
Wenn Sie dies wissen, bevor Sie den Befehl ausführen, können Sie ihn im Allgemeinen mit folgendem Befehl starten:
Dies wird ausgeführt,
command-after
nachdem der vorherige Befehl beendet wurde (unabhängig von seinem Beendigungscode). Das&
wird es im Hintergrund starten.Wenn Sie sich für einen erfolgreichen oder fehlgeschlagenen Exit interessieren, verwenden Sie:
Wenn der Befehl bereits gestartet wurde, können Sie ihn mit der Jobsteuerung
fg
anhalten und mit Ihrer Benachrichtigung in den Vordergrund zurückkehren :Nun… was Sie danach tun möchten, hängt von Ihrer Umgebung ab.
Auf jedem System können Sie die Terminalklingel "läuten" . Hängt von Ihrem genauen System ab, was wirklich funktioniert (BSD vs. GNU Linux usw.),
tput bel
sollte aber reichen. Ich konnte es momentan jedoch nicht zuverlässig testen. Suche nach "Klingel", um mehr zu erfahren.Unter Mac OS X können Sie mit AppleScript ein Finder-Dialogfeld öffnen:
Du könntest es dir etwas sagen lassen:
Oder Sie können das Benachrichtigungssystem von Mountain Lion verwenden:
In GNOME ,
zenity
kann ein GTK - Dialogfeld zeigt, von der Kommandozeile aufgerufen. Siehe auch diese Frage zum Stapelüberlauf: Anzeigen eines Meldungsfelds aus einem Bash-Skript unter Linux . Es kann über Ihren bevorzugten Paketmanager installiert werden.Einige Distributionen haben möglicherweise
xmessage
. Speziell für GTK-Umgebungen gibt esgxmessage
.In Desktop-Umgebungen wie Ubuntu und GNOME , in denen die Desktop-Benachrichtigungsspezifikation implementiert ist , gibt es ein Benachrichtigungssystem, mit dem Sie (einen Teil von ) auslösen können .
notify-send
libnotify
KDE verwendet
kdialog
zum Beispiel:quelle
(command; command-after) &
?Auf Unix-ähnlichen Systemen können Sie die akustische Glocke läuten:
quelle
tput bel
Ich habe ein einfaches Tool für MacOS X erstellt, das genau das tut. https://github.com/vikfroberg/brb
Installation
Anleitung
quelle
Um eine akustische Benachrichtigung zu erhalten, können Sie verwenden
spd-say "Some text"
. Beispiel:quelle
sudo apt-get install speech-dispatcher
. Oder verwenden Sie Alternativen askubuntu.com/questions/501910/…Ich habe gerade damit begonnen, notifu für Desktop-Benachrichtigungen von Cygwin zu verwenden. Es ist eine Befehlszeilen-Benachrichtigungs-App für Windows.
Beispiel:
quelle
Ich habe
ntfy
genau zu diesem Zweck geschrieben. Es ist plattformübergreifend und kann automatisch Benachrichtigungen senden, wenn lange laufende Befehle beendet sind.Wenn Sie Pythons haben
pip
(die meisten Linux-Distributionen und MacOS haben es), installieren Sie es wie folgt und aktivieren Sie automatische Benachrichtigungen:Überprüfen Sie es auf http://ntfy.rtfd.io
Darüber hinaus kann es auch:
quelle
Für Linux gibt es einen raffinierten Trick, um dies automatisch zu tun, ohne jedes Mal einen Befehl zur Benachrichtigung eingeben zu müssen.
Installieren Sie zuerst autokey. Auf diese Weise können Sie Aktionen für verschiedene Tastenanschläge definieren.
Definieren Sie nun eine neue Phrase in Autokey und weisen Sie den Hotkey als Alt + Enter zu. Diesen Satz hinzufügen:
Beachten Sie, dass eine neue Zeile nach der ersten Zeile wichtig ist.
Fügen Sie außerdem einen Fensterfilter hinzu. Ich benutze Guake und Terminal. Schließen Sie jedes andere Terminal ein, das Sie verwenden.
Sie sind fertig!!
Führen Sie jetzt jedes Mal, wenn Sie Benachrichtigungen für einen Befehl benötigen, die Tastenkombination Alt + Enter anstelle von Enter / Return aus.
Quelle: http://dotpad.blogspot.in/2014/12/notification-when-command-finished.html
quelle
Obwohl andere Antworten bereits die meisten Möglichkeiten erörterten, Benachrichtigungen über einen abgeschlossenen Auftrag zu erhalten, möchte ich meine zwei Cent angeben, da Sie Ihre Frage in folgendem Format gestellt haben:
Ich habe das gleiche Problem. Manchmal kann etwas 15 Minuten lang laufen.
Ich habe folgende Funktion in meiner .bashrc:
Hierbei wird die Pushover-App verwendet, um eine Benachrichtigung an mein Telefon zu senden. Auf diese Weise kann ich zum Mittagessen gehen oder an einer Besprechung teilnehmen und trotzdem über Jobs informiert werden, die ich auf meinem Computer gestartet habe, bevor ich abgereist bin.
Ich benutze es auf folgende Weise:
Wenn der Befehl einen korrekten Beendigungscode zurückgibt, wird der erste Push ausgeführt. Bei einem Fehler wird der zweite ausgeführt.
Ofc müssen Sie einen Benutzer bei Pushover erstellen und eine App registrieren, um Benachrichtigungen von https://pushover.net/ senden zu können.
hoffe das hat geholfen!
quelle
Wenn Sie csh oder tcsh als interaktive Shell verwenden, können Sie den folgenden
notify
Befehl verwenden:Sie können einen ähnlichen Effekt mit
set -b
oder erzielenset -o notify
.Dies entspricht wahrscheinlich nicht Ihren Anforderungen, da nur eine Nachricht gedruckt wird. Ich glaube nicht, dass es konfiguriert werden kann, um ein Fenster zu öffnen oder die Glocke zu läuten.
quelle
Auf Systemen mit 'awk' probieren
war der einzige, der für mich arbeitete.
quelle
\a
( trinth Antwort ).Wenn Sie verwenden
npm
dann Knoten-Anmelder bieten eine plattformübergreifende Lösung .Vorschau
quelle
Ich wünschte, ich hätte diesen Thread vor Jahren bemerkt. Meine Lösung war im Wesentlichen die gleiche wie die von slhck, aber ich habe ein Skript geschrieben. Ich benutze es die ganze Zeit. Hier posten, um es zu teilen.
Eine kleine Erklärung: Der String
"\x1b]0;$msg\a"
ist die ANSI-Escape-Sequenz, mit der die Nachricht in die Titelleiste des Fensters eingefügt wird, in dem sie ausgeführt wurde. Ich finde es manchmal ganz praktisch, zu sehen, aus welchem Fenster die Nachricht kam.quelle
Das kommt also ziemlich spät, aber ich habe damit begonnen, ein System zu verwenden: Ich habe ein Bash-Skript, das jeden Befehl ausführt, der danach an es übergeben wird
http://somesh.io/2017/02/19/get-notified-when-long-commands-are-done-executing-on-ubuntu/
und dann stelle ich einfach n voran
quelle
Eine andere Möglichkeit ist
alert
, Works on Linux zu verwenden.Es gibt eine Benachrichtigung wie im Bild. Alarmbenachrichtigung
quelle
Ich habe eine App erstellt, die eine Benachrichtigung an Ihr Android-Telefon sendet, wenn ein Vorgang endet, sodass Sie nicht an Ihren Computer gebunden sein müssen.
Installieren Sie und fügen Sie dann
;notifier.sh
am Ende Ihres Befehls hinzu.Wenn Ihr Befehl beispielsweise war
make install
, würden Sie Ihren Befehl ausführen:make install; notifier.sh
https://notifier.sh
https://play.google.com/store/apps/details?id=sh.notifier
quelle