Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SPO_SRS.doc
Скачиваний:
5
Добавлен:
02.05.2019
Размер:
1.06 Mб
Скачать

2.1. Структура команд

Команди в shell звичайно мають наступний|слідуючий| формат:

<имя команды> <флаги> <аргумент(ы)>

Наприклад:

ls -ls /usr/bin

ls

ім'я команди видачі вмісту директорія

-ls

прапори ( "-" - ознака прапорів, l - довгий формат, s - об'ем| файлів в блоках).

/usr/bin

директорій, для якого виконується команда.

Ця команда видасть на екран в довгому форматі вміст директорія /usr/bin, при цьому додасть|добавить| інформацію про розмір кожного файлу в блоках.

На жаль, така структура команди витримується далеко не завжди. Не завжди перед прапорами ставиться мінус, не завжди прапори йдуть одним словом. Є різноманітність і в представленні аргументів. До команд, що мають екзотичні формати, відносяться і такі "ходові" команди, як сс|, tar, dd, find і ряд|лава,низка| інших.

Як правило (але|та| не завжди), перше слово (тобто послідовність символів до пропуску|прогалини|, табуляції або кінця рядка) shell сприймає, як команду. Тому в командному рядку

cat cat

перше слово буде розшифроване shell, як команда (конкатенації), яка видасть на екран файл з|із| ім'ям "cat" (друге слово), що знаходиться|перебуває| в поточному директорії.

2.2. Угрупування команд.

Засоби|кошти| угрупування:

;і <перевод строки>

визначають послідовне виконання команд;

&

асинхронне (фонове) виконання попередньої команди;

&&

виконання подальшої|наступної| команди за умови нормального завершення попередньої, інакше ігнорувати;

||

виконання подальшої|наступної| команди при ненормальному завершенні попередньої, інакше ігнорувати.

При виконанні команди в асинхронному режимі (після|потім| команди коштує один амперсанд) на екран виводиться номер процесу, відповідний виконуваній команді, і система, запустивши цей фоновий процес, знов|знову,щойно| виходить на діалог з|із| користувачем.

Наприклад, наберемо (екзотичну) команду "find" у фоновому режимі для пошуку в системі, починаючи|розпочинаючи,зачинаючи| від кореня "/", файлу з|із| ім'ям "conf", а потім "pwd" в звичайному|звичному| режимі. На екрані цей фрагмент виглядатиме таким чином:

--------------------------------

| $ find / -name conf -print & | введення команди "find"

| |

| 288 | номер (PID) фонового процесу

| |

| $ pwd | введення команди "pwd"

| |

| /mnt/lab/asu | результат роботи "pwd"

| |

| $ | повернення shell в промптер|

| |

| /usr/include/sys/conf | результат роботи "find"

| |

Іноді|інколи| необхідно, щоб всі фонові процеси завершилися, перш ніж виконуватиметься якийсь розрахунок. Для цього служить спеціальна команда "wait [PID]". Ця команда чекає завершення вказаного ідентифікатором (числом) фонового процесу. Якщо команда без параметра, то вона чекає завершення всіх фонових процесів, дочірніх для даного "sh".

Для угрупування команд також можуть використовуватися фігурні "{" і круглі "()" дужки. Розглянемо|розгледимо| приклади|зразки|, поєднуючі|сполучаючі| різні способи угрупування: Якщо введений|запроваджений| командний рядок

k1 && k2; k3

де k1, k2 і k3 - якісь команди, то "k2" буде виконана тільки|лише| при успішному завершенні "k1"; після|потім| будь-якого з результатів|виходів| обробки "k2" (тобто "k2" буде виконана, або пропущена) буде виконана "k3".

k1 && {k2; k3}

Тут обидві команди ("k2" і "k3") будуть виконані тільки|лише| при успішному завершенні "k1".

{k1; k2} &

У фоновому режимі виконуватиметься послідовність команд "k1" і "k2".

Фонові процеси (як і тіньову економіку) складно знищити, оскільки традиційна команда "CTL/C" перериває тільки|лише| процеси переднього плану. Для знищення фонового процесу треба знати його номер. При запуску фонового процесу на екран видається число, відповідне номеру (ідентифікатору) цього процесу (PID). Якщо цей номер забутий або треба переконатися, що цей процес не закінчений, за допомогою команди

ps -aux

можна одержати|отримати| перелік ідентифікаторів процесів (PID), імена користувачів, поточний час, витрачений процесами, і т.д.

У виведеній таблиці можна знайти номери процесів, що підлягають знищенню, наприклад це "849" і "866". Тоді командою

kill -9 866 849

можна знищити ці процеси. При знищенні процесів ви повинні мати те ж ім'я користувача, яке було приписане знищуваним процесам (або мати ім'я привілейованого користувача).

Попередження|попереджувати,запобігання|: Якщо паралельно обробляється або створюється файл з|із| ОДНИМ ім'ям (наприклад, декілька користувачів викликали|спричинили| в редакторі один і той же файл), то в системі продовжить існування той варіант файлу, який повернений (записаний) в систему останнім. Це часта помилка користувачів персональних комп'ютерів, які редагують один файл паралельно з декількох екранів.

Круглі дужки "()", окрім|крім| виконання функції угрупування, виконують і функцію виклику нового екземпляра|примірника| інтерпретатора shell.

Хай|нехай| ми знаходилися|перебували| в початковому каталозі "/mnt/lab/asu"

Тоді в послідовності команд

cd ..; ls; ls

дві команди "ls" видадуть 2 екземпляри|примірники| вмісту каталога "/mnt/lab", а послідовність

(cd ..; ls) ls

видасть спочатку вміст каталога "/mnt/lab", а потім вміст "/mnt/lab/asu", оскільки при вході в дужки викликається|спричиняється| новий екземпляр|примірник| shell, в рамках|у рамках| якого і здійснюється перехід. При виході з|із| круглих дужок походить повернення в старий shell і в старий каталог.

Контрольні питання:

  1. Як можна виконати текстовий файл, що містить|утримує| текст сценарію?

  2. Який формат мають команди в shell ?

  3. Поясніть значення засобів угрупування: ;, &, &&, ||.

  4. Яке призначення команди wait [PID]?

  5. Яке призначення команди ps –aux?

  6. Яке призначення команди kill?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]