Командная строка Linux и автоматизация рутинных задач

Командная строка Linux и автоматизация рутинных задач
Автор: Колисниченко Денис
Год: 2012
ISBN: 978-5-9775-0850-6
Страниц: 352
Язык: Русский
Формат: PDF
Размер: 12 Мб

Download

Рассмотрены команды Linux, основы работы в командной строке, а также настройка системы с помощью программ, обладающих только текстовым интерфейсом. Работа с системой выполняется только в режиме консоли, что требует определенной квалификации пользователя. Подробно описаны наиболее полезные команды Linux, особенности файловой системы Linux, криптографическая файловая система eCryptfs, система инициализации systemd, загрузчики GRUB и GRUB2, ядро 3.0. С позиции пользователя оценены интерактивные возможности оболочки zsh. Даны практические примеры разработки сценариев на языках оболочек bash и tcsh. Рассмотрено управление пакетами для наиболее актуальных на данный момент дистрибутивов. Для энтузиастов Linux написана отдельная глава о разработке собственного дистрибутива Linux и создании загрузочного LiveCD.
Для системных администраторов, программистов и квалифицированных пользователей Linux

+

Введение

Linux — особенная операционная система, и сейчас мы поговорим о ее особенностях. Начнем с залога популярности Linux —лицензии GPL, по которой и распространяется эта операционная система. Согласно GPL, Linux распространяется абсолютно свободно. Заметьте, я не сказал “бесплатно”. Многие думают, что Linux — это бесплатная операционная система. Отчасти это так. Но главное то, что она свободная, т. е. всем желающим доступен исходный код ядра (как и любых других Linux-программ) и вы можете распространять без всяких ограничений как любой дистрибутив Linux, так и исходные коды программ. Вы можете установить Linux на любое количество компьютеров и даже создать свой дистрибутив Linux и распространять его под другим названием — главное, чтобы он распространялся под лицензией GPL.

Сравните это с лицензией на Windows, где вы имеете право установить приобретенный дистрибутив только на несколько компьютеров (количество указывается в лицензии) и где вы не можете распространять дистрибутив. А в мире Linux никаких ограничений нет. Скачали дистрибутив (необязательно даже покупать его в магазине), установили на любое количество компьютеров (пока “болванка” не испортится), затем передали диск друзьям (желательно, пока он не испортился) — пусть они его распространяют дальше. А фанаты Linux могут даже создавать собственные дистрибутивы — как с нуля, так и на базе одного из существующих дистрибутивов (что намного проще). Кстати, в последней главе этой книги мы как раз и поговорим о создании собственного дистрибутива.

Теперь, думаю, вам стало ясно, почему Linux настолько популярна. Но свободное распространение — это далеко не все. Судите сами: если операционная система бесплатная, но не соответствует требованиям пользователей, то ее установят, попробуют поработать и на следующий день деинсталлируют.

С технической точки зрения можно выделить следующие особенности Linux.

  • Реальная многозадачность — Linux, как и ее родственник UNIX, использует режим разделения времени центрального процессора (time-sharing system). Работает это так: планировщик выделяет каждому процессу фиксированный интервал для выполнения. По окончании выделенного времени планировщик приостанавливает выполнение процесса и передает управление другому процессу. А другие операционные системы используют режим вытесняющей многозадачности, когда процесс сам должен уступить место “под солнцем”, т. е. сам приостановить свое выполнение и передать право на выполнение другому процессу. Все бы хорошо, но некоторые процессы могут “узурпировать” все процессорное время, и якобы многозадачная операционная система превращается в… однозадачную со всеми вытекающими последствиями.
  • Многопользовательский доступ — Linux не только многозадачная, но и многопользовательская операционная система. Это означает, что в системе могут одновременно работать несколько пользователей. Как именно — это уже другой вопрос. Один пользователь может находиться непосредственно за компьютером, а остальные — подключены по сети. Но не забывайте, что Linux можно установить и на мейнфрейм — суперкомпьютер с несколькими терминалами. Правда, такие компьютеры постепенно отходят, а их место занимают так называемые “тонкие” клиенты, когда терминал подключен к компьютеру не физически, а по сети. Но в любом случае, несмотря на способ соединения, Linux является многопользовательской системой.
  • Страничная организация памяти — память в Linux организована в виде страниц по 4 Кбайт каждая. Когда физическая оперативная память заканчивается, включается механизм подкачки и неиспользуемые данные сбрасываются в область подкачки на жесткий диск. Правда, такой организацией памяти и механизмом подкачки сейчас никого не удивишь — все современные операционные системы работают примерно так же.
  • Загрузка выполняемых модулей “по требованию” — чтобы ядро системы поддерживало определенное устройство или функцию (например, протокол), нужно добавить программный код в состав ядра. Но ядро, поддерживающее все возможности и все устройства, будет просто огромным. В Linux эта проблема решается загрузкой модулей, которые добавляют поддержку определенных устройств. Например, вам нужна поддержка звуковой платы Creative — загрузите модуль, реализующий поддержку этой платы. При этом в память загружаются только те модули, которые необходимы для полноценной работы конкретной системы, что позволяет оптимизировать использование ресурсов компьютера.
  • Совместное использование исполняемых программ — если несколько пользователей запустили одну и ту же программу, то в память загружается всего одна копия этой программы, а не несколько, что позволяет экономить оперативную память.
  • Общие библиотеки — библиотеки содержат наборы процедур, которые используются различными приложениями. Вместо того чтобы скомпилировать в один исполняемый файл все процедуры, приложение использует библиотеку (которая также может использоваться другими приложениями), что позволяет существенно экономить место на диске.
  • Поддержка различных файловых систем — Linux поддерживает много различных файловых систем, в том числе и файловые системы Windows. О поддержке файловых систем мы поговорим в главе 4.
  • Поддержка разных аппаратных платформ — Linux может работать не только на платформах x86/x64. Поддерживаются аппаратные платформы ARM, DEC Alpha, SUN Sparc, M68000 (Atari и Amiga), MIPS, PowerPC и др.

Я перечислил далеко не все технические особенности Linux. Полный список может занять еще несколько страниц, введение затянется и книга покажется вам скучной. А этого нельзя допустить, поскольку данная книга — не просто справочник по командам ОС, а нечто большее — учебник по командной строке.

Технические особенности — это прекрасно, но чем же Linux хороша для обычного пользователя? Начнем с безопасности. Linux не страшны обычные вирусы, которые постоянно поражают Windows-компьютеры и которых насчитывается несколько сотен тысяч. Для Linux создано не более 1000 вирусов, да и то встретить такой вирус — это что-то из области ненаучной фантастики. К тому же вирус может причинить ущерб системе, только если пользователь откровенно не соблюдает правила безопасности, например всегда работает под учетной записью root.

Если раньше у Linux были проблемы с русским языком и наличием пользовательских приложений, то сейчас все иначе. С русским, как и с другими языками, проблем нет, поскольку все современные дистрибутивы уже давно перешли на UTF-8. А пользовательских приложений (работающих в графическом режиме) тоже достаточно — медиапроигрыватели, офисные пакеты, браузеры, почтовые клиенты — в общем все, что нужно обычному пользователю. К тому же для Linux разработаны эмуляторы (wine, cedega), позволяющие запускать Windows-игры.

Со временем Linux становится все проще и проще в использовании. Помню, как устанавливал в 1999 году свой первый дистрибутив (Red Hat). Перечитал множество документации (документации по Red Hat не нашел, зато воспользовался руководством по установке Slackware, где была подробно описана программа fdisk — в Red Hat того времени при установке как раз и вызывался fdisk) и только потом приступил к установке. На все про все потратил весь рабочий день (это было первое знакомство с Linux), а настройку системы отложил на следующий день. Но настроить за один день не получилось — то нужно было настроить монитор, то русифицировать X Window, то устранить некоторые проблемы в GNOME, установить русские шрифты для принтера и т. д. Работы хватало. Чтобы получить полностью рабочую систему (учитывая, что Linux я видел в первый раз в жизни), мне понадобилось около недели.

Сейчас все иначе. На установку системы в зависимости от дистрибутива и производительности компьютера уходит 15–40 минут. После этого в большинстве случаев вы получаете полностью рабочую систему. Вам останется только настроить соединение с Интернетом и доустановить необходимые программы. Если вы знаете, что делаете, то все это займет еще час, пусть два. А если не знаете, максимум — 1 день. Установка программ тоже стала намного проще — вам больше не нужно вручную бороться с зависимостями, надо только указать менеджеру пакетов, какой пакет вам хочется установить, — все дополнительные пакеты будут установлены автоматически.

Конечно, есть частные случаи, когда не удается сразу заставить работать то или иное устройство, например Wi-Fi-адаптер. Но это частные случаи. Помню, в Windows тоже пытался 4 часа настроить звуковую плату, причем драйвер у меня был…