Ich weiß, dass Sie dies verwenden können, um einen Prozess im Hintergrund zu starten, ohne die Benachrichtigung zu erhalten, wenn der Prozess in den Hintergrund gestellt wird und wenn dies folgendermaßen geschieht:
(Befehl &) &> / dev / null
Dadurch wird jedoch die Option zum Abfangen entfernt, wenn der Prozess abgeschlossen ist ( trap child_done CHLD
).
Wie kann ich beides haben?
Die Umleitung der Befehlsausgabe scheint irrelevant zu sein, da die Benachrichtigung von der Shell gesendet wird, wenn a Job asynchron gestartet wird. Genauer gesagt handelt es sich um eine Shell-Funktion (Funktion), die sich auf die Jobsteuerung bezieht .
Hier ein Zitat aus dem "Bash Reference Manual", Kapitel "Job Control", Abschnitt eins.
Beachten Sie, dass ein Shell-Skript diese Benachrichtigung nicht anzeigt.
Eigentlich
Zsh
Die Zsh-Dokumentation enthält ähnliche Hinweise zu diesen Benachrichtigungen, siehe
man 1 zshmisc
Abschnitt "JOBS". Diese Benachrichtigungen werden nicht angezeigt, wenn die Jobsteuerung deaktiviert ist.Bash
Es scheint, dass Bash immer zB anzeigt
[1] 25647
. Die "Endbenachrichtigung" wird zB[1]+ Done true
nicht angezeigt, wenn die Jobsteuerung deaktiviert ist.Jobsteuerung deaktiviert
Fazit
Ich weiß nicht, ob es gut ist, die Jobsteuerung zu deaktivieren , um die Benachrichtigungen auszublenden.
Ressourcen
man 1 zshmisc
, Abschnitt JOBS.man 1 zshoptions
.quelle
Sie können
zsh
als nicht interaktive Shell aufrufen , um Jobbenachrichtigungen zu deaktivieren.quelle
Siehe folgendes Beispiel:
Das funktioniert gut. Keine Notwendigkeit
( )
: Das macht eine nicht benötigte Unterschale.{ }
sind nur Gruppierungsbefehle.quelle
[2] 49591
und[2] + 49591 exit 1 find /usr
wenn es keines von diesen drucken soll!Dies ist eine alte Frage, aber eine mögliche Antwort (in Bash, nicht mit zsh getestet) ist die Verwendung der Jobsteuerung in der Subshell:
(command & wait)
Hinweis: bash unterdrückt die Start- / End-Hintergrundjobnachrichten in der Subshell, und es ist keine Umleitung erforderlich.
quelle
(sleep 5 & wait)
verzögert 5 Sekunden.