Линук

Басх чека команду

Басх чека команду

чекати је наредба која чека да се задаци заврше и враћа статус изласка наредбе која се чека.

Од чекати наредба утиче на тренутно окружење извршавања љуске, имплементирана је као уграђена наредба у већини љуски.

У овом чланку ћемо истражити уграђени Басх чекати команда.

Баш чекати Цомманд #

Општа синтакса чекати уграђени има следећи облик:

сачекајте [опције] ИД 

ИД је процес или ИД посла. Ако не ИД је наведена, наредба чека док се не доврше сви подређени послови подређени.

Тхе чекати наредба враћа излазни статус последње чекане наредбе.

На пример, да сачекате позадински процес са ПИД-ом 7654, користили бисте:

сачекајте 7654

Када је дато више процеса, наредба чека да се сви процеси заврше.

Послови се наводе помоћу спецификације посла („јобспец“), што је начин упућивања на процесе који чине посао. Јобспец започиње симболом процента након којег следи број посла (% н). Ево примера:

Покрените команду у позадини:

рсинц -а / хоме / тмп / хоме &

ИД задатка љуске (окружен заградама) и ИД процеса приказат ће се на вашем терминалу:

[2] 54377 

Да бисте сачекали посао, покрените чекати наредба праћена спецификацијом посла:

сачекајте% 2

Када се позове помоћу опција, наредба чека само један посао из задатих пида или радних задатака да се заврши и враћа свој излазни статус. Ако се не дају аргументи, сачекај -н чека да се било који позадински посао заврши и врати статус изласка из посла.

сачекај -н 45432 54346 76573

У горњем примеру, сачекај -н исписује само статус повратка посла који први излази; не приказује ПИД посла. Ако желите добити пид посла или Јобспец за који се враћа статус излаза, користите -стр опција за додељивање променљивој:

сачекај -п јоб_ид -н 45432 54346 76573

-стр опција је уведена у Басху 5.1. Ако користите старију верзију Басх-а, добићете грешку „неважећа опција“.

Тхе опција говори чекати да сачекате да се сваки пид или Јобспец стварно заврши пре него што врати свој излазни код, уместо да се врати када се статус посла промени. Ова опција важи само када је омогућена контрола посла. Контрола посла је подразумевано омогућена само за интерактивне упите.

Примери #

чекати се обично користи у скриптама љуске које рађају подређене процесе који се извршавају паралелно.

Да бисте илустровали како команда функционише, креирајте следећу скрипту:

#!/ бин / басх слееп 30 & процесс_ид = $! ецхо "ПИД: $ процесс_ид" ваит $ процесс_ид ецхо "Статус излаза: $?" 

Објаснимо код ред по ред:

  1. Прва линија се назива схебанг и говори оперативном систему који тумач треба користити за рашчлањивање остатка датотеке.
  2. Користимо спавати наредба за опонашање дуготрајног процеса у позадини.
  3. $! је интерна Басх променљива која чува ПИД последњег покренутог посла у позадини. У овом примеру, то је ПИД датотеке спавати команда. Чувамо ПИД у променљивој (процесс_ид).
  4. Штампа ПИД број.
  5. ПИД се прослеђује чекати команда која чека до спавати команда завршава.
  6. Штампа излазни статус датотеке чекати команда. $? је интерна Басх променљива која садржи статус излаза последње извршене наредбе.

Ако покренете скрипту, исписаће отприлике овако:

ПИД: 36353 Излазни статус: 0 

Ево примера који користи опција:

#!/ бин / басх слееп 3 & слееп 30 & слееп 5 & ваит -н ецхо "Први посао завршен.„ваит ецхо“ Сви послови су завршени." 

Када се скрипта изврши, она даје 3 позадинска процеса. сачекај -н сачека док се први посао не заврши и испише ехо изјава. чекати чека да се заврше сви задаци за децу у позадини.

први посао завршен сви послови завршени 

Последњи пример објашњава опција. Отворите терминал и покрените:

спавање 3600 &
[1] 46671 

Сачекајте поступак:

сачекајте 46671

Отворите други терминал и зауставите поступак помоћу убити наредба:

убити -СТОП 46671

Једном када се статус процеса промени, чекати наредба ће довршити и вратити излазни код процеса.

Сада поновите исте кораке, али овога пута користите сачекај -ф $ пид:

спавање 3600 &сачекај -ф 46671

Зауставите поступак са другог терминала:

убити -СТОП 46671

Овај пут чекати команда се неће довршити. Трајаће до спавати процес се завршава.

Закључак #

Тхе чекати наредба чека да се наведени послови доврше и враћа излазни код посла.

Ако имате питања или повратне информације, слободно оставите коментар.

Најбоље игре командне линије за Линук
Командна линија није само ваш највећи савезник када користите Линук - она ​​такође може бити извор забаве јер је можете користити за играње многих заб...
Најбоље апликације за мапирање гамепада за Линук
Ако волите да играте игре на Линуку са гамепадом уместо са типичним системом за унос тастатуре и миша, за вас постоје неке корисне апликације. Многе и...
Корисни алати за Линук играче
Ако волите да играте игре на Линуку, велика је вероватноћа да сте можда користили апликације и услужне програме попут Вине, Лутрис и ОБС Студио за поб...