Скачай курс
в приложении
О курсе
В рамках представленного курса слушатели познакомятся с операционной системой Linux и её базовыми возможностями. Наличие установленного Linux на компьютере не требуется, так как мы начнём знакомство с этой операционной системой с самого начала, а именно с ее установки.
Далее в курсе будут рассмотрены основные возможности графического интерфейса Linux, которые очень напоминают знакомые большинству слушателей Windows или Mac OS X. После этого мы перейдем к изучению работы через командную строку, которая поначалу может показать не очень удобной, но постепенно станут понятны ее преимущества над графическим подходом.
Следующий блок курса посвящен работе на удаленном сервере. Мы научимся заходить на него, запускать различные программы удаленно, а также копировать результаты их выполнения на свой локальный компьютер для дальнейшего анализа.
Заключительная часть курса рассматривает несколько продвинутых тем, включающих в себя основы написания скриптов на языке bash, использование многофункционального текстового редактора vim и другие.
В течение курса всем слушателям будет предложен ряд тестов и практических заданий на понимание и использование системы Linux. Кроме того, будет и несколько заданий по написанию небольших программ на языке bash.
Для кого этот курс
Пользователи с опытом работы в Windows или Mac OS X и желанием освоить Linux.
Курс рассчитан на начинающих пользователей Linux и не требует никаких предварительных знаний об этой операционной системе и даже её наличия на своем компьютере. Для более продвинутых пользователей интерес могут представлять отдельные занятия курса (например, про работу с удаленным сервером или про программирование на языке bash). Для прохождения курса также будет полезно (но необязательно) знание английского языка на уровне чтения технических текстов.
Уроки по Linux
Linux — это семейство Unix-подобных операционных систем (сокр. «ОС»), использующих ядро Linux, которое разработал финно-американский программист Линус Торвальдс. ОС, использующие ядро Linux, называются дистрибутивами Linux, и они являются такими же операционными системами как Microsoft Windows и Apple macOS, но с одной очень важной особенностью, а именно: их исходные коды являются открытыми, так как они распространяются под лицензией GNU GPL, которая подразумевает создание свободного и открытого программного обеспечения (open source software).
Linux существует вокруг нас с середины 1990-х годов. Вы можете встретить его повсюду: в телефонах, ноутбуках, наручных часах, суперкомпьютерах, автомобилях и даже в холодильниках. Он обрел известность как среди разработчиков, так и среди обычных пользователей компьютеров.
Операционные системы на базе ядра Linux пользуются популярностью в разработчиков, так как поддерживают почти все наиболее часто используемые языки программирования: C/C++, Java, Python, Ruby и др. Кроме того, они облегчают работу с широким спектром полезных приложений для разработки ПО.
Целью данных уроков — Уроки по Linux для начинающих — является помочь новичкам разобраться в теме Linux.
Примечание: Уроки регулярно добавляются и обновляются. В процессе построения логической структуры и последовательности тем для изучения Linux, расположение уроков может меняться, и вы можете видеть, что последовательность уроков на этой странице отличается от последовательности в конце каждой статьи. Это не ошибка, а лишь временное явление.
Поделиться в социальных сетях:
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
Как показывает читательский отклик, интерес к решениям на базе Linux весьма и весьма велик, в тоже время уровень подготовки администраторов в этой области оставляет желать лучшего. Свидетельство тому, бесконечно повторяющиеся простейшие вопросы в комментариях. Во многом, это следствие того, что наши инструкции можно выполнить «дословно» и получить работающий, результат. Но есть и обратная сторона медали, такой подход не предусматривает появлению системных знаний, оставляя знание предмета на фрагментарном уровне.
Да, кроме практических материалов, мы всегда стараемся публиковать обзоры, посвященные какой-либо технологии в целом, или делаем обширные теоретические отступления, для того, чтобы читатель имел необходимый минимум знаний. Однако все они подразумевают, что читатель обладает базовыми знаниями системы в которой работает.
А как быть с теми, кто только делает свои первые шаги? К сожалению, в IT-сообществе существует некоторый снобизм, мол, чего об этом говорить, это и так все знают, или «гугл в помощь», забывая, что каждый из нас когда-то был новичком и с мистическим ужасом смотрел в черный экран Linux-консоли, абсолютно не понимая, куда он попал и что ему делать.
В итоге новичок, столкнувшись с первыми трудностями, вынужден идти искать знания в другом месте и хорошо если такое место удастся быстро найти. Поэтому мы решили выпустить небольшой цикл материалов, в котором на доступном уровне изложить основы администрирования Linux систем, буквально объясняя на пальцах «общеизвестные вещи», опытные пользователи могут пропустить данный цикл, а могут и прочитать, заодно обновив свои знания.
Итак, вы решили стать Linux администратором.
Итак, вы решили стать. Прежде всего будьте готовы воспринимать новое, в частности новый подход к администрированию, постаравшись на время забыть о сложившихся привычках. На долгое время вашим основным инструментом станет консоль.
Но существуют же графические инструменты администрирования, скажет иной читатель, панели там разные, или можно же поставить графическую оболочку. Можно, но не нужно. Почему? Внимательно посмотрите на схему ниже:
Linux, создававшийся по образу и подобию UNIX-систем, является полноценной системой и без графической оболочки, более того мы можем запустить, закрыть или вообще сменить графическую оболочку без какого-либо влияния на работоспособность системы и даже без ее перезагрузки. Завершили сеанс Gnome, запустили KDE, а потом и вовсе вышли в консоль. Поэтому все инструменты управления системой разработаны для использования в режиме командной строки. А все панели и графические инструменты являются всего лишь надстройкой над ними.
Windows долгое время разрабатывался по принципиально иной технологии, графическая оболочка была поставлена в основу системы и долгое время даже выполнялась на уровне ядра (семейство Win 9x). Поэтому все инструменты администрирования были изначально графическими, а инструменты командной строки скорее их дополняли, чем заменяли. Любой, кто занимался восстановлением Windows, знает, что возможности инструментов командной строки там существенно ограничены и предназначены в первую очередь для восстановления системы, а не для ее администрирования.
А еще режим командной строки дает неограниченные возможности в создании собственных скриптов и сценариев, позволяющих выполнять сложные последовательности действий в автоматическом режиме или по расписанию.
После этого, как нам кажется, вы должны будете посмотреть на консоль Linux совсем с другой стороны. Что касается панелей и графических инструментов, то тут есть существенные отличия от Windows-систем. В Windows графические инструменты являются полноценной альтернативой PowerShell. В Linux графические инструменты являются надстройкой над консолью, по факту используя те-же самые инструменты, но через дополнительную прослойку. Поэтому мы категорически не рекомендуем использовать разного рода панели и иные графические инструменты, по крайней мере до тех пор, пока вы не освоите консоль. После этого вы уже сможете самостоятельно решить, нужна ли вам панель или вы способны сделать все проще и быстрее через консоль.
Увлечение панелями на раннем этапе знакомства с системой приводит к тому, что навыки администрирования системы будут подменены навыками работы с панелью, что черевато проблемами, когда панель по какой-либо причине окажется недоступной, а работать с системой надо. Это можно сравнить с тем, что человек учившийся вождению автомобиля с механической коробкой без проблем пересядет на автомат, а человек изначально умеющий ездить только на автомате вряд-ли сможет без дополнительного обучения поехать на машине с механикой.
Если вы еще не передумали становиться Linux-администратором, то поедем дальше и рассмотрим отличия в архитектуре системы.
Ядро и драйвера
Основу любой операционной системы составляет ядро. Существует несколько различных архитектур ядра, Linux, как и подавляющее большинство UNIX систем, использует монолитное ядро, Windows наоборот использует концепцию микроядра, хотя по-настоящему архитектура Windows микроядерной не является, принято считать, что Windows использует гибридное ядро.
Особенностью монолитного ядра является то, что все драйвера оборудования также являются частью ядра. Ранее, при изменении аппаратной части, ядро надо было пересобирать, сегодня монолитные ядра используют модульную схему, т.е. динамически позволяют загружать необходимые модули, отвечающие за тот или иной функционал. Т.е. добавив в систему новое устройство, мы должны динамически загрузить соответствующий модуль ядра, а если такого модуля нет, то работа с устройством окажется невозможной. В качестве решения мы можем собрать модуль самостоятельно, но при этом модуль будет скомпилирован под текущую версию ядра и при его смене модуль нужно будет перекомпилировать.
В микроядерной и гибридной архитектурах, драйвера, хоть могут и работать на уровне ядра, его частью не являются и от версии ядра не зависят. Поэтому мы можем без проблем обновлять ядро или использовать один и тот-же драйвер для всех версий систем с общей структурой ядра. Например, в Windows для всего семейства современных ОС, от Windows Vista до Windows 8.1, часто используется один и тот-же драйвер.
Файловая система
Мы не будем касаться конкретных файловых систем, тут проблем возникнуть не должно, если администратор работал с Windows системами, то что такое файловая система и чем FAT отличается от NTFS он знает, поэтому разобраться в разнице между ext3, ext4 и, скажем, ReiserFS для него особого труда не составит. А поговорим о фундаментальных отличиях. В отличие от Windows, файловая система Linuх иерархична. Она начинается от корня, который обозначается знаком / (слеш), и имеет древовидную структуру. При этом абсолютно не имеет значения, что отдельные части файловой системы могут находиться на других разделах или вообще физических дисках.
Рассмотрим еще одну схему.
В Windows каждый раздел имеет собственную файловую систему и обозначающую его букву. Все пути к файлам и папкам начинаются с буквы, т.е. от корня раздела. Так если у нас на первом физическом диске, на втором логическом разделе была папка DATA, то путь к ней соответственно будет как D:\DATA, если мы захотим перенести ее на второй жесткий диск, то ее пусть изменится на E:\DATA. В ряде случаев это жутко неудобно, так как путь надо изменить во всех местах ее использования и даже существуют соответствующие утилиты.
В Linux подход кардинально иной. Самое время познакомиться с термином точка монтирования, который означает место файловой системы, куда подключается устройство хранения данных. Например, мы хотим вынести домашние каталоги пользователей на отдельный раздел, как на схеме выше, для этого нам нужно смонтировать второй логический раздел первого физического диска sda2 в /home. После чего перенести туда все пользовательские данные. Для системы и программ это произойдет абсолютно прозрачно, они как использовали абсолютный путь, скажем /home/andrey/data, так и будут его использовать. Добавили еще один диск и хотим вынести туда директорию /var? Нет проблем, останавливаем использующие каталог службы, монтируем sdb1 в /var и переносим данные, запускаем службы.
Всё есть файл
Еще один основополагающий принцип, который унаследован от UNIX-систем. В Linux всё есть файл: устройства, диски, сокеты и т.д., например, открыв /var/run мы увидим pid-файлы, соответствующие каждой запущенной службе в системе, а в /dev файлы каждого подключенного к системе устройства:
Хотим заменить жесткий диск? Нет ничего проще, копируем содержимое одного файла блочного устройства в файл другого блочного устройства:
И не нужно никаких Partition Magic.
Другая ситуация, какое-либо ПО настоятельно ищет библиотеку lib-2-0-1.so, а у нас есть совместимая с ней, но более новая, lib-2-1-5.so, как быть? Создаем символическую ссылку на lib-2-1-5.so с именем lib-2-0-1.so и все будет работать. Потому что все есть файл и символическая ссылка тоже тип файла. А теперь попробуйте подсунуть Windows приложению lib-2-0-1.lnk вместо lib-2-1-5.dll.
Или нам нужно сохранить вывод какой-либо команды. Например, команда
выведет на экран сведения о сетевых адаптерах системы:
А теперь вспоминаем, что все есть файл, в том числе и устройство отображения (экран), поэтому просто перенаправим стандартный поток вывода вместо экрана в нужный нам файл:
После чего вывод команды будет сохранен в файл 123.txt в корневой директории пользователя:
Потоки и конвейер
В прошлом примере мы затронули стандартный поток вывода. В Linux существуют стандартные для всех процессов потоки ввода-вывода данных stdin, stdout и поток вывода ошибок stderr. Что это значит? Как минимум то, что процесс обмена данными между различными процессами стандартизован. Это позволяет создавать конвейеры, когда стандартный поток вывода одной команды передается стандартному потоку ввода другой. Например, мы хотим посмотреть список установленных пакетов в системе, в частности пакеты squid. Для этой цели есть команда:
Ээээ. Это что такое и как тут что-то понять? На экране быстро промелькнули сведения о всех установленных в системе пакетах и все что мы можем видеть, это «хвост» этого вывода:
Но ведь нам и не нужен весь вывод этой команды, нас интересуют исключительно пакеты squid. Поэтому направим вывод этой команды на ввод другой, которая уже отберет и покажет то, что нам нужно:
Вот это совсем другое дело!
Причем конвейер может быть сколь угодно длинным, результат работы одной команды можно передавать второй, от второй к третьей и т.д. Еще один пример из жизни. Вам надо получить все строки вашего конфигурационного файла squid, но без комментариев и пустых строк, чтобы, например, выложить на форуме или отправить другу. Можно конечно скопировать все, но вряд-ли кто-то захочет вам помогать, прокручивая полотно стандартного файла squid.conf, большая часть которого комментарии и примеры. Делаем проще:
И вот что у нас получилось:
Просто и понятно, все опции как на ладони. Это стало возможным в результате использования конвейера трех команд, первая вывела в поток содержимое файла, вторая отобрала все строки кроме комментариев, а третья удалила пустые, результат мы направили в файл.
Буквы большие, буквы маленькие
Расширения и типы файлов
В Windows системах тип файла определяется его расширением, если мы переименуем exe-файл в jpg, то он не запустится, и система будет пытаться обработать его как картинку. В Linux тип файла определяется по его содержимому и расширение используется исключительно для совместимости с другими системами или для удобства пользователя. Возможность исполнения файла обеспечивается установкой соответствующего атрибута. Так в Windows чтобы сделать скрипт исполняемым, надо было изменить расширение с txt на bat, в Linux для этого нужно сделать файл исполняемым. Непонимание этого момента приводит к ситуациям, когда начинающий администратор не понимает, почему его скрипт myscript.sh не выполняется. На самом деле расширение .sh нужно только для удобства, чтобы сразу было ясно, это скрипт Bash Shell, а чтобы он работал, ему надо поставить атрибут исполняемого, а называться он может как угодно, хоть myscript.pupkin-vasya.
Стесняюсь спросить.
Позвольте, скажет иной читатель, это ведь сколько всего надо помнить: синтаксис команд, ключи, опции и т.д., и т.п. Тут нужно справочник покупать или всегда интернет под рукой держать. Вовсе нет, достаточно помнить названия команд, это как раз несложно, по сложившимся в UNIX традициям, командам дают короткие и удобные имена. А все остальное можно спросить у системы. Вопреки распространенному мнению, Linux системы прекрасно документированы. Посмотреть синтаксис и ключи любой команды можно запустив ее с ключом —help, а так как описания обычно не помещаются на один экран, то следует перенаправить вывод справки утилите more, которая выведет информацию поэкранно. Допустим, нас интересует команда grep:
Более подробную информацию можно получить с помощью команды man:
К сожалению, информация на английском, но знание технического английского, хотя бы на уровне «читаю со словарем» необходимое требование к системному администратору. Вам ничего не напоминает последний скриншот? Правильно, OpenNET.
Нисколько не умаляя значение этого ресурса, можно сказать, что взяв на вооружение команду man и базовые познания в английском, OpenNET вы будете посещать гораздо реже.
Заключение
Надеемся, что после прочтения данной статьи начинающие администраторы будут лучше себе представлять устройство Linux-систем и их принципиальные отличия от привычного им Windows. Это позволит в дальнейшем правильно интерпретировать получаемую информацию и складывать из нее целостную картину функционирования системы, которая перестанет быть «черным ящиком», а команды «китайской грамотой».
Не нужно бояться командной строки, Linux предоставляет в руки администратора очень мощный набор инструментов, который позволяет успешно решать все возникающие задачи без привлечения сторонних средств. Когда вы освоите хоть часть этих возможностей, то Linuх перестанет казаться вам сложным, а консоль мрачной, наоборот, даже располагая графической оболочкой вы будете запускать терминал, окунаясь в привычную и понятную среду, понимая, что системой управляете именно вы и делаете именно то, что хотите, а не что, что задумали разработчики очередной панели.
Дополнительные материалы:
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Уроки Linux
Linux для начинающих / Урок #1 – Что такое дистрибутивы, Bash Shell и Ubuntu?
Видеоурок
ОС Linux
Данная операционная система была разработана Линусом Торвальдсом. Его идея создать открытую операционную систему стала культовой и уже с первых дней Linux обрел множество поклонников. На момент её создания, а это 1991 год, главным конкурентом была ОС Windows.
ОС Windows сейчас и ранее проповедует идею закрытой ОС, что должна покупаться по отдельности для каждого ПК. И в таком контексте новая, полностью открытая ОС не могла не произвести фурора. Линус Торвальд в то время еще шутил: «В мире без стен – окна не нужны». Крутая отсылка на продукт от Microsoft ✔
Идея ОС Линукс в её открытости.
Линукс – это семейство Unix-подобных операционных систем. Unix – торговая марка, что обозначает семейство многозадачных и многопользовательских операционных систем. Простыми словами, Unix системы изначально разрабатывались под многопользовательские многозадачные системы. Это позволяет одновременно работать сразу с несколькими терминалами, разными людьми, при этом каждый из них может выполнять свои действия, что будут использовать ресурсы одного общего ПК.
Простой пример
На Виндовс у вас всегда есть один экран. Это главный экран, на котором можно открывать приложения. В Unix системах вы всегда можете иметь множество окон и на каждом из них может быть выполнена своя определенная работа.
Кстати, операционная система Mac OS разработана на основе семейства Unix. Считается, что как раз этот фактор позитивно выделяет всю систему и делает ее более плавной и удобной в сравнении с Виндовс.
Почему Линукс выбирают программисты?
Windows обогнала Linux и стала общепризнанным стандартом по причине своей портативности. Её легко можно установить и она идеально подходит для ежедневного использования.
Проблема Windows в том, что она является закрытой системой. Вы можете делать приложения под Виндовс или под Mac, но все эти ОС будут ограничивать вас, не давая доступа к некоторым функциям. При разработке под Linux вы имеете такую свободу, какую только можете себе представить.
В Линукс полностью открытое ядро, а это означает что вы можете создавать новые операционные системы на основе уже готового ядра.
Разница в том, что на Windows или Mac вы можете создать программу. Она будет великолепной, но все же программой. На Линукс вы можете создать свою операционную систему, а позже для неё можете создать еще и программу.
И конечно же, Линукс можно использовать под разные задачи. По этой причине на различных серверах обычно стоит именно Линукс, так как его можно переделать именно под ваш сервер и под ваши нужды.
Что такое дистрибутивы?
Дистрибутивы это полноценные оболочки или другими словами операционные системы, что были созданы на основе ядра Линукс. Поскольку Линукс предоставляет возможность создания своей ОС, то многие из разработчиков воспользовались этим.
Дистрибутивов существует невероятно большое количество. Среди популярных можно выделить:
Некоторые из них максимально схожи на Виндовс, например, Ubuntu или Mint. Другие же могут предоставлять только командный интерфейс, без графической оболочки.
Кстати, операционная система Андроид также является дистрибутивом, что создан на основе ядра Линукс. Вы только представьте, на основе Линукс был создан весь современный Андроид.
Если говорить про сервера, то там есть свои дистрибутивы. Линукс используется по причине своей безопасности, меньшей нагрузки и возможности полной трансформации под свои нужды.
Windows, к сожалению, всем этим похвастаться не может. Windows – идеальный вариант, если вы не хотите мучаться с установкой и настройкой, а просто хотите получить готовую операционную систему.
Как выбрать верный дистрибутив?
Дистрибутивов действительно очень много и выбирать нужно исходя из ваших потребностей. Проще всего найти различные подборки дистрибутивов в интернете и посмотреть на что они способны и под какие задачи были разработаны.
К примеру, если нам нужен легкий интерфейс для плавного входа в Линукс, то проще всего взять такие дистрибутивы как Ubuntu или же Mint.
В самом начале мы предлагаем вам разобраться в одном из основных дистрибутивов – Ubuntu. Именно его мы будем устанавливать и именно с ним будем работать.
В будущем вы по необходимости сможете установить другие оболочки, а общий принцип работы с ними будет примерно таким же, ведь ядро у всех оболочек остается неизменным.
Информация про Ubuntu
Ubuntu – один из наиболее популярных дистрибутивов. По данным статистики им пользуются около 20 миллионов людей по всему миру. Ubuntu содержит удобный и красивый пользовательский интерфейс.
Следующий фактор может показаться странным для Windows пользователей, но удобства Ubuntu в том, что большинство действий вы можете сделать при помощи мыши, а не при помощи написания команд в терминале.
Скрипты Bash Shell
Bash скрипт – файл, что содержит список команд для выполнения в ОС Линукс. При помощи Bash скрипта вы можете выполнять управление вашей операционной системой. Сам же Bash Shell является усовершенствованной вариацией командного терминала.
Простой пример
Вам нужно зайти в браузер, найти сайт, проверить на нем данные и позже закрыть браузер. Все это можно сделать через графический интерфейс, но также вы можете автоматизировать эти действия, прописав Bash скрипт и выполнив его.
В ходе курса мы научимся прописывать Bash скрипты, что будут выполнять действия связанные с вашим ПК.
План курса
В курсе мы рассмотрим все тонкости по работе с Linux. Мы научимся её устанавливать, работать с графическим интерфейсом, познакомимся с различными командами из терминала, изучим работу с пакетным менеджером, научимся устанавливать программы внутри Linux и, конечно же, создадим несколько Bash скриптов для управления ПК.
Перед прохождением курса вам не нужно иметь никаких дополнительных знаний. Все необходимое будет изучено в курсе.