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

Тут можно читать онлайн Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Питер, год 2017. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание
  • Автор:
  • Жанр:
  • Издательство:
    Питер
  • Год:
    2017
  • Город:
    СПб.
  • ISBN:
    978-5-496-03029-8
  • Рейтинг:
    5/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

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

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание - читать книгу онлайн бесплатно, автор Дейв Тейлор
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

elif [$showpid −eq 1]; then

··echo $pid

else

··# Все готово. Изменить приоритет!

··/bin/echo −n "Renicing job \""

··/bin/echo −n $(ps cp $pid | sed 's/ []*/ /g' | tail -1 | cut −d\ −f6-)

··echo "\" ($pid)"

··renice $niceval $pid

fi

exit 0

Как это работает

Часть кода заимствована из сценария № 47 в главе 6, который аналогично выполняет преобразование имени процесса в его числовой идентификатор, но тот сценарий останавливает задания, а не изменяет их приоритет.

В данной ситуации было бы нежелательно по ошибке изменить приоритет сразу нескольких процессов, соответствующих указанному имени (представьте, например, команду renicename −n 10 "*"), поэтому сценарий завершается с сообщением об ошибке, если обнаруживает несколько совпадений. В противном случае он выполняет указанные изменения, предоставляя программе renice самой сообщить о любых возможных ошибках.

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

Этот сценарий поддерживает несколько параметров: −n val позволяет указать желаемое значение приоритета. По умолчанию оно задается как niceval=1. Флаг −u user позволяет ограничить совпадения только процессами, принадлежащими определенному пользователю, а флаг −t tty обеспечивает аналогичную фильтрацию по имени терминала. Чтобы только увидеть идентификатор найденного процесса без фактического изменения приоритета приложения, используйте флаг −p. В дополнение к одному или нескольким флагам, сценарий renicename требует указать шаблон поиска, с которым будут сравниваться имена процессов, действующих в системе.

Результаты

В листинге 10.16 показано, что получается, если обнаруживается совпадение с несколькими процессами.

Листинг 10.16.Запуск сценария renicename с именем процесса, которому соответствует несколько идентификаторов

$ renicename "vi"

renicename: more than one process matches pattern vi:

user taylor pid 6584 job vi

user taylor pid 10949 job vi

Use −u user or −t tty to narrow down your selection criteria.

Мы остановили один из этих процессов и снова запустили ту же команду.

$ renicename "vi"

Renicing job "vi" (6584)

Мы можем убедиться, что сценарий выполнил свою задачу и приоритет процесса vi изменился, если вызвать команду ps с флагом −l и идентификатором процесса, как показано в листинге 10.17.

Листинг 10.17.Подтверждение изменения приоритета процесса

$ ps −l 6584

UID··PID PPID····F CPU PRI NI······ SZ··RSS WCHAN··S··ADDR TTY············ TIME CMD

501 6584 1193 4006·· 0··30 1 картинка 4632453832 1732··- SN+ 0 ttys000 0:00.01 vi wasting.time

Этот чрезмерно широкий формат вывода команды ps читать очень неудобно, но обратите внимание на поле 7 — NI — в котором для данного процесса указано значение 1 картинка 464. Проверьте любые другие запущенные процессы, и вы увидите, что они имеют стандартный приоритет 0.

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

Интересным дополнением стал бы другой сценарий, следящий за программами, которые расходуют значительную долю процессорного времени, и автоматически изменяющий их приоритет. Это может пригодиться, например, для уменьшения приоритета некоторых интернет-служб или приложений, обычно потребляющих много вычислительных ресурсов. Сценарий в листинге 10.18 использует renicename для преобразования имени процесса в его идентификатор и затем проверяет текущее значение приоритета этого процесса. Он вызывает renice, если значение аргумента оказывается выше текущего уровня (то есть процесс имеет больший приоритет, чем требуется).

Листинг 10.18.Сценарий watch_and_nice

#!/bin/bash

# watch_and_nice — проверяет указанный процесс по имени и уменьшает

#·· его приоритет до желаемого уровня, если необходимо.

if [$# −ne 2]; then

··echo "Usage: $(basename $0) desirednice jobname" >&2

··exit 1

fi

pid="$(renicename −p "$2")"

if ["$pid" == ""]; then

··echo "No process found for $2"

··exit 1

fi

if [! -z "$(echo $pid | sed 's/[0–9]*//g')"]; then

··echo "Failed to make a unique match in the process table for $2" >&2

··exit 1

fi

currentnice="$(ps −lp $pid | tail -1 | awk '{print $6}')"

if [$1 −gt $currentnice]; then

··echo "Adjusting priority of $2 to $1"

··renice $1 $pid

fi

exit 0

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

Глава 11. Сценарии для OS X

Одним из важнейших событий в мире Unix и Unix-подобных операционных систем стал выпуск полностью переписанной системы OS X, основанной на надежном ядре Unix с названием Darwin. Darwin — это версия Unix с открытым исходным кодом, берущая свое начало в BSD Unix. Если вы мало-мальски знакомы с Unix, первое время, открывая приложение Terminal в OS X, вы будете замирать от восхищения. Все, что только можно пожелать, от комплекта инструментов разработки до стандартных утилит Unix, включено в последние версии Mac OS X, имеющей великолепный графический интерфейс, способный скрывать всю ту мощь, к которой вы пока не готовы.

Однако между OS X и Linux/Unix имеются важные различия, поэтому будет нелишним познакомиться с достоинствами OS X, способными помочь вам в вашей повседневной работе. Например, в OS X имеется интересное приложение командной строки, которое называется open и позволяет запускать приложения с графическим интерфейсом из командной строки. Но open не отличается гибкостью. Если, к примеру, вы захотите открыть Microsoft Excel, ввод команды open excel не даст желаемого результата, потому что программа open очень придирчива и в данном случае ожидает, что будет вызвана как open −a "Microsoft Excel". Далее мы напишем сценарий-обертку, который позволит преодолеть эту придирчивость.

ИСПРАВЛЕНИЕ ОКОНЧАНИЙ СТРОК В OS X

Вот еще одна возникающая время от времени ситуация, с которой легко справиться, применив простой трюк. Работая в командной строке с файлами, созданными для использования в графическом интерфейсе Mac, можно обнаружить, что символ конца строки в таких файлах не совпадает с аналогичным символом, необходимым для работы в командной строке. Говоря техническим языком, для обозначения конца строки системы OS X используют символ возврата каретки (обозначается, как \r), тогда как на стороне Unix используется символ перевода строки (\n). Поэтому при попытке вывести такой файл в программе Terminal, он будет показан в одну строку, без переносов в соответствующих местах.

У вас есть файл, с которым наблюдается подобная проблема? Ниже показано, что можно увидеть, если попробовать вывести содержимое такого файла командой cat.

$ cat mac-format-file.txt

$

И все же вы знаете, что файл не пуст. Чтобы увидеть содержимое, вызовите команду cat с флагом −v, which который сделает видимыми иначе скрытые управляющие символы. В этом случае вы увидите что-то похожее:

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

Интервал:

Закладка:

Сделать


Дейв Тейлор читать все книги автора по порядку

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




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


Отзывы читателей о книге Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание, автор: Дейв Тейлор. Читайте комментарии и мнения людей о произведении.


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

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