Что является стандартом для дистанционной работы с системами на основе linux

Обновлено: 04.07.2024

Курс рассчитан на получение начальных знаний о системном и сетевом администрировании ОС Linux. Курс дает возможность пользователю получить твёрдые навыки при работе с операционной системой Linux, познакомиться со строением операционных систем семейства Unix, научиться эффективно ее использовать. Основной целью курса является получение обучаемым фундаментальных навыков администрирования Linux.

В процессе обучения вы познакомитесь с файловой системой Linux (основными понятиями, командами навигации и управления файлами, структурой файловой системы); системой распределения прав (учетные записи, группы, права доступа на файлы, в том числе и специальные права доступа); методам эффективного контроля и управления процессами; методам работы с командными оболочками и основам создания сценариев; планированием заданий и средствами для управления запланированными заданиями; принципам инициализации системы SVR4; познакомитесь с основами стека TCP/IP и базовыми инструментами для работы с сетью в Linux.

Дополнительные курсы

  • Операционная система Linux
  • Основы работы в ОС Linux
  • Операционная система UNIX
  • Администрирование ОС Unix
  • Системное администрирование ОС Solaris 10
  • Введение в администрирование ОС Solaris 10
Сдать экзамен экстерном
Лекция 1
Введение в операционную систему Unix

Познакомить обучаемых с предметом обучения: Unix-way, история Юникс, разновидности Юникс. Линукс, что такое Linux, средства просмотра системной информации.

Тест 1
6 заданий
Лекция 2
Файловая система Linux

Основные понятия: корневой каталог, точка монтирования, домашний каталог, типы файлов. Обычные файлы. Каталоги. Файлы устройств. Команды. Навигация по файловой системе: команды cd, pushd, popd, pwd. Создание, удаление и копирование файлов. Команды touch, rm, cp. Операции с каталогами. Команды mkdir и rmdir. Важнейшие каталоги файловой системы Linux.

ОС Linux появилась сначала только как ядро системы. К сожалению, ядро само по себе не очень полезно; программам нужна регистрация, управление файлами, компиляция новых программ и т.д. Для того чтобы сделать систему полезной, в рамках проекта GNU были добавлены разные средства. Они представляли собой клоны похожих программ, имевшихся в UNIX и UNIX-подобных системах того времени. Превращение системы Linux в подобие UNIX-системы установило первые стандарты для Linux, предоставляя программистам на языке С знакомую рабочую среду.

Разные разработчики ОС UNIX (а позднее Linux) вставляли собственные расширения в команды и утилиты, которые включали в состав системы, и структура используемых ими файловых систем тоже слегка отличалась. Все это затрудняло создание приложений, способных выполняться в разных системах. Более того, программист не мог даже полагаться на то, что функциональные возможности системы были реализованы одинаково, или файлы конфигурации хранились в одном и том же месте.

Стало ясно, что для сохранения подобия UNIX-систем нужна стандартизация, и такая работа сейчас ведется.

Со временем не только стандарты двигались вперед, но и ОС Linux с впечатляющей скоростью совершенствовалась сообществом, поддержанным коммерческими организациями, такими как Red Hat и Canonical, и даже разработчиками не-Linux, например, корпорацией IBM. По мере развития Linux наряду с разработкой коллекции компиляторов gcc не только следила за соответствующими стандартами, но и определяла новые стандарты, если существующие оказывались неэффективными. В действительности по мере того, как ОС Linux и связанные с нею программные средства и утилиты становились все более популярными, разработчики UNIX-систем начали вносить изменения в свои продукты, чтобы сделать их более совместимыми с ОС Linux.

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

В особенности мы коснемся следующих тем:

Мы не собираемся подробно рассматривать содержание стандартов, многие из которых по объему сравнимы с данной книгой. Мы хотим обратить ваше внимание на ключевые стандарты, о которых следует знать, дать вам краткие исторические сведения о том, как развивались эти стандарты, и помочь решить, какие из них могут оказаться полезными при написании ваших собственных программ.

Язык программирования С — de facto язык программирования ОС Linux, поэтому, для того чтобы писать программы на С для Linux, необходимо немного разобраться в его истоках, узнать, как менялся язык, и, что особенно важно понять, как проверяются программы на соответствие стандартам.

Тем, кто не слишком любит историю, не стоит беспокоиться: эта книга о программировании, а не об истории, поэтому обзор будет очень кратким.

Язык программирования С появился в начале 1970-х годов и был основан отчасти на более раннем языке программирования BCPL и расширениях для языка В. Деннис Ритчи (Dennis М. Ritchie) написал руководство пользователя для языка в 1974 г., и примерно в это же время С был использован как язык программирования для переработки ядра UNIX на компьютерах PDP-11. В 1978 г. Брайан Керниган (Brian W. Kernighan) и Ритчи написали классическое руководство по, языку "The С Programming Language" ("Язык программирования С").

Очень быстро язык приобрел большую популярность, обусловленную, несомненно, отчасти быстрым ростом популярности UNlX-систем, но также и своими возможностями и понятным синтаксисом. Синтаксис языка С продолжал развиваться согласованно, но по мере того, как он изменялся все больше и больше по сравнению с первоначальным описанием, приведенным в книге, становилось ясно, что нужен стандарт, который соответствовал бы современному употреблению и был более строгим.

В 1983 г. ANSI (American National Standards Institute, Американский институт стандартов) основал комитет стандартов X3J11 для разработки четкого и строгого определения языка. Попутно обе организации вносили в язык незначительные изменения, в особенности придавая ему долгожданную способность объявлять типы параметров, но в основном комитет просто вносил ясность и логическое обоснование существующего определения того, что составляло общеупотребительный вариант языка. Окончательный стандарт был опубликован в 1989 г. как ANSI Standard Programming Language С, X3.159-1989 или более кратко C89, иногда именуемый C90. (Этот последний превратился в стандарт ISO/IEC 9899:1990, Programming Languages — С. Оба стандарта формально идентичны.)

Как и для большинства стандартов, публикация не закончила работу комитета, который продолжал устранять некоторые неточности, обнаруженные в спецификации, и в 1993 г. начал работу над новой версией стандарта, названного C9X. Комитет также публиковал, незначительные корректировки и обновления существующего стандарта в 1994-1996 гг.

После разработки редактора Emacs (да, мы любим Emacs) следующим важным достижением проекта GNU, как упоминалось в главе 1, стал полностью бесплатный компилятор С, gcc, первая официальная версия которого была выпущена в 1987 г.

Первоначально имя gcc расшифровывалось как GNU С Compiler (компилятор С проекта GNU), но, поскольку базовая рабочая среда компилятора теперь поддерживает много других языков программирования, таких как С++, Objective-C, FORTRAN, Java и Ada, а также библиотеки для этих языков, определение было заменено на более подходящее GNU Compiler Collection (коллекция компиляторов GNU).

Компилятор С GNU всегда хорошо отслеживал развитие стандарта языка С, хотя он допускает некоторые расширения языка, и, безусловно, существуют незначительные задержки, как почти у всех компиляторов, между выходом стандарта и появлением версий компиляторов, точно следующих этой спецификации. Порой происходит обратное, и gcc предвосхищает слабые изменения стандарта, что тоже может совершенно сбивать с толку. У gcc есть ряд опций командной строки и других, позволяющих задать версию стандарта языка С, которой должен соответствовать компилятор, а также ряд других опций для управления степенью придирчивости или строгости компилятора.

Теперь, когда вы узнали кое-что о стандарте С, давайте рассмотрим опции, которые предлагает компилятор gcc для гарантии соответствия стандарту языка С, на котором вы пишете. Есть три способа, позволяющих убедиться в том, что ваш код на С соответствует стандартам и не содержит изъянов: опции, контролирующие версию стандарта, соответствия с которой вы намерены добиваться, определения, контролирующие заголовочные файлы, и опции предупреждений, инициирующие более строгую проверку программного кода.

У gcc есть огромный набор опций, и здесь мы рассмотрим лишь те из них, которые считаем наиболее важными. Полный перечень опций можно найти на страницах интерактивного справочного руководства gcc. Мы также кратко обсудим некоторые опции директивы

которые можно применять; обычно их следует задавать в вашем исходном программном коде перед любыми строками с директивой или определять в командной строке gcc. Вас может удивить такое обилие опций для выбора применяемого стандарта вместо простого флага, заставляющего использовать современный стандарт. Причина заключается в том, что много более старых программ полагается на исторически сложившееся поведение компилятора и потребовалась бы значительная работа по их обновлению в соответствии с последними стандартами. Редко, если вообще когда-нибудь, вам захочется обновить компилятор для того, чтобы он начал прерывать работающий программный код. По мере изменения стандартов важно иметь возможность работать вопреки определенному стандарту, даже если это и не самая свежая версия стандарта.

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

Опции компилятора для отслеживания стандартов

Приведенные далее опции передаются gcc в командной строке; мы перечисляем здесь только самые важные из них.

Правильные ответы выделены зелёным цветом.
Все ответы: В курсе даются основные понятия операционной системы Linux и важнейшие навыки работы в ней. Изложение сопровождается большим количеством практических примеров. Данный курс может рассматриваться как учебник для студентов, начинающих обучение по специальностям в области информатики и ещё не знакомых с ОС Linux.

Идентификатор администратора системы (пользователя root ) равен:

(1) Аппаратно реализованная часть загрузки системы, в отличие от вторичного загрузчика, реализованного программно

(2) Программа, записанная в ПЗУ, определяющая местонахождение и тип операционной системы

(3) Программа, работающая со стартовым виртуальным диском, в отличие от вторичного загрузчика, работающего с полным вариантом системы

(4) Маленькая программа в заранее известном месте диска, задача которой — найти и загрузить вторичный загрузчик

(1) Любой тип объектов файловой системы, кроме собственно файлов и каталогов

(2) Особый объект файловой системы, называемый также символьным устройством

(3) Класс объектов файловой системы, обмен данными с которыми не приводит к обращению к содержимому какого-либо определённого файла

(1) Полностью определяет состояние работающей системы

(2) Полностью определяет поведение системы на данном пользовательском наполнении

(4) о размере и атрибутах каждого файла, принадлежащего пакету

Разделение сетевых протоколов на уровни не позволяет

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

(2) Одновременно обмениваться данными посредством нескольких различных сред передачи данных

(3) Передавать несколько пакетов более высокого уровня в одном пакете более низкого уровня

(4) Передавать один пакет более высокого уровня с помощью нескольких пакетов более низкого уровня

Какой параметр сети можно задавать с помощью утилиты ifconfig ?

(4) Список интерфейсных адресов абонентов локальной сети

В оконном интерфейсе субъектом с точки зрения системы является

(3) задача, выводящая и вводящая данные в рамках окна

Для редактирования «плоского» текста на удалённом компьютере пользователю потребуется

(2) Клиент Secure Shell на рабочей станции и текстовый редактор ( vim , ncedit или joe ) на удалённом компьютере

(3) Любой текстовый редактор на рабочей станции, имеющий встроенный сервер Secure Shell

(1) указать, кто является обладателем всех прав на это программное обеспечение

(2) определить круг прав пользователя по отношению к этому программному обеспечению

(3) определить, на каких условиях можно продавать данное программное обеспечение

(4) сделать данное программное обеспечение свободным

Основное средство взаимодействия пользователя и ОС Linux

(2) файл особого типа, содержащий ссылки на другие файлы и каталоги

(3) список подкаталогов следующего уровня вложенности

Уникальным идентификатором файла в файловой системе является:

(4) номер индексного дескриптора каталога, в котором находится файл

(3) UID и GID объекта, список GID, членом которых является хозяин объекта, тип объекта и его атрибуты

(1) программа, которая читает со стандартного ввода, а выводит на стандартный вывод

(2) связанная пара дескрипторов, где данные, записанные на входной дескриптор, сразу доступны для чтения с выходного

Управляющий символ “ ^W ” (удаление слова) действует на

(2) любой ввод с терминала, если не изменены настройки терминала

(3) любой ввод с терминала, только если программа использует библиотеку readline

(4) только ввод командной строки любого командного интерпретатора

(1) текст, который состоит только из печатных (отображаемых на экране) символов

(2) текст, в котором не содержится никакой метаинформации об оформлении

(3) формат файлов, который используется текстовыми редакторами

(1) Изменять настройки некоторой службы или последовательность выполнения некоторых сценариев без редактирования файлов

(2) Помещать все конфигурационные файлы и сценарии служб в один специальный каталог

(3) Изменять любые настройки службы без редактирования файлов

(4) Изменять содержимое конфигурационных файлов или стартовых сценариев, не редактируя их

(1) Любой раздел диска, указанный в расширенном разделе

(3) Любой раздел диска, кроме первого и расширенного разделов

(3) Большинства конфигурационных файлов и стартовых сценариев

(4) Любых файлов, не попадающих по классификации FHS в специальные каталоги /lib , /var , /bin и т. п.

Какие две из перечисленных ниже задач решаются на сетевом уровне семейства протоколов TCP/IP?

(2) построение пути данных от отправителя к получателю

Чем отличается «таблица» межсетевого экрана iptables от «цепочки»?

(1) Понятие «цепочка» использовалось только в предыдущей версии межсетевого экрана Linux — ipchains . В iptables его заменили более общим понятием «таблица»

(2) Таблицы и цепочки следуют попеременно в произвольном порядке; по действию ACCEPT пакет может покинуть таблицу, но не цепочку

(3) Цепочки iptables состоят из нескольких таблиц; покидая одну таблицу, пакет направляется в другую

(4) Таблицы iptables состоят из нескольких цепочек; покидая одну цепочку, пакет направляется в другую

(1) ко всем утилитам, которые могут быть запущены в Linux

(2) только к свободному UNIX-совместимому ядру, изначально написанному Линусом Торвальдсом

Какая из перечисленных команд не имеет отношения к справочной подсистеме Linux?

Какая из перечисленных строк не может быть именем файла:

Пользователь может управлять фоновым процессом с помощью

(1) предназначенный для совместного хранения файлов несколькими пользователями

(2) из которого пользователь не может удалить не принадлежащий ему файл

(3) в котором пользователь не может модифицировать не принадлежащий ему файл

(4) при просмотре которого пользователем выводятся только имена принадлежащих ему файлов

Что окажется записанным в файле grep.info после такой операции: info grep 2>&1 > grep.info ?

(1) в точности повторяет алгоритм обработки шаблонов

(2) основана на алгоритме обработки шаблонов, однако имеет отличия, связанные со спецификой работы с файлами

(3) использует упрощённый вариант алгоритма обработки шаблонов

(4) использует алгоритм «globbing», который, в отличие от генерации имён файлов в более ранних версиях shell, не основан на понятии «шаблон»

Как, редактируя текст в Vim/Vi, сохранить текст от курсора до конца текущей строки и записать сохранённый фрагмент в самый конец файла?

Команда [someone@localhost someone]$ who am i someone tty4 Oct 13 13:31 (localhost) отдана:

(1) пользователем localhost с любой виртуальной консоли;

(2) пользователем someone с любой виртуальной консоли;

(3) пользователем someone с четвёртой виртуальной консоли;

(1) Собирать файловые системы различных разделов в одно дерево каталогов

(2) Подключать к дереву каталогов содержимое файлов, данные ядра, каталоги на других компьютерах

(3) Использовать журналирование с файловыми системами, в которых оно не предусмотрено

(4) Использовать различные по скорости и надёжности способы доступа к различным подкаталогам

Способ ведения системных журналов Linux называется «централизованным», потому что

(2) С журналами работают различные программы, однако эта работа управляется единым файлом /etc/syslog.conf

Что означают понятия «клиент» и «сервер» на прикладном уровне TCP/IP?

(1) Клиент — тот, кто устанавливает соединение, сервер — тот, кто отвечает на него

(2) Клиент — тот, кто запрашивает данные, сервер — тот, кто передаёт их

(3) Сервер — тот, кто устанавливает соединение, клиент — тот, кто пользуется установленным соединением

(1) Регламентируют доступ к почтовому ящику, при этом SMTP не требует идентификации пользователя, а POP3, в отличие от IMAP4, поддерживает создание пользователем почтовых ящиков на сервере

(2) запуск пользовательского сценария .xinitrc , а при его отсутствии — системного сценария xinitrc

(3) настройку окружения, запуск X-сервера и диспетчера окон или рабочего стола

(4) запуск X-сервера и затем X-приложений, указанных в сценарии .xinitrc пользователя, системном сценарии xinitrc или в командной строке

При использовании алгоритмов сжатия звука «с потерей качества»

(2) Звучание исходного и сжатого файлов на слух неразличимо

(3) Из сжатого файла нельзя получить исходный, а искажения звука зависят от качества сжатия

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

Необходимость в дистрибутивах Linux возникла, когда

(1) появились пользователи, желающие установить скомпилированное ядро Linux и набор утилит на свой компьютер

(2) появились пользователи, готовые купить операционную систему Linux

(4) немедленно после публикации первой версии ядра Linux

В каком каталоге содержатся файлы, которые не могут совместно использоваться несколькими компьютерами в сети:

Standard Base Linux ( LSB ) был совместный проект нескольких дистрибутивов Linux под организационной структурой Linux Foundation , стандартизировать структуру системы программного обеспечения, в том числе Filesystem Hierarchy Standard используется в ядре Linux . LSB был основан на спецификации POSIX , Single UNIX Specification (SUS) и нескольких других открытых стандартах, но расширил их в определенных областях.

Цель LSB - разработать и продвигать набор открытых стандартов, которые повысят совместимость между дистрибутивами Linux и позволят программным приложениям работать в любой совместимой системе даже в двоичной форме . Кроме того, LSB поможет координировать усилия по привлечению поставщиков программного обеспечения для переноса и написания продуктов для операционных систем Linux.

Соответствие LSB может быть сертифицировано для продукта с помощью процедуры сертификации.

LSB определяет стандартные библиотеки (сосредоточенные вокруг ld-lsb.so ), ряд команд и утилит, расширяющих стандарт POSIX , структуру иерархии файловой системы , уровни выполнения , систему печати, включая спулеры, такие как CUPS, и инструменты, такие как Foomatic , и несколько расширений. в систему X Window . В нем также указаны средства загрузки, такие как $ local_fs , $ network , которые использовались для указания зависимостей служб в сценариях инициализации в стиле System V. Машиночитаемый блок комментариев в верхней части сценария предоставляет информацию, необходимую для определения, в какой момент процесса инициализации сценарий должен быть вызван; это называлось заголовком LSB.

Эта команда lsb_release -a была доступна во многих системах для получения сведений о версии LSB или могла быть доступна путем установки соответствующего пакета, например redhat-lsb пакета в дистрибутивах с добавлением Red-Hat, таких как Fedora , или lsb-release пакета в дистрибутивах на основе Debian.

Стандарт перестал обновляться в 2015 году, и текущие дистрибутивы Linux не придерживаются его и не предлагают его, однако команда lsb_release все еще доступна.


СОДЕРЖАНИЕ

Обратная совместимость

LSB стремится сделать двоичные файлы пользовательского пространства переносимыми

LSB был разработан для обеспечения двоичной совместимости и создал стабильный двоичный интерфейс приложений (ABI) для независимых поставщиков программного обеспечения . Для обеспечения обратной совместимости каждая последующая версия была чисто аддитивной. Другими словами, интерфейсы только добавились; никакие интерфейсы не были удалены. LSB принял политику устаревания интерфейса, чтобы дать разработчикам приложений достаточно времени на случай, если интерфейс был удален из LSB.

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

LSB 5.0 был первым крупным выпуском, в котором была нарушена обратная совместимость с более ранними версиями.

История версий

  • 1.0: первый выпуск от 29 июня 2001 г.
  • 1.1: Выпущено 22 января 2002 г. Добавлены аппаратные спецификации ( IA-32 ).
  • 1.2: Выпущено 28 июня 2002 г. Добавлены аппаратные спецификации ( 32-разряднаяверсия PowerPC ). Сертификация началась в июле 2002 года.
  • 1.2.1: Выпущено в октябре 2002 г. Добавлен Itanium .
  • 1.3: выпущена 17 декабря 2002 г. Добавлены аппаратные спецификации (Itanium, Enterprise System Architecture / 390, z / Architecture).
  • 2.0: выпущена 31 августа 2004 г.
    • LSB модульный для LSB-Core, LSB-CXX, LSB-Graphics и LSB- I18n (не выпущен)
    • Новые аппаратные спецификации ( 64-разряднаяверсия PowerPC , AMD64 )
    • Синхронизирован с единой спецификацией UNIX (SUS) версии 3
    • Библиотека GNU C версии 2.3.4
    • C ++ ABI заменен на тот, который используется в gcc 3.4.
    • Основная спецификация обновлена ​​до ISO POSIX (2003).
    • Технические исправления 1: 2005
    • Библиотека GNU C версии 2.4
    • Двоичная совместимость с LSB 3.x
    • Легче использовать SDK
    • Поддержка новых версий графических библиотек GTK и Cairo.
    • Java (дополнительный модуль)
    • Более простые способы создания пакетов RPM, совместимых с LSB
    • Crypto API (через библиотеку Network Security Services ) (дополнительный модуль)
    • Java удалена
    • Модули «Пробного использования» из LSB 4.0, охватывающие мультимедиа ( ALSA ), безопасность (NSS) и прочее для настольных компьютеров ( xdg-utils ), были продвинуты как требуемые подмодули.
    • Обновлены библиотеки GTK + , Cairo и CUPS.
    • Добавлены три новых набора тестов
    • Библиотека GNU C версии 2.10 (для psiginfo)
    • Первый основной выпуск, который нарушает обратную совместимость с более ранними версиями (совместим с LSB 3.0 и в основном совместим с LSB 3.1 и более поздними версиями, за некоторыми исключениями)
    • Включает изменения, внесенные в FHS 3.0.
    • Библиотека Qt 3 удалена
    • Развитая модульная стратегия; LSB разделен на модули LSB Core, LSB Desktop, LSB Languages, LSB Imaging и LSB Trial Use

    Стандарт ISO

    • ISO / IEC 23360-1: 2006 Базовая спецификация ядра Linux Standard Base (LSB) 3.1 - Часть 1: Общая спецификация
    • ИСО / МЭК 23360-2: 2006 Базовая спецификация ядра Linux Standard Base (LSB) 3.1 - Часть 2: Спецификация архитектуры IA-32
    • ИСО / МЭК 23360-3: 2006 Стандарт ядра Linux Standard Base (LSB), спецификация 3.1 - Часть 3: Спецификация для архитектуры IA-64
    • ISO / IEC 23360-4: 2006 Стандарт ядра Linux Standard Base (LSB), спецификация 3.1 - Часть 4: Спецификация для архитектуры AMD64
    • ИСО / МЭК 23360-5: 2006 Стандарт ядра Linux Standard Base (LSB), спецификация 3.1 - Часть 5: Спецификация архитектуры PPC32
    • ИСО / МЭК 23360-6: 2006 Базовая спецификация ядра Linux Standard Base (LSB) 3.1 - Часть 6: Спецификация архитектуры PPC64
    • ISO / IEC 23360-7: 2006 Базовая спецификация ядра Linux Standard Base (LSB) 3.1 - Часть 7: Спецификация для архитектуры S390
    • ИСО / МЭК 23360-8: 2006 Базовая спецификация ядра Linux Standard Base (LSB) 3.1 - Часть 8: Спецификация для архитектуры S390X

    Также существует ISO / IEC TR 24715: 2006, который определяет области конфликта между ISO / IEC 23360 (спецификация Linux Standard Base 3.1) и международным стандартом ISO / IEC 9945: 2003 (POSIX).

    ISO / IEC 23360 и ISO / IEC TR 24715 можно бесплатно загрузить с веб-сайта ISO.

    Прием

    Хотя LSB был стандартом и не имел конкурентов, за ним последовали лишь несколько дистрибутивов Linux . Например, только 21 выпуск (версия) дистрибутива был сертифицирован для LSB версии 4.0, в частности Red Flag Linux Desktop 6.0, Red Hat Enterprise Linux 6.0, SUSE Linux Enterprise 11 и Ubuntu 9.04 (Jaunty Jackalope) ; еще меньше было сертифицировано для версии 4.1.

    LSB критиковали за то, что он не принимал участие в проектах, в первую очередь проекта Debian , за пределами сферы своих компаний-членов.

    Выбор формата пакета RPM

    В LSB указано, что программные пакеты должны поставляться либо как LSB-совместимая программа установки, либо (предпочтительно) поставляться в ограниченной форме в формате диспетчера пакетов RPM .

    Такой выбор формата пакета исключил использование многих других существующих форматов пакетов, несовместимых с RPM. Чтобы решить эту проблему, стандарт не диктовал, какой формат пакета система должна использовать для своих собственных пакетов, а просто то, что RPM должен поддерживаться, чтобы разрешить установку пакетов от сторонних дистрибьюторов в соответствующей системе.

    Ограничения Debian

    Debian включил необязательную поддержку LSB на раннем этапе, в версии 1.1 в «woody» (3.0; 19 июля 2002 г.), 2.0 в «sarge» (3.1; 6 июня 2005 г.), 3.1 в «etch» ​​(4.0; 8 апреля 2002 г.) 2007), 3,2 для lenny (5,0; 14 февраля 2009 г.) и 4,1 для «wheezy» (7; 4 мая 2013 г.). Чтобы использовать иностранные LSB-совместимые пакеты RPM, конечный пользователь должен использовать программу Debian Alien, чтобы преобразовать их в собственный формат пакетов, а затем установить их.

    Формат RPM, заданный LSB, имел ограниченное подмножество функций RPM - чтобы заблокировать использование функций RPM, которые нельзя было бы перевести в .deb с помощью Alien или других программ преобразования пакетов, и наоборот, поскольку каждый формат имеет возможности, которых нет у другого. На практике не все двоичные пакеты Linux обязательно были LSB-совместимыми, поэтому, хотя большинство из них можно было преобразовать между .rpm и .deb, эта операция была ограничена подмножеством пакетов.

    Используя Alien, Debian был LSB-совместимым для всех намерений и целей, но, согласно описанию их пакета lsb , наличие пакета «не означает, что мы считаем, что Debian полностью соответствует Стандартной базе Linux, и не должен быть истолковано как утверждение, что Debian совместим с LSB ".

    Debian стремился соответствовать LSB, но с множеством ограничений. Однако эти усилия прекратились примерно в июле 2015 года из-за отсутствия интереса и рабочей силы внутри проекта. В сентябре 2015 года проект Debian подтвердил, что, хотя поддержка стандарта иерархии файловой системы (FHS) будет продолжена, поддержка LSB прекращена. Ubuntu последовала за Debian в ноябре 2015 года.

    Качество комплектов тестов на соответствие

    Кроме того, комплекты тестов на соответствие критиковались за то, что они содержат ошибки и являются неполными - в частности, в 2005 году Ульрих Дреппер раскритиковал LSB за плохо написанные тесты, которые могут вызвать несовместимость между LSB-сертифицированными дистрибутивами, когда некоторые из них реализуют некорректное поведение, чтобы заставить ошибочные тесты работать, в то время как другие подать заявку и получить отказ от прохождения тестов. Он также осудил отсутствие тестирования приложений, указав, что тестирование только дистрибутивов никогда не может решить проблему приложений, полагающихся на поведение, определяемое реализацией.

    Для поставщиков, рассматривающих LSB-сертификаты в своих усилиях по переносимости, Linux Foundation спонсировал инструмент, который проанализировал и предоставил рекомендации по символам и библиотекам, выходящим за рамки LSB.

    Изучите необходимый минимум Linux, чтобы быть продуктивным главное изображение

    Разные операционные системы длительное время обслуживают различные аудитории: Windows — бизнес-профессионалов, Mac — творческих, а Linux — разработчиков. Разработчикам ОС такой тип рыночного спектра сильно упростил концепцию продукта, технические требования, пользовательский опыт и направление рынка. Однако, он также ужесточил нормы рабочего пространства, что деформировало отдельных пользователей под узкие, непересекающиеся области: у бизнесменов нет возможности заглянуть в творческий процесс, а у разработчиков нет представления о проблемах бизнеса.

    Для современных бизнес-аналитиков особенно актуален вопрос ликвидации пробела между бизнесом и разработкой. Бизнес-аналитики должны быть двухплатформенными, способными использовать командную строку, доступную только на Linux (или в macOS), но при этом уметь извлекать широкие возможности из Microsoft Office в Windows. Очевидно, что мир Linux пугает тех, у кого образование в сфере бизнеса. К счастью, как и в большем количестве вопросов, вам необходимо изучить 20% информации, чтобы выполнить 80% работы. Вот мои 20%.

    Почему современные бизнес-аналитики должны знать Linux

    Благодаря своим open source корням, Linux выиграл от вкладов тысяч разработчиков за всё время его существования. Они построили программы и утилиты, чтобы упростить работу не только себе, но и тем программистам, которые последовали за ними. В результате open source разработка создала эффект сетевой выгоды: чем больше разработчики строили утилиты на оригинальной платформе, тем больше других разработчиков могло влиять на эти утилиты, чтобы писать собственные программы.

    В результате получился огромный пакет программ и утилит (то есть софт), который был написан на Linux и под Linux. Большая часть его никогда не портировалась в Windows. Один из примеров — популярная система контроля версий (VCS), которая называется git. Разработчики могли написать софт под Windows, но они этого не сделали. Они написали его для работы в командной строке, для Linux, потому что Linux — экосистема, в которой уже были все необходимые инструменты.

    Если вдаваться в подробности, разработка на Windows ведёт к двум основным проблемам:

    1. Базовые задачи, вроде парсинга файлов, рабочего планирования и поиска текста используются чаще, чем запуск утилиты командной строки.
    2. Языки программирования (Python, C++) и связанные с ними библиотеки выкидывают ошибки, потому что они ожидают конкретных параметров Linux или специфических локаций файловой системы.

    Если собрать всё вместе, это выльется в трату времени на переписывание базовых инструментов, которые уже доступны в Linux, они позволят избежать ошибок совместимости с ОС. Тут нет никаких сюрпризов — экосистема Windows просто не была задумана и спроектирована под нужды разработки софта.

    Теперь давайте рассмотрим базовые идеи Linux.

    Фундаментальная единица Linux: "оболочка"

    Shell (оболочка, также известная как терминал, консоль или командная строка) — это текстовый интерфейс пользователя, через который команды отправляются машине. На Linux, по-умолчанию, язык оболочки называется bash. В отличие от Windows-пользователей, которые в своём большинстве используют навигацию "навести-кликнуть" по окну, Linux-разработчики привязаны к клавиатуре и пишут команды в оболочке. Хоть этот переход далёк от естественного для тех, у кого нет бэкграунда в программировании, плюсы разработки в Linux сильно перевешивают изначальное вложение в обучение.

    img

    Изучаем несколько важных концептов

    В сравнении с достаточно зрелым языком программирования, bash имеет всего несколько основных концептов, которые необходимо выучить. Как только вы охватите это, остаток bash — простое запоминание. Я переформулирую понятней: хорошо разбираться в bash значит запомнить 20-30 команд и их часто используемые аргументы.

    Linux кажется непроницаемым для тех, кто не касается разработки, из-за способа, которым разработчики (не напрягаясь) извергают эзотерические команды терминала, когда им захочется. Правда в том, что они хорошо знают только несколько десятков команд — за всем более сложным они так же (как и все смертные) обращаются в Google.

    Опуская мелкие загвоздки, стоящие на пути, вот главные концепты в bash.

    Командный синтаксис

    Команды соответствуют синтаксису:

    Псевдонимы директорий

    • Текущая директория (где я?): .
    • Родительская директория текущей директории: ..
    • Домашняя директория пользователя:

    Например, чтобы поменять текущую директорию на родительскую директорию нужно ввести: cd ..

    Таким же способом, чтобы скопировать файл, расположенный в "/path/to/file.txt" в текущую директорию, нужно ввести cp /path/to/file.txt . (заметьте, что в конце команды точка). Поскольку это всего лишь псевдонимы, вместо них может использоваться реальное имя пути.

    STDIN / STDOUT

    Всё, что вы пишите в окне и подтверждаете (с помощью ENTER), называется стандартным вводом (STDIN).

    Всё, что программа выводит в ответе в терминал (например текст из файла), называется стандартным выводом (STDOUT)

    Конвейер (piping)

    Pipe принимает STDOUT от команды слева от pipe и превращает его в STDIN для команды справа от pipe.

    Символ "больше" принимает STDOUT от команды слева и записывает/перезаписывает в новый файл справа

    пример: ls > tmp.txt

    Два символа "больше" принимают STDOUT от команды слева и добавляют к новому или существующему файлу справа.

    пример: date >> tmp.txt

    Шаблоны поиска (wildcards)

    В bash можно написать John* . Если вы хотите вывести список всех файлов в какой-то папке, заканчивающихся на ".json", пишете : ls *.json

    Завершение с помощью tab

    Bash часто завершает команды сам, по определённой логике, если вы начинаете вводить команду и нажимаете TAB.

    Однако, стоит попробовать что-то вроде zsh или fish для автозаполнения, потому что запоминать команды и все их параметры очень сложно. Более того, эти инструменты применят автозаполнение, основываясь на вашей истории используемых команд.

    Выход

    Иногда вы застреваете в какой-нибудь программе и не можете оттуда выйти. Это очень часто повторяющееся событие для новичков в Linux, которое невероятно демотивирует. Часто выход происходит с помощью чего-то, содержащего q. Хорошо бы запомнить то, что будет написано ниже и использовать, когда вы в ловушке.

    Что я помню из команд bash

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

    • cd изменить директорию
    • ls -lha вывести директорию в виде списка (подробного)
    • vim или nano редактор командной строки
    • touch создать новый пустой файл
    • cp -R скопировать файл или директорию (и всё их содержимое)
    • mv переместить или переименовать файл
    • rm удалить файл
    • rm -rf удалить файл или папку без возможности восстановления [использовать аккуратно!]
    • pwd вывести текущую рабочую директорию
    • cat или less или tail или head -n10 вывести в STDOUT содержимое файла
    • mkdir создать пустую директорию
    • grep -inr найти строку в любом файле этой директории или дочерних директориях

    column -s, -t <delimited_file> отобразить разделенный запятыми файл в виде столбцов

    ssh @ соединиться с удалённой машиной

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

    htop (или top ) диспетчер задач

    pip install --user пакетный менеджер Python для установки пакетов в

    pushd . ; popd ; dirs; cd - push/pop/view директорию в стек + изменить обратно на последнюю директорию

    tmux new -s session, tmux attach -t session создать новую сессию терминала без создания нового окна [продвинутый уровень]

    wget загрузить веб-страницу или веб-ресурс

    find <directory> вывести список всего содержимого директории и её дочерних директорий рекурсивно

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

    Я считаю хорошей практикой хранить список команд, которые полезны в определённых ситуациях, даже если подобные ситуации случаются редко (например, какой процесс блокирует конкретный сетевой порт). Вот несколько нестандартных команд, которые у меня всегда под рукой:

    Никогда не останавливайтесь: В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях

    Читайте также: