Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание

Здесь есть возможность читать онлайн «Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: СПб., Год выпуска: 2017, ISBN: 2017, Издательство: Питер, Жанр: Программирование, ОС и Сети, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Сценарии командной оболочки помогают системным администраторам и программистам автоматизировать рутинные задачи с тех самых пор, как появились первые компьютеры. С момента выхода первого издания этой книги в 2004 году многое изменилось, однако командная оболочка bash только упрочила свои лидирующие позиции. Поэтому умение использовать все ее возможности становится насущной необходимостью для системных администраторов, инженеров и энтузиастов. В этой книге описываются типичные проблемы, с которыми можно столкнуться, например, при сборке программного обеспечения или координации действий других программ. А решения даются так, что их легко можно взять за основу и экстраполировать на другие схожие задачи.
Цель этой книги — продемонстрировать практические приемы программирования сценариев на bash и познакомить с самыми распространенными утилитами на коротких и компактных примерах, не вдаваясь в излишние подробности. Экспериментируйте с этими сценариями — ломайте, исправляйте и приспосабливайте их под свои нужды, чтобы понять, как они работают. Только так вы сможете решать самые сложные задачи.

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Запуск сценария

Для успешной работы сценарию netperf необходима информация в файле .netstatlog . Эта информация генерируется заданием crontab, автоматически вызывающим getstats с некоторой частотой. В современной системе OS X, Unix или Linux можно добавить в crontab следующую запись, изменив путь к сценарию, чтобы он соответствовал его местонахождению в вашей системе, естественно:

*/15 * * * * /home/taylor/bin/getstats

Она создает новую запись в файле журнала каждые 15 минут. Чтобы гарантировать определенные права доступа к файлу, лучше всего создать пустой файл вручную перед первым запуском getstats:

$ sudo touch /Users/taylor/.netstatlog

$ sudo chmod a+rw /Users/taylor/.netstatlog

Теперь программа getstats будет благополучно пыхтеть над исторической картиной работы сети в вашей системе. Для анализа файла журнала запустите сценарий netperf без аргументов.

Результаты

Для начала давайте рассмотрим содержимое файла .netstatlog , показанное в листинге 10.13.

Листинг 10.13.Последние три строки в файле. netstatlog, записанные заданием crontab, вызывающим сценарий getstats через регулярные интервалы

$ tail -3 /Users/taylor/.netstatlog

time=1063981801;snt=14386;re=24;rec=15700;dup=444;oo=555;creq=563;cacc=17;reto=158

time=1063982400;snt=17236;re=24;rec=20008;dup=454;oo=848;creq=570;cacc=17;reto=158

time=1063983000;snt=20364;re=24;rec=25022;dup=589;oo=1181;creq=582;cacc=17;reto=158

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

Листинг 10.14.Запуск сценария netperf для анализа файла. netstatlog

$ netperf

Netstat is currently reporting the following:

··52170128 packets sent, with 16927 retransmits (0 %) and 2722 retransmit timeouts (0 %)

··20290926 packets received, with 129910 dupes (.600 %) and 18064 out of order (0 %)

·· 39841 total connection requests, of which 123 were accepted

Analyzing trends…

(Analyzed 6 netstat log entries for calculations)

Усовершенствование сценария

Вы наверняка заметили, что вместо удобочитаемого формата представления дат сценарий getstats сохраняет даты в файле .netstatlog в виде количества секунд, истекших с начала эпохи, то есть с 1 января 1970 года. Например, 1 063 983 000 секунд означают день в конце сентября 2003 года. Использование такого формата упрощает расширение этого сценария, давая возможность вычислять время, прошедшее между записями.

№ 78. Изменение приоритета процесса по его имени

В практике администрирования часто возникают ситуации, когда полезно изменить приоритет задачи, например: отдать серверу чата только «холостые» циклы системы, понизить приоритет MP3-плеера, не являющегося важным приложением, или процесса, выполняющего загрузку файла, острая необходимость в котором отпала, или, напротив, увеличить приоритет монитора CPU. Изменить приоритет процесса можно командой renice; однако она требует передать ей числовой идентификатор процесса, что вызывает дополнительные трудности. Намного более удобный подход реализован в сценарии (листинг 10.15), который по имени процесса определяет его числовой идентификатор и автоматически изменяет приоритет указанного приложения.

Код

Листинг 10.15.Сценарий renicename

#!/bin/bash

# renicename — изменяет приоритет задания по указанному имени.

user=""; tty=""; showpid=0; niceval="+1"·· # Инициализация

while getopts "n: u: t: p" opt; do

··case $opt in

····n) niceval="$OPTARG";;;

····u) if [! -z "$tty"]; then

··········echo "$0: error: −u and −t are mutually exclusive." >&2

··········exit 1

········fi

········user=$OPTARG;;

····t) if [! -z "$user"]; then

··········echo "$0: error: −u and −t are mutually exclusive." >&2

··········exit 1

········fi

········tty=$OPTARG;;

····p) showpid=1;;;

····?) echo "Usage: $0 [-n niceval] [-u user|-t tty] [-p] pattern" >&2

········echo "Default niceval change is \"$niceval\" (plus is lower" >&2

········echo "priority, minus is higher, but only root can go below 0)" >&2

········exit 1

··esac

done

shift $(($OPTIND — 1)) # Употребить все проанализированные аргументы.

if [$# −eq 0]; then

··echo "Usage: $0 [-n niceval] [-u user|-t tty] [-p] pattern" >&2

··exit 1

fi

if [! -z "$tty"]; then

··pid=$(ps cu −t $tty | awk "/ $1/ { print \\$2 }")

elif [! -z "$user"]; then

··pid=$(ps cu −U $user | awk "/ $1/ { print \\$2 }")

else

··pid=$(ps cu −U ${USER:-LOGNAME} | awk "/ $1/ { print \$2 }")

fi

if [-z "$pid"]; then

··echo "$0: no processes match pattern $1" >&2

··exit 1

elif [! -z "$(echo $pid | grep ' ')"]; then

··echo "$0: more than one process matches pattern ${1}:"

··if [! -z "$tty"]; then

····runme="ps cu −t $tty"

··elif [! -z "$user"]; then

····runme="ps cu −U $user"

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

Интервал:

Закладка:

Сделать

Похожие книги на «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание»

Представляем Вашему вниманию похожие книги на «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание»

Обсуждение, отзывы о книге «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x