# Linux ## Базовые команды - `uname` (unix name) - вывод информации о системе и ядре операционной системы - `hostname` - отображение текущего имени хоста системы - `date` - отображает и устанавливает системное временя и дату, также позволяет форматировать и выводить дату и время в соответствии с определенными шаблонами - `ls` (list) - сведения о содержимом текущего каталога - `pwd` (present working directory) - вывод пути текущей рабочей директории - `cd` (change directory) - изменение текущей рабочей директории - `clear` - очистка содержимого терминала в командной строке - `file` - определения типа файла - `touch` - изменение времени доступа и времени модификации файлов или создания новых файлов - `mkdir` (make directory) - создание новых директорий (папок) в файловой системе - `cp` (copy) - копирование файлов и директорий - `mv` (move) - перемещение или переименование файлов и директорий - `rm` (remove) - удаление файлов и директорий - `echo` - вывод текста или переменных в командной строке или в скриптах - `cat` - вывод содержимого одного или нескольких файлов в командной строке - `more`, `less` - позволяет просматривать содержимое файла постранично и обеспечивает удобный способ пролистывания вперед и назад по файлу - `head` - выводит начальные строки из указанного источника, по умолчанию первые 10 строк - `tail` - выводит конечные строки из указанного источника, по умолчанию последние 10 строк - `nl` (number lines) - предоставляет возможность добавить номера строк к выводу, делая его более читабельным и упорядоченным - `which` - определение полного пути исполняемого файла команды, то есть местоположения, где находится файл команды в системе - `whereis` - поиск исполняемых файлов, исходных кодов и справочной документации связанных с указанной командой - `man` (manual) - просмотр руководства по командам и программам в операционной системе - `locate` - поиск файлов и директорий на основе их имени - `find` - поиск файлов и директорий на основе различных критериев, таких как имя файла, тип, размер, дата изменения и другие - `info` (information) - система справки, которая предоставляет структурированную и подробную информацию о программном обеспечении, командах, файловых форматах и других аспектах системы - `type` - определяет тип команды, показывая, является ли команда встроенной в оболочку, алиасом, функцией или внешней программой - `ps` (process status) - просмотр информации о запущенных процессах в системе - `kill` - отправка сигналов процессам, таких как завершение процесса или управление его выполнением - `pgrep` (process grep) - поиск и отображение идентификаторов процессов на основе их имен или других критериев - `lsof` (list open files) - вывод списка открытых файлов и процессов, которые ими владеют, также предоставляет информацию о процессах, которые открыли файлы на диске или имеют сетевые соединения - `df` (disk free) - вывод информации о доступном месте на файловых системах - `du` (disk usage) - вывод информации о размере файлов или директорий в файловой системе - `vmstat` (virtual memory statistics), `free` - вывод информации об использовании памяти в системе, включая физическую память (RAM) и использование памяти "подкачки" (swap) ### Справочники - [Linux. Карманный справочник (Скотт Граннеман)](https://ftp.zhirov.kz/books/IT/Unix/Linux.%20%D0%9A%D0%B0%D1%80%D0%BC%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9%20%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%20%28%D0%A1%D0%BA%D0%BE%D1%82%D1%82%20%D0%93%D1%80%D0%B0%D0%BD%D0%BD%D0%B5%D0%BC%D0%B0%D0%BD%29.djvu) - [Linux. Основные команды. Карманный справочник (Даниэл Дж. Баррет)](https://ftp.zhirov.kz/books/IT/Unix/Linux.%20%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B.%20%D0%9A%D0%B0%D1%80%D0%BC%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9%20%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%20%28%D0%94%D0%B0%D0%BD%D0%B8%D1%8D%D0%BB%20%D0%94%D0%B6.%20%D0%91%D0%B0%D1%80%D1%80%D0%B5%D1%82%29.pdf) ## Иерархия каталогов в Linux ![directory_hierarchy](img/directory_hierarchy.png) - `/bin`. Содержит готовые к запуску программы (также известные как исполняемые файлы), включая большинство основных команд Unix, таких как `ls` и `cp`. Большинство программ в `/bin` созданы в двоичном формате на языке C, но некоторые из них являются сценариями оболочки в современных системах. - `/dev`. Содержит файлы устройств. - `/etc` . Этот центральный каталог конфигурации системы (произносится этси) содержит пароль пользователя, загрузочные файлы, файлы устройств, сетевые настройки и др. - `/home`. Содержит домашние (личные) каталоги для обычных пользователей. Большинство установок Unix соответствуют этому стандарту. - `/lib`. Сокращение от **library** (библиотека). В этом каталоге находятся файлы библиотек с кодом, который могут использовать исполняемые файлы. Существует два типа библиотек: статические и разделяемые. Каталог `/lib` должен содержать только разделяемые библиотеки, но другие каталоги **lib**, такие как `/usr/lib`, включают обе разновидности, а также другие вспомогательные файлы. - `/proc`. Предоставляет системную статистику через доступный для просмотра интерфейс каталогов и файлов. Большая часть структуры подкаталогов `/proc` в Linux уникальна, но многие другие варианты Unix имеют аналогичные функции. Каталог `/proc` содержит информацию о запущенных в данный момент процессах, а также некоторые параметры ядра. - `/run`. Содержит данные времени выполнения, относящиеся к системе, включая определенные идентификаторы процессов, файлы сокетов, записи состояния и во многих случаях системный журнал. Это относительно недавнее дополнение к корневому каталогу, в старых системах вы можете найти его в `/var/run`. В более новых системах `/var/run` — это символическая ссылка на `/run`. - `/sys`. Этот каталог похож на каталог `/proc` тем, что он предоставляет интерфейс устройствам и системе. - `/sbin`. Место для системных исполняемых файлов. Программы в каталогах `/sbin` связаны с управлением системой, поэтому простые пользователи обычно не имеют компонентов `/sbin` в своих путях команд. Многие из утилит в этом каталоге работают, только если запущены от имени суперпользователя. - `/tmp`. Место для хранения небольших, временных, не особо важных файлов. Любой пользователь может читать из каталога `/tmp` и записывать в него, но у пользователя может не быть доступа к файлам другого пользователя. Многие программы задействуют этот каталог в качестве рабочей области. Если какой-то файл важен, не помещайте его в каталог `/tmp`, потому что большинство дистрибутивов очищают его при загрузке, а некоторые даже периодически удаляют старые файлы. Кроме того, не позволяйте `/tmp` заполняться мусором, потому что обычно он делит пространство с важными каталогами (например, с остальной частью каталога `/`). - `/usr`. Сокращение от **user** (пользователь), однако в этом подкаталоге нет пользовательских файлов. Вместо этого он содержит большую иерархию каталогов, включая основную часть системы Linux. Многие имена каталогов в `/usr` совпадают с именами в корневом каталоге (например, `/usr/bin` и `/usr/lib` ), и они содержат файлы одного типа. (Причина, по которой в корневом каталоге не содержится вся система, в первую очередь историческая — в прошлом это было сделано для того, чтобы снизить требования к пространству для корневого каталога.) - `/var`. Подкаталог переменных, куда программы записывают информацию, которая может изменяться с течением времени. Здесь находятся системные журналы, отслеживание активности пользователей, кэши и другие файлы, создаваемые системными программами и управляемые ими. (Здесь также есть каталог `/var/tmp`, но система не стирает его при загрузке.) - `/boot`. Содержит файлы загрузчика ядра. Эти файлы относятся к самому первому этапу запуска Linux, поэтому в этом каталоге вы не найдете информации о том, как Linux запускает свои службы. - `/media`. Базовый каталог для съемных носителей, таких как флеш-накопители. Этот каталог встречается во многих дистрибутивах. - `/opt`. Может содержать дополнительное программное обеспечение сторонних производителей. Многие системы не используют каталог `/opt`. - `/include`. Файлы заголовков, используемые компилятором языка С. - `/local`. Место, где администраторы могут устанавливать собственное программное обеспечение. Его структура должна выглядеть так же, как у каталогов `/` и `/usr`. - `/man`. Страницы руководства. - `/share`. Файлы, которые должны работать на других типах систем Unix без потери функциональности. Обычно это вспомогательные файлы данных, которые программы и библиотеки читают по мере необходимости. В прошлом сети машин совместно пользовались бы этим каталогом с файлового сервера, но сегодня общий каталог, применяемый таким образом, встречается редко, поскольку в современных системах нет конкретных ограничений на пространство для таких файлов. Вместо этого в дистрибутивах Linux вы найдете каталоги `/man`, `/info` и многие другие.