Linux

Команда Bash wait

Команда Bash wait

изчакайте е команда, която чака заданията да завършат и връща изходния статус на чаканата команда.

Тъй като изчакайте команда засяга текущата среда за изпълнение на черупката, тя се реализира като вградена команда в повечето черупки.

В тази статия ще разгледаме вградения Bash изчакайте команда.

Баш изчакайте Команда #

Общият синтаксис на изчакайте вграденият има следната форма:

изчакайте [опции] ID 

документ за самоличност е идентификаторът на процеса или заданието. Ако не документ за самоличност е зададена, командата изчаква, докато завършат всички дъщерни задания на фона.

The изчакайте команда връща състоянието на изход на последната чакана команда.

Например да изчакате фонов процес с PID 7654, бихте използвали:

изчакайте 7654

Когато са дадени множество процеси, командата изчаква всички процеси да завършат.

Заданията се посочват с помощта на спецификацията на заданието (“jobspec”), което е начин да се отнасят към процесите, които съставят заданието. Работният прозорец започва с символ за процент, последван от номера на заданието (). Ето пример:

Изпълнете команда във фонов режим:

rsync -a / home / tmp / home &

Идентификаторът на заданието на черупката (заобиколен от скоби) и идентификаторът на процеса ще бъдат показани на вашия терминал:

[2] 54377 

За да изчакате работата, стартирайте изчакайте команда, последвана от спецификацията на заданието:

изчакайте% 2

Когато се извиква с опция, командата изчаква само едно задание от дадените pids или Jobspecs да завърши и връща състоянието си на изход. Ако не са предоставени аргументи, изчакайте -n изчаква да завърши някаква фонова работа и да върне състоянието на излизане от работата.

изчакайте -n 45432 54346 76573

В горния пример, изчакайте -n отпечатва само състоянието на връщане на заданието, което излиза първо; не показва PID на заданието. Ако искате да получите заданието pid или jobspec, за които се връща състоянието на изход, използвайте -стр опция за присвояване на променлива:

изчакайте -p job_id -n 45432 54346 76573

-стр опция е въведена в Bash 5.1. Ако използвате по-стара версия на Bash, ще получите грешка „невалидна опция“.

The опция разказва изчакайте да изчакате всеки pid или Jobspec да прекрати действително, преди да върне изходния си код, вместо да се връща при промяна на състоянието на заданието. Тази опция е валидна само когато контролът на заданието е активиран. По подразбиране контролът на заданията е разрешен само за интерактивни подкани.

Примери #

изчакайте обикновено се използва в скриптове на черупки, които пораждат дъщерни процеси, които се изпълняват паралелно.

За да илюстрирате как работи командата, създайте следния скрипт:

#!/ bin / bash sleep 30 & process_id = $! echo "PID: $ process_id" wait $ process_id echo "Състояние на изход: $?" 

Нека обясним кода ред по ред:

  1. Първият ред се нарича shebang и казва на операционната система кой интерпретатор да използва, за да анализира останалата част от файла.
  2. Ние използваме сън команда за емулиране на отнемащ време фонов процес.
  3. $! е вътрешна променлива на Bash, която съхранява PID на последното изпълнено задание във фонов режим. В този пример това е PID на сън команда. Съхраняваме PID в променлива (process_id).
  4. Отпечатва PID номера.
  5. PID се предава на изчакайте команда, която чака до сън командата завършва.
  6. Отпечатва състоянието на изход на изчакайте команда. $? е вътрешна променлива на Bash, която съдържа състоянието на изход на последната изпълнена команда.

Ако стартирате скрипта, той ще отпечата нещо подобно:

PID: 36353 Състояние на изход: 0 

Ето пример с помощта на опция:

#!/ bin / bash sleep 3 & sleep 30 & sleep 5 & wait -n echo "Първата работа завършена."wait echo" Всички задачи са завършени." 

Когато скриптът се изпълни, той поражда 3 фонови процеса. изчакайте -n изчаква до завършване на първата работа и отпечатване на ехото. изчакайте изчаква да завършат всички фонови задачи за деца.

първата завършена работа всички завършени работни места 

Последният пример обяснява опция. Отворете терминала и стартирайте:

сън 3600 &
[1] 46671 

Изчакайте процеса:

изчакайте 46671

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

убий -СТОП 46671

След като състоянието на процеса се промени, изчакайте команда ще завърши и върне кода за изход на процеса.

Сега повторете същите стъпки, но този път използвайте изчакайте -f $ pid:

сън 3600 &изчакайте -f 46671

Спрете процеса от другия терминал:

убий -СТОП 46671

Този път изчакайте командата няма да завърши. Той ще продължи до сън процесът се прекратява.

Заключение №

The изчакайте команда изчаква задачите да завършат и връща изходния код на заданието.

Ако имате въпроси или отзиви, не се колебайте да оставите коментар.

Бутонът на левия бутон на мишката не работи в Windows 10
Ако използвате специална мишка с вашия лаптоп или настолен компютър, но бутонът на левия бутон на мишката не работи на Windows 10/8/7 по някаква причи...
Курсорът скача или се движи произволно, докато пишете в Windows 10
Ако установите, че курсорът на вашата мишка скача или се движи самостоятелно, автоматично, произволно, докато пишете в лаптоп или компютър на Windows,...
Как да обърнете посоката на превъртане на мишката и тъчпада в Windows 10
Мишка и Тъчпадs не само правят изчисленията лесни, но и по-ефективни и отнемат по-малко време. Не можем да си представим живот без тези устройства, но...