Beim Lesen der Dokumentation [1] erscheint der Begriff "jobspec" einige Male.bash: Was ist ein Jobspec?
Was ist ein jobspec?
[1] https://www.gnu.org/software/bash/manual/html_node/Job-Control-Builtins.html
Beim Lesen der Dokumentation [1] erscheint der Begriff "jobspec" einige Male.bash: Was ist ein Jobspec?
Was ist ein jobspec?
[1] https://www.gnu.org/software/bash/manual/html_node/Job-Control-Builtins.html
The job control section of Greg's Bash Guide beschreibt dies wie folgt:
Eine Auftragsspezifikation oder "jobspec" ist ein Weg, um die Prozesse zu verweisen, die einen Job machen. Ein jobspec kann sein:
%n
n
auf Auftragsnummer zu verweisen.%str
bezieht sich auf einen Job, der mit einem Befehl gestartet wurde, der mitstr
beginnt. Es ist ein Fehler, wenn mehr als ein solcher Job vorhanden ist.%?str
verweist auf einen Job, der mit einem Befehl gestartet wurde, derstr
enthält. Es ist ein Fehler, wenn mehr als ein solcher Job vorhanden ist.%%
oder%+
beziehen sich auf den aktuellen Job: Der zuletzt im Hintergrund gestartete oder vom Vordergrund ausgehende. fg und bg werden für diesen Job ausgeführt, wenn keine Jobspezifikation angegeben wird.%-
für den vorherigen Job (der Job war%%
vor dem aktuellen).
Wenn Sie nicht selbst etwas geschrieben haben, sollte es zugeschrieben werden - nicht nur mit einem Link, sondern mit Prosa machen Sie klar, welcher Inhalt ist und ist kein originaler Teil Ihrer Antwort. –
@Charles Duffy Verstanden. Ich werde entsprechend bearbeiten. Vielen Dank. –
Ich bin mir nicht sicher, ob ich den Bash Guide "die Dokumentation" nennen würde, obwohl ich manchmal denke, dass es so sein sollte. =) –
Ein Konzept, das nichts mit der Programmierung zu tun hat [und für die gehören also Fragen über Super-User], da es Teil der Funktionalität ist, die nicht in nicht-interaktiver Verwendung aktiviert ist. :) –
@CharlesDuffy Ob dies auf Superuser gehört, ist eine offene Frage. Die Jobsteuerung, die für ein Skript verfügbar ist, _are_ ist verfügbar (z. B. können Sie 'wait% 1' ausführen). Ein Beispiel für die Verwendung: ein Skript, das mehrere tausend Dateien videotranscodieren wird. Das Skript wird auf einem 8-Kern-Computer ausgeführt. Das Skript verwendet die Jobsteuerung, um 8 Arbeitsprozesse zu verwalten, und startet eine neue, wenn eine alte abgeschlossen ist. Normalerweise mache ich so etwas in Perl, aber es könnte in bash gemacht werden. –
@CraigEstey, Sie können 'wait% 1' nur tun, wenn' [[$ - = * m *]] '(" monitor mode ") standardmäßig in nicht interaktiven Shells falsch ist (und mit anderen nützlichen Funktionen nicht kompatibel ist, wie 'shopt -s lastpipe'). Andernfalls müssen Sie auf die PID warten, um den Exit-Status zu erfassen. Dies ist der übliche Weg für Skripte wie das oben beschriebene ('start_encoder & encoder_pids + = ($!); ...; für pid in '$ {encoder_pids [@]} "; warten Sie" $ pid "|| echo" Encoder fehlgeschlagen "; fertig" oder so). –