2016-01-27 59 views
9

Durante la lettura della documentazione [1], il termine "jobspec" appare alcune volte.bash: cosa è un jobspec

Che cos'è un jobspec?

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

+2

Un concetto che non ha nulla a che fare con la programmazione [e per i quali le domande appartengono quindi su SuperUser], dal momento che è parte della funzionalità che non è abilitata in uso non interattivo. :) –

+0

@CharlesDuffy Se questo appartiene a superuser è una domanda aperta. Le proprietà incorporate del controllo del lavoro sono disponibili per uno script (ad es. Puoi fare 'wait% 1'). Un esempio di utilizzo: uno script che transcodificherà i video di diverse migliaia di file. Lo script viene eseguito su un computer a 8 core. Lo script utilizza il controllo dei processi per gestire 8 processi di lavoro, iniziando uno nuovo quando uno vecchio viene completato. Di solito faccio questo genere di cose in perl, ma potrebbe essere fatto in bash. –

+0

@CraigEstey, puoi solo 'aspettare% 1' se '[[$ - = * m *]]' ("modalità monitor"), che è falso per impostazione predefinita in shell non interattive (e incompatibile con qualche altra funzionalità utile, come "shopt-s lastpipe'). Altrimenti, devi attendere il PID per raccogliere lo stato di uscita, che è il solito modo per script come quello suggerito in precedenza per farlo ('start_encoder & encoder_pids + = ($!); ...; per pid in" $ {encoder_pids [@]} "; attendere" $ pid "|| echo" Encoder non riuscito "; done' o simile). –

risposta

9

The job control section of Greg's Bash Guide descrive ciò come segue:

Una specifica lavoro o "jobspec" è un modo di riferirsi ai processi che costituiscono un lavoro. Un posto di lavoro può essere:

  • %n per fare riferimento al numero di lavoro n.
  • %str per fare riferimento a un lavoro che è stato avviato da un comando che inizia con str. È un errore se c'è più di un simile lavoro.
  • %?str per fare riferimento a un lavoro che è stato avviato da un comando contenente str. È un errore se c'è più di un simile lavoro.
  • %% o %+ per fare riferimento al lavoro corrente: quello più recente avviato in background o sospeso dal primo piano. fg e bg funzioneranno su questo lavoro se non viene specificato jobpec.
  • %- per il lavoro precedente (il lavoro che era %% prima di quello corrente).
+0

Quando non hai scritto qualcosa da te, deve essere attribuito - non solo con un collegamento, ma con la prosa che chiarisce quale contenuto è e non è una parte originale della tua risposta. –

+0

@Charles Duffy Capito. Modificherò di conseguenza. Grazie. –

+0

Non sono sicuro che chiamerei la Bash Guide "la documentazione" anche se a volte penso che dovrebbe essere. =) –