My-library.info
Все категории

Командная строка Linux - Шоттс Уильям

На электронном книжном портале my-library.info можно читать бесплатно книги онлайн без регистрации, в том числе Командная строка Linux - Шоттс Уильям. Жанр: Интернет год 2004. В онлайн доступе вы получите полную версию книги с кратким содержанием для ознакомления, сможете читать аннотацию к книге (предисловие), увидеть рецензии тех, кто произведение уже прочитал и их экспертное мнение о прочитанном.
Кроме того, в библиотеке онлайн my-library.info вы найдете много новинок, которые заслуживают вашего внимания.

Название:
Командная строка Linux
Дата добавления:
17 сентябрь 2020
Количество просмотров:
107
Читать онлайн
Командная строка Linux - Шоттс Уильям

Командная строка Linux - Шоттс Уильям краткое содержание

Командная строка Linux - Шоттс Уильям - описание и краткое содержание, автор Шоттс Уильям, читайте бесплатно онлайн на сайте электронной библиотеки My-Library.Info

Книга Уильяма Шоттса "Командная строка Linux: Полное руководство" представляет обширный обзор «жизни» в командной строке Linux. В отличие от других книг, посвященных одной программе, такой как командный интерпретатор bash, в этой книге автор попытается рассказать, как поладить с интерфейсом командной строки в более широком аспекте. Как он работает? Что можно сделать с его помощью? Как лучше его использовать? Эта книга не об администрировании системы Linux. Эта книга исключительно о Linux. В книге материал излагается в тщательно выверенной последовательности, как в школе, где учитель руководит вами и направляет вас по правильному пути. Многие авторы грешат тем, что подают материал в «систематическом» порядке, имеющем определенный смысл для писателя, но способном вызывать путаницу у начинающих пользователей. Цель данной книги — познакомить вас с идеологией Unix, которая отличается от идеологии Windows.

Командная строка Linux читать онлайн бесплатно

Командная строка Linux - читать книгу онлайн бесплатно, автор Шоттс Уильям
Назад 1 ... 108 109 110 111 112 113 Вперед

В bash имеется встроенная команда, помогающая управлять асинхронным выполнением в подобных ситуациях. Команда wait приостанавливает выполнение родительского сценария, пока не завершится указанный процесс (то есть дочерний сценарий).

wait

Для начала посмотрим, как действует команда wait. Для этого нам понадобятся два сценария. Ниже приводится родительский сценарий:

#!/bin/bash

# async-parent : пример асинхронного выполнения (родитель)

echo "Parent: starting..."

echo "Parent: launching child script..."

async-child &

pid=$!

echo "Parent: child (PID= $pid) launched."

echo "Parent: continuing..."

sleep 2

echo "Parent: pausing to wait for child to finish..."

wait $pid

echo "Parent: child is finished. Continuing..."

echo "Parent: parent is done. Exiting."

и дочерний сценарий:

#!/bin/bash

# async-child : пример асинхронного выполнения (потомок)

echo "Child: child is running..."

sleep 5

echo "Child: child is done. Exiting."

В этом примере дочерний сценарий тривиально прост. Фактическая работа выполняется родителем. Родительский сценарий запускает дочерний сценарий и переводит его в фоновый режим выполнения. Идентификатор дочернего процесса сохраняется в переменной pid путем присваивания ей значения параметра $!, который всегда содержит идентификатор процесса последнего задания, переведенного в фоновый режим.

Родительский сценарий продолжает работу и в конце выполняет команду wait с идентификатором процесса дочернего сценария. Это вызывает приостановку родительского сценария до завершения дочернего сценария, после чего родительский сценарий возобновляет работу и тут же завершается.

В ходе выполнения родительский и дочерний сценарии производят следующий вывод:

[[email protected] ~]$ async-parent

Parent: starting...

Parent: launching child script...

Parent: child (PID= 6741) launched.

Parent: continuing...

Child: child is running...

Parent: pausing to wait for child to finish...

Child: child is done. Exiting.

Parent: child is finished. Continuing...

Parent: parent is done. Exiting.

Именованные каналы

В большинстве Unix-подобных систем существует возможность создавать файлы специального типа, которые называются именованными каналами (named pipe). Именованные каналы создают соединения между двумя процессами и могут использоваться как обычные файлы. Они не пользуются большой популярностью, но знать о такой возможности и уметь пользоваться ею желательно.

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

Наиболее широко архитектура клиент/сервер используется в веб-приложениях, где веб-браузеры взаимодействуют с веб-серверами. Веб-браузер действует как клиент, посылая запросы серверу, в ответ на которые сервер посылает веб-страницы.

Именованные каналы имеют некоторое сходство с файлами, но на самом деле образуют буферы, действующие по принципу очереди: первым пришел, первым вышел (First-In, First-Out, FIFO). Так же как в случае с обычными (неименованными) каналами, данные записываются с одного конца канала и извлекаются из другого. С применением именованных каналов можно, например, выполнять следующие команды:

процесс1 > именованный_канал

и

процесс2 < именованный_канал

и такая пара команд будет действовать подобно конвейеру

процесс1 | процесс2

Создание именованного канала

Прежде чем использовать именованный канал, его нужно создать. Это делается с помощью команды mkfifo:

[[email protected] ~]$ mkfifo pipe1

[[email protected] ~]$ ls -l pipe1

prw-r--r-- 1 me   me    0 2012-07-17 06:41 pipe1

Здесь с помощью команды mkfifo создается именованный канал с именем pipe1. Командой ls мы исследовали созданный файл, и, как видите, первой в поле с атрибутами стоит буква p, сообщающая, что это именованный канал (pipe).

Использование именованных каналов

Чтобы показать, как работают именованные каналы, откроем два окна терминала (или, как вариант, выполним описанные ниже действия в двух виртуальных консолях). В первом терминале введите простую команду и перенаправьте ее вывод в именованный канал:

[[email protected] ~]$ ls -l > pipe1

После нажатия клавиши ENTER появится ощущение, что команда «зависла». Это объясняется тем, что с другого конца канала данные еще не были прочитаны. В таких ситуациях говорят, что канал заблокирован. Разблокировка произойдет автоматически, как только мы подключим процесс с другого конца канала и прочитаем данные из него. Во втором окне терминала введите следующую ­команду:

[[email protected] ~]$ cat < pipe1

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

Заключительное замечание

Итак, мы закончили наше путешествие. Единственное, что осталось, — это практика, практика и еще раз практика. Даже при том, что на своем пути мы охватили широкий круг вопросов, в действительности мы лишь затронули верхушку айсберга под названием «командная строка». Существуют еще тысячи программ командной строки, которые вам предстоит открыть и изучить. Начните свои исследования с каталога /usr/bin, и вы увидите их!

Назад 1 ... 108 109 110 111 112 113 Вперед

Шоттс Уильям читать все книги автора по порядку

Шоттс Уильям - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки My-Library.Info.


Командная строка Linux отзывы

Отзывы читателей о книге Командная строка Linux, автор: Шоттс Уильям. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.