2016-01-27 15 views
9

Podczas czytania dokumentacji [1], termin "jobspec" pojawia się kilka razy.bash: Co to jest oferta pracy

Co to jest jobspec?

[1] https://www.gnu.org/software/bash/manual/html_node/Job-Control-Builtins.html

+2

Koncepcja, że ​​nie ma nic wspólnego z programowaniem [i jakie pytania należy zatem na superuser], ponieważ jest to część funkcjonalności, która nie jest włączona w nieinteraktywnym użytkowania. :) –

+0

@CharlesDuffy Czy jest to superuser, to pytanie otwarte. Elementy sterujące zadaniem są dostępne dla skryptu (np. Można wykonać 'wait% 1'). Przykład użycia: skrypt, który będzie transkodować wideo kilka tysięcy plików. Skrypt działa na 8 rdzeniowym komputerze. Skrypt wykorzystuje kontrolę zadań do zarządzania 8 procesami roboczymi, rozpoczynając nowy, gdy kończy się stary. Zwykle robię takie rzeczy w perlu, ale można to zrobić w bash. –

+0

@CraigEstey, możesz zrobić 'wait% 1', jeśli' [[$ - = * m *]]] ("tryb monitorowania"), który jest domyślnie fałszywy w nieinteraktywnych powłokach (i niekompatybilny z innymi przydatnymi funkcjami, takie jak 'shopt-s lastpipe'). W przeciwnym razie musisz poczekać, aż PID zbierze status wyjścia, co jest normalną metodą dla skryptów takich jak ten, który sugerujesz powyżej ('start_encoder & encoder_pids + = ($!); ...; dla pid w" $ {encoder_pids [@]} "; czekaj" $ pid "|| echo" Enkoder nieudany ", done' lub taki). –

Odpowiedz

9

The job control section of Greg's Bash Guide opisano to w następujący sposób:

Specyfikacja pracy lub "jobspec" to określenie odnoszące się do procesów, które składają się na pracę. Specyfikacja może być:

  • %n w celu oznaczenia numeru stanowiska n.
  • %str aby odnieść się do zadania, które zostało uruchomione przez polecenie zaczynające się od str. Jest to błąd, jeśli istnieje więcej niż jedno takie zadanie.
  • %?str aby odnieść się do zadania, które zostało uruchomione poleceniem zawierającym str. Jest to błąd, jeśli istnieje więcej niż jedno takie zadanie.
  • %% lub %+, aby odnieść się do bieżącego zadania: ostatnio uruchomionego w tle lub zawieszonego na pierwszym planie. fg i bg będą działać w tym zadaniu, jeśli nie zostanie podany żaden parametr roboczy.
  • %- dla poprzedniej pracy (zadanie, które było %% przed bieżącym).
+0

Gdy nie napisałeś czegoś samemu, należy to przypisać - nie tylko linkiem, ale prozą, która jasno określa, która treść jest oryginalna i nie jest oryginalną częścią twojej odpowiedzi. –

+0

@Charles Duffy Got to. Odpowiednio edytuję. Dziękuję Ci. –

+0

Nie jestem pewien, czy nazwałbym Bash Guide "dokumentacją", chociaż czasami myślę, że tak powinno być. =) –