+/- nachdem ein Job im Hintergrund erledigt ist

21

Führen Sie einen Job im Hintergrund aus

$ command &

Wenn dies erledigt ist, wird das Terminal gedruckt

[n]+    command

oder

[n]-    command

Manchmal ist es ein Plus und manchmal ein Minus [n].

Was bedeutet Plus / Minus?

Lee
quelle

Antworten:

19

Sie sollen zwischen aktueller und vorheriger Tätigkeit unterscheiden; Der letzte Job und der vorletzte Job für mehr als zwei Jobs, mit +dem letzten und -dem vorletzten.

Von man bash:

Der vorherige Job kann mit referenziert werden %-. Wenn es nur einen Job gibt %+und %-beide verwendet werden können, um auf diesen Job zu verweisen. Bei der Ausgabe von Jobs (z. B. der Ausgabe des Befehls jobs) ist der aktuelle Job immer mit einem +und der vorherige Job mit einem gekennzeichnet -.

Beispiel:

$ sleep 5 &
[1] 21795

$ sleep 5 &
[2] 21796

$ sleep 5 &
[3] 21797

$ sleep 5 &
[4] 21798

$ jobs
[1]   Running                 sleep 5 &
[2]   Running                 sleep 5 &
[3]-  Running                 sleep 5 &
[4]+  Running                 sleep 5 &

$ 
[1]   Done                    sleep 5
[2]   Done                    sleep 5
[3]-  Done                    sleep 5
[4]+  Done                    sleep 5
heemayl
quelle
2

Ich vermute, Sie beziehen sich auf, wenn Sie Jobs über prüfen $jobs. Allerdings, wie Sie wahrscheinlich bereits wissen, nbezeichnet der Job #. Das [n] +kennzeichnet den letzten aufgerufenen Job. [n] -bezeichnet den vorletzten aufgerufenen Job.

Beispielsweise:

chris@chris-VirtualBox:~$ sleep 30 &
[1] 904
chris@chris-VirtualBox:~$ sleep 50 &
[2] 972
chris@chris-VirtualBox:~$ jobs
[1]-  Running                 sleep 30 &
[2]+  Running                 sleep 50 &

Deshalb ist in diesem Fall unser sleep 50 &letztes [2]+und sleep 30 &vorletztes:[1]-

Klamz
quelle
Ihre Beschreibung der Situation ist unklar und das System sagt nicht voraus, welcher Job zuerst enden wird.
Julie Pelletier
Ich verstehe, was Sie meinen, ich werde den Hauptpunkt betonen
Klamz