Мендель Купер - Искусство программирования на языке сценариев командной оболочки

Тут можно читать онлайн Мендель Купер - Искусство программирования на языке сценариев командной оболочки - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Искусство программирования на языке сценариев командной оболочки
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    3.7/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Мендель Купер - Искусство программирования на языке сценариев командной оболочки краткое содержание

Искусство программирования на языке сценариев командной оболочки - описание и краткое содержание, автор Мендель Купер, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Данное руководство не предполагает наличие у читателя познаний в области программирования на языке сценариев, однако, быстро восполняет этот недостаток, постепенно, шаг за шагом раскрывая мудрость и красоту UNIX. Это руководство может рассматриваться как учебник, предназначенный для самостоятельного изучения или как справочник по программированию на shell. Руководство снабжено серией хорошо прокомментированных примеров, поскольку лучший путь к изучению языка сценариев -- это написание сценариев.

Искусство программирования на языке сценариев командной оболочки - читать онлайн бесплатно полную версию (весь текст целиком)

Искусство программирования на языке сценариев командной оболочки - читать книгу онлайн бесплатно, автор Мендель Купер
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

[ is /usr/bin/[

hash [cmds]

Запоминает путь к заданной команде (в хэш-таблице командной оболочки), благодаря чему, при повторном обращении к ней, оболочка или сценарий уже не будет искать путь к команде в $PATH . При вызове команды hashбез аргументов, просто выводит содержимое хэш-таблицы. С ключом -r -- очищает хэш-таблицу.

help

helpCOMMAND -- выводит краткую справку по использованию внутренней команды COMMAND. Аналог команды whatis, только для внутренних команд.

bash$ help exit

exit: exit [n]

Exit the shell with a status of N. If N is omitted, the exit status

is that of the last command executed.

11.1. Команды управления заданиями

Некоторые из нижеследующих команд принимают, в качестве аргумента, "идентификатор задания". См. таблицу в конце главы.

jobs

Выводит список заданий, исполняющихся в фоне. Команда psболее информативна.

картинка 71 Задания и процессы легко спутать. Некоторые внутренние команды, такие как kill, disownи waitпринимают в качестве параметра либо номер задания, либо номер процесса. Команды fg, bgи jobsпринимают только номер задания.

bash$ sleep 100 &

[1] 1384

bash $ jobs

[1]+ Running sleep 100 &

"1" -- это номер задания (управление заданиями осуществляет текущий командный интерпретатор), а "1384" -- номер процесса (управление процессами осуществляется системой). Завершить задание/процесс ("прихлопнуть") можно либо командой kill %1, либо kill 1384.

Спасибо S.C.

disown

Удаляет задание из таблицы активных заданий командной оболочки.

fg, bg

Команда fgпереводит задание из фона на передний план. Команда bgперезапускает приостановленное задание в фоновом режиме. Если эти команды были вызваны без указания номера задания, то они воздействуют на текущее исполняющееся задание.

wait

Останавливает работу сценария до тех пор пока не будут завершены все фоновые задания или пока не будет завершено задание/процесс с указанным номером задания/PID процесса. Возвращает код завершения указанного задания/процесса.

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

Пример 11-22. Ожидание завершения процесса перед тем как продолжить работу

#!/bin/bash

ROOT_UID=0 # Только пользователь с $UID = 0 имеет привилегии root.

E_NOTROOT=65

E_NOPARAMS=66

if [ "$UID" -ne "$ROOT_UID" ]

then

echo "Для запуска этого сценария вы должны обладать привилегиями root."

exit $E_NOTROOT

fi

if [ -z "$1" ]

then

echo "Порядок использования: `basename $0` имя-файла"

exit $E_NOPARAMS

fi

echo "Обновляется база данных 'locate'..."

echo "Это может занять продолжительное время."

updatedb /usr & # Должна запускаться с правами root.

wait

# В этом месте сценарий приостанавливает свою работу до тех пор, пока не отработает 'updatedb'.

# Желательно обновить базу данных перед тем как выполнить поиск файла.

locate $1

# В худшем случае, без команды wait, сценарий завершил бы свою работу до того,

# как завершила бы работу утилита 'updatedb',

# сделав из нее "осиротевший" процесс.

exit 0

Команда waitможет принимать необязательный параметр -- номер задания/процесса, например, wait %1или wait $PPID. См. таблицу идентификации заданий.

картинка 72При запуске команды в фоне из сценария может возникнуть ситуация, когда сценарий приостанавливает свою работу до тех пор, пока не будет нажата клавиша ENTER. Это, кажется, происходит с командами, делающими вывод на stdout . Такое поведение может вызывать раздражение у пользователя.

#!/bin/bash

# test.sh

ls -l &

echo "Done."

bash$ ./test.sh

Done.

[bozo@localhost test-scripts]$ total 1

-rwxr-xr-x 1 bozo bozo 34 Oct 11 15:09 test.sh

_

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

#!/bin/bash

# test.sh

ls -l &

echo "Done."

wait

bash$ ./test.sh

Done.

[bozo@localhost test-scripts]$ total 1

-rwxr-xr-x 1 bozo bozo 34 Oct 11 15:09 test.sh

Перенаправление вывода в файл или даже на устройство /dev/null также снимает эту проблему.

suspend

Действует аналогично нажатию на комбинацию клавиш Control+- Z, за исключением того, что она приостанавливает работу командной оболочки.

logout

Завершает сеанс работы командной оболочки, можно указать необязательный код завершения.

times

Выдает статистику исполнения команд в единицах системного времени, в следующем виде:

0m0.020s 0m0.020s

Имеет весьма ограниченную сферу применения, так как сценарии крайне редко подвергаются профилированию.

kill

Принудительное завершение процесса путем передачи ему соответствующего сигнала (см. Пример 13-4).

Пример 11-23. Сценарий, завершающий себя сам с помощью команды kill

#!/bin/bash

# self-destruct.sh

kill $$ # Сценарий завершает себя сам.

# Надеюсь вы еще не забыли, что "$$" -- это PID сценария.

echo "Эта строка никогда не будет выведена."

# Вместо него на stdout будет выведено сообщение "Terminated".

exit 0

# Какой код завершения вернет сценарий?

#

# sh self-destruct.sh

# echo $?

# 143

#

# 143 = 128 + 15

# сигнал TERM

картинка 73Команда kill -lвыведет список всех сигналов. Команда kill -9-- это "жесткий kill", она используется, как правило, для завершения зависших процессов, которые упорно отказываются "умирать", отвергая простой kill. Иногда достаточно подать команду kill -15. "Процессы-зомби", т.е. процессы, "родители" которых уже завершили работу, не могут быть "убиты" таким способом (невозможно "убить" "мертвого"), рано или поздно с ними "расправится" процесс init.

command

Директива command COMMANDзапрещает использование псевдонимов и функций с именем "COMMAND".

картинка 74Это одна из трех директив командного интерпретатора, которая влияет на обработку команд. Другие две -- builtin и enable.

builtin

Конструкция builtin BUILTIN_COMMANDзапускает внутреннюю команду "BUILTIN_COMMAND", на время запрещая использование функций и внешних системных команд с тем же именем.

enable

Либо запрещает, либо разрешает вызов внутренних команд. Например, enable -n killзапрещает использование внутренней команды kill, в результате, когда интерпретатор встретит команду kill, то он вызовет внешнюю команду kill, т.е. /bin/kill .

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Мендель Купер читать все книги автора по порядку

Мендель Купер - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Искусство программирования на языке сценариев командной оболочки отзывы


Отзывы читателей о книге Искусство программирования на языке сценариев командной оболочки, автор: Мендель Купер. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x