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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

#!/bin/bash

while 1 # Бесконечный цикл.

do

$0 & # Этот сценарий вызывает сам себя . . .

#+ порождая дочерние процессы бесконечное число раз . . .

#+ точнее -- до тех пор, пока не иссякнут системные ресурсы.

done # Это печально известный сценарий "sorcerer's appentice".

exit 0 # Сценарий никогда не завершит свою работу.

Команда ulimit -Hu XX(где XX -- это верхний предел количества процессов, которые может запустить пользователь одновременно) в /etc/profile вызовет аварийное завершение этого сценария, когда количество процессов превысит установленный предел.

umask

Установка маски режима создания файлов. Накладывает ограничения на атрибуты по-умлчанию для создаваемых файлов. Маска представляет собой восьмеричное значение и определяет запрещенные атрибуты файла. Например, umask 022удаляет права на запись для группы и прочих пользователей (у файлов, создававшихся с режимом 777, он оказывается равным 755; а режим 666 преобразуется в 644, т.е. 777 NAND 022 = 755, 666 NAND 022 = 644) [ 42 ] NAND -- логическая операция "И-НЕ". В общих чертах она напоминает вычитание. . Конечно же, впоследствие, пользователь может откорректировать права доступа к своему файлу с помощью команды chmod. Как правило, значение umaskустанавливается в файле /etc/profile и/или ~/.bash_profile (см. Глава 26).

rdev

Выводит или изменяет корневое устройство, размер RAM-диска или видео режим. Функциональные возможности утилиты rdevвообще повторяются загрузчиком lilo, но rdevпо прежнему остается востребованной, например, при установке электронного диска (RAM-диск). Это еще одна потенциально опасная, при неумелом использовании, утилита.

Команды для работы с модулями ядра

lsmod

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

bash$ lsmod

Module Size Used by

autofs 9456 2 (autoclean)

opl3 11376 0

serial_cs 5456 0 (unused)

sb 34752 0

uart401 6384 0 [sb]

sound 58368 0 [opl3 sb uart401]

soundlow 464 0 [sound]

soundcore 2800 6 [sb sound]

ds 6448 2 [serial_cs]

i82365 22928 2

pcmcia_core 45984 0 [serial_cs ds i82365]

картинка 123Команда cat /proc/modulesвыведет на экран эту же информацию.

insmod

Принудительная загрузка модуля ядра (старайтесь вместо insmodиспользовать команду modprobe). Должна вызываться с привилегиями пользователя root.

rmmod

Выгружает модуль ядра. Должна вызываться с привилегиями пользователя root.

modprobe

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

depmod

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

Прочие команды

env

Запускает указанную программу или сценарий с модифицированными переменными окружения (не изменяя среду системы в целом, изменения касаются только окружения запускаемой программы/сценария). Посредством [varname=xxx], устанавливает значение переменной окружения varname, которая будет доступна из запускаемой программы/сценария. Без параметров -- просто выводит список переменных окружения с их значениями.

картинка 124В Bash, и других производных от Bourne shell, имеется возможность установки переменных окружения и запуска программы (или сценария) одной командной строкой.

var1=value1 var2=value2 commandXXX

# $var1 и $var2 -- будут определены только в окружении для 'commandXXX'.

картинка 125В первой строке сценария ("sha-bang") можно указать команду env, если путь к командному интерпретатору не известен.

#! /usr/bin/env perl

print "Этот сценарий, на языке программирования Perl, будет запущен,\n";

print "даже если я не знаю где в системе находится Perl.\n";

# Прекрасно подходит для написания кросс-платформенных сценариев,

# когда Perl может находиться совсем не там, где вы ожидаете.

# Спасибо S.C.

ldd

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

bash$ ldd /bin/ls

libc.so.6 => /lib/libc.so.6 (0x4000c000)

/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

watch

Периодически запускает указанную программу с заданным интервалом времени.

По-умолчанию интервал между запусками принимается равным 2 секундам, но может быть изменен ключом -n.

watch -n 5 tail /var/log/messages

# Выводит последние 10 строк из системного журнала, /var/log/messages, каждые пять секунд.

strip

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

Эту команду часто можно встретить в Makefile-ах, и редко -- в сценариях на языке командной оболочки.

nm

Выводит список символов (используемых в целях отладки), содержащихся в откомпилированном двоичном файле.

rdist

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

А теперь, используя полученные нами знания, попробуем разобраться с одним из системных сценариев. Один из самых коротких и простых -- это killall, который вызывается для остановки процессов при перезагрузке или выключении компьютера.

Пример 13-8. Сценарий killall, из каталога /etc/rc.d/init.d

#!/bin/sh

# --> Комментарии, начинающиеся с "# -->", добавлены автором документа.

# --> Этот сценарий является частью пакета 'rc'-сценариев

# --> Автор: Miquel van Smoorenburg,

# --> Этот сценарий характерен для дистрибутива Red Hat

# --> (в других дистрибутивах может отсутствовать).

# Остановить все ненужные сервисы которые еще работают (собственно,

# их уже не должно быть, это лишь формальная проверка, на всякий случай)

for i in /var/lock/subsys/*; do

# --> Стандартный заголовок цикла for/in, но, поскольку "do"

# --> находится в той же самой строке, что и for,

# --> необходимо разделить их символом ";".

# Проверяется наличие сценария.

[ ! -f $i ] && continue

# --> Очень интересное использование "И-списка", эквивалентно:

# --> if [ ! -f "$i" ]; then continue

# Получить имя подсистемы.

subsys=${i#/var/lock/subsys/}

# --> В данном случае совпадает с именем файла.

# --> Это точный эквивалент subsys=`basename $i`.

# --> Таким образом получается имя файла блокировки (если он присутствует,

# -->+ то это означает, что процесс запущен).

# --> См. описание команды "lockfile" выше.

# Остановить службу.

if [ -f /etc/rc.d/init.d/$subsys.init ]; then

/etc/rc.d/init.d/$subsys.init stop

else

/etc/rc.d/init.d/$subsys stop

# --> Останавливает задачу или демона

# --> посредством встроенной команды 'stop'.

fi

done

Вобщем все довольно понятно. Кроме хитрого манипулирования с переменными, при определении имени подсистемы (службы), здесь нет ничего нового.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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