2016-01-27 79 views
9

在閱讀文檔[1]時,術語「jobspec」出現幾次。bash:什麼是jobspec

什麼是jobspec?

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

+2

有無關編程的一個概念[和哪些問題因而屬於超級用戶],因爲它未在非交互式使用而啓用的功能的一部分。 :) –

+0

@CharlesDuffy這是否屬於超級用戶是一個開放的問題。作業控制內置於腳本中(例如,您可以執行「等待%1」)。示例用法:將視頻轉碼數千個文件的腳本。該腳本在8核心機器上運行。該腳本使用作業控制來管理8個工作進程,當一箇舊進程完成時啓動一個新進程。我通常在perl中做這種事情,但它可以在bash中完成。 –

+0

@CraigEstey,如果'[[$ - = * m *]]'(「monitor mode」)只能執行'wait%1',在非交互shell中默認爲false(並且與其他一些有用的功能不兼容,如'shopt -s lastpipe')。否則,您需要等待PID才能收集退出狀態,這是腳本的常用方式,例如上面建議的腳本('start_encoder&encoder_pids + =($!); ...;對於pid中的「$ {encoder_pids [@]}「;等待」$ pid「|| echo」Encoder failed「; done'等)。 –

回答

9
The job control section of Greg's Bash Guide

描述此如下:

作業規範或 「JOBSPEC」 是指,使一個作業的處理的方式。 jobspec可能是:

  • %n指的是職位編號n
  • %str指代以str開頭的命令啓動的作業。如果有多個這樣的工作是錯誤的。
  • %?str指代由包含str的命令啓動的作業。如果有多個這樣的工作是錯誤的。
  • %%%+指向當前作業:最近在後臺啓動的作業,或從前臺暫停的作業。如果沒有給出jobspec,fg和bg將在這項工作上運行。
  • %-以前的工作(在當前工作之前是%%)。
+0

當你自己沒有寫點東西的時候,應該把它歸因於 - 不僅僅是一個鏈接,而是用散文清楚地說明哪些內容是和不是你答案的原始部分。 –

+0

@Charles Duffy明白了。我會相應地編輯。謝謝。 –

+0

我不確定我會打電話給Bash指南「文檔」,但有時我認爲它應該是。 =) –