Списки команд командного интерпретатора Linux

Перенаправления и подстановки командного интерпретатора позволяют производить различные вычисления, но не разрешают управлять ходом вычислений — выполнять различные действия в зависимости от результата вычислений или циклически повторять вычисления.

Для управления ходом выполнения сценариев на языке командного интерпретатора служат списки команд.

Простейшие списки формирует пользователь при интерактивной работе с командным интерпретатором, последовательно запуская команды при помощи управляющего символа перевода строки  или параллельно запуская задания (см. сеансы и группы процессов) посредством метасимвола & запуска задач в «фоновом» режиме.

В пакетном режиме работы такие списки называются простыми и формируются конструкциями command1 ; command2 ; … и command1 & command2 & …, называемыми простым синхронным и простым асинхронным списками соответственно.

Простой последовательный (синхронный) список команд

bender@ubuntu:~$ dd if=/dev/dvd of=dvd.iso ↵

 

586896+0 записей получено

586896+0 записей отправлено

скопировано 300490752 байта (300 МВ), 5,10918 с, 58,8 МВ/с

bender@ubuntu:~$ ® ls -lh dvd.iso

-rw-r—r— 1   fltz   fitz 287M дек.       3 13:42 dvd.iso

bender@ubuntu:~$ bzip2 -v dvd.iso ; ls -lh dvd.iso.bz2

dvd.iso: 3.251:1, 2.461 bits/byte, 69.24% saved, 300490752 in, 92444196 out.

-rw-r—r— 1    fitz   fitz 89M дек.    3 13:42 dvd.iso.bz2

Интерактивный режим взаимодействия bzip2 ls с командным интерпретатором заставляет пользователя дожидаться завершения текущей выполняющейся программы и появления приглашения командного интерпретатора для того, чтобы запустить последующую команду.

Последовательный список позволяет организовать подобное последовательное выполнение посредством командного интерпретатора.

Простой параллельный (асинхронный) список команд

bender@ubuntu:~$ time xz —best -k plans.iso -S .b.xz & time xz —fast -k plane.iso -S .f.xz ft ps f
[1] 11978
[2] 11979
PID    TTY       STAT       TIME  COMMAND

11716       pts/0    S               0:00    -bash

11978      pts/0     S               0:00      \_ -bash
11981      pts/0     R               0:00    |        \_ xz —best -k plan9.tso, -S .b.xz
11979      pts/0     S               0:00    \_ -bash
11982      pts/0    R               0:00    |        \_ xz —fast -k plan9.iso -S .f.xz
11980      pts/0    R+            0:00    \_ ps f
bender@ubuntu:~$ wait ; ls -Ih plan9.*

real 0m37.791s

user 0m37.476s

sys 0m0.264s

real 3m7.409s

user 3m6.656s

sys 0n0.472s

[1] — Готово                time xz —best -k plan9.iso -S b.xz

[2] + Готово               time xz —fast -k plan9.iso -S f.xz

-rw-r—r— 1  bender  bender 287M нояб. 28 15:47 plan9.iso

rw-r—r— 1   bender  bender 61M  нояб. 28 15:47 plan9.iso.b.xz

rw-r—r— 1  bender  bender 89M  нояб. 28 15:47 plan9.iso.f.xz

При помощи асинхронного списка (см. листинг выше), наоборот, организуется запуск сразу нескольких процессов в «фоновом» режиме-, дождаться завершения которых позволяет встроенная команда интерпретатора wait.

Добавить комментарий