- Записная книжка ежа
- RedHat7 / CentOS 7: полезные команды
- Структура каталогов
- / — корень
- /bin (binaries) — бинарные файлы пользователей
- /boot — файлы загрузчика
- /dev (devices) — файлы устройств
- /dev/null — псевдоустройство, в которое можно записать все что угодно и оно исчезнет навсегда.
- /dev/shm — раздел файловой системы, размещенный в оперативной памяти
- /etc (etcetera) — конфигурационные файлы
- /home — домашние директории пользователей
- /lib (library) — системные библиотеки
- /media — съёмные носители
- /mnt (mount) — точки монтирования
- /opt (optional applications) — дополнительные приложения
- /proc (process) — информация о процессах
- /run — процессы
- /sbin (system binaries) — системные исполняемые файлы
- /srv (server) — сервер
- /sys (system) — информация о системе
- /tmp (temp) — временные файлы
- /usr — (user applications) программы пользователя
- /usr/bin — исполняемые файлы
- /usr/lib— библиотеки
- /usr/local — пользовательские программы, библиотеки и настройки
- /usr/sbin — системные исполняемые файлы
- /var (variable) — изменяемые файлы
- /var/log — файлы логов
- /var/lib — базы данных
- /var/lock — блокировки
- /var/run — PID процессов
- Пользователи и группы
- Работа с файловой системой: навигация, создание-перемещение-удаление файлов, ссылки
- Управление процессами и потоками, отправка сигналов, kill
- SSH и передача файлов
- Перенаправление ввода/вывода
- Работа с текстовыми файлами, find и grep
- Информация о размерах файлов и директорий, свободном пространстве
- Переменные окружения
- Работа с сетью
- Работа со службами
- Менеджер пакетов YUM
Записная книжка ежа
RedHat7 / CentOS 7: полезные команды
А у нас на работе случилось тестирование по знанию команд linux 🙂
На самом деле это круто, когда работа мотивирует изучать что-то новое и постоянно развиваться. Тем более, ребята подготовили неплохие конспекты и даже тем, кто с терминалом был «на вы» при минимальных усилиях разобраться в происходящем оказалось не очень сложно.
Глядя на эти конспекты, мне стало немного грустно — работа имеет свойство меняться, а терять такую крутую подборку не хотелось бы. Да и формат меня местами не устраивал. В итоге было решено переработать материал в такую простыню-шпаргалку, частично используя материалы для подготовки к тестированию, частично — расширяя своими заметками.
В этом посте осуществлена попытка собрать необходимый минимум полезных команд, часто используемых при решении типовых задач в ОС Linux, в частности — дистрибутивов Red Hat Enterprise Linux / Cent OS 7.
Структура каталогов
Основные каталоги и структура файловой системы Linux регламентируются FHS — Filesystem Hierarchy Standard. FHS поддерживается Free Standards Group — некоммерческой организацией, в составе которой находятся крупные разработчики программного и аппаратного обеспечения, такие как HP, Red Hat, IBM и Dell.
/ — корень
Главный каталог, по сути — файловая система Linux. Только root может менять и читать файлы в этом каталоге.
/bin (binaries) — бинарные файлы пользователей
Содержит исполняемые файлы, которые можно использовать когда не подключен каталог /usr. В основном — общие команды, например cat / ls / ps и др.
/boot — файлы загрузчика
Cодержит ядро и другие файлы, используемые при загрузке системы.
/dev (devices) — файлы устройств
В Linux все устройства являются файлами в каталоге /dev. Инициализируется при запуске системы — сканируются подключенные устройства и для них создаются специальные файлы.
/dev/null — псевдоустройство, в которое можно записать все что угодно и оно исчезнет навсегда.
Используя его, можно, например подавить вывод на stdout:
/dev/shm — раздел файловой системы, размещенный в оперативной памяти
Может быть использован для увеличения производительности приложений. При перезагрузке информация в разделе стирается.
/etc (etcetera) — конфигурационные файлы
Здесь хранятся конфигурационные файлы всех установленных в системе программ, скрипты запуска и завершения системных демонов, монтирования файловых систем и авторазгрузки программ.
/home — домашние директории пользователей
В этой папке хранятся домашние каталоги всех пользователей. В них они могут хранить свои личные файлы, настройки программ и т д.
/lib (library) — системные библиотеки
Содержит файлы системных библиотек, которые используются исполняемыми файлами в каталогах /bin и /sbin.
Библиотеки имеют имена файлов с расширением *.so и начинаются с префикса lib*. Например, libncurses.so.5.7. Папка /lib64 в 64 битных системах содержит 64 битные версии библиотек из /lib.
/media — съёмные носители
В этот каталог система монтирует все подключаемые внешние накопители — флешки, оптические диски и другие носители информации.
/mnt (mount) — точки монтирования
В этот каталог могут быть смонтированы внешние или дополнительные файловые системы.
/opt (optional applications) — дополнительные приложения
В эту папку устанавливаются проприетарные программы, игры или драйверы.
/proc (process) — информация о процессах
Содержит информацию о запущенных процессах, обновляемую в реальном времени. Также там есть информация об использовании системных ресурсов (/proc/cpuinfo, /proc/meminfo, /proc/uptime).
/run — процессы
Еще один каталог, содержащий PID файлы процессов, похожий на /var/run, но в отличие от него, он размещен в TMPFS, а поэтому после перезагрузки все файлы теряются.
/sbin (system binaries) — системные исполняемые файлы
Также как /bin содержит исполняемые файлы, доступные на ранних этапах загрузки, но здесь — программы, выполняемые только с правами суперпользователя — системные утилиты.
/srv (server) — сервер
В этом каталоге содержатся файлы серверов и сервисов. Например, могут содержаться файлы веб-сервера apache.
/sys (system) — информация о системе
Назначение каталогов Linux из этой папки — получение информации о системе непосредственно от ядра. Это еще одна файловая система, организуемая ядром и позволяющая просматривать и изменить многие параметры работы системы, например, работу swap, контролировать кулеры и многое другое.
/tmp (temp) — временные файлы
В этом каталоге содержатся временные файлы, созданные системой, любыми программами или пользователями. Все пользователи имеют право записи в эту директорию.Файлы удаляются при каждой перезагрузке.
/usr — (user applications) программы пользователя
/usr/bin — исполняемые файлы
Содержит исполняемые файлы различных программ, которые не нужны на первых этапах загрузки системы, например, музыкальные плееры, графические редакторы, браузеры и так далее.
/usr/lib— библиотеки
Содержит библиотеки для программ из /usr/bin или /usr/sbin.
/usr/local — пользовательские программы, библиотеки и настройки
Содержит файлы программ, библиотек, и настроек созданные пользователем. Например, здесь могут храниться программы собранные и установленные из исходников и скрипты, написанные вручную.
/usr/sbin — системные исполняемые файлы
Содержит двоичные файлы программ для системного администрирования, которые нужно выполнять с правами суперпользователя. Например, таких как Gparted, sshd, useradd, userdel и т д.
/var (variable) — изменяемые файлы
Содержит постоянно изменяемые файлы, генерируемые процессами во время работы. Здесь есть системные журналы, кеши, базы данных и т.п.
/var/log — файлы логов
Содержит большинство логов всех установленных в операционной системе программ.
/var/lib — базы данных
Содержит файлы баз данных, пакеты и т.п.
/var/lock — блокировки
Файлы, расположенные здесь, означают, что ресурс, файл или устройство занято и не может быть использовано другим процессом.
/var/run — PID процессов
Содержит идентификаторы процессов, которые могут использоваться для взаимодейстия между программами. В отличие от /run данные сохраняются после перезагрузки.
Пользователи и группы
ОС UNIX предлагает базовые средства защиты и совместного использования файлов на основе отслеживания пользователя и группы, владеющих файлом, трех уровней доступа (для пользователя-владельца, для пользователей группы-владельца, и для всех остальных пользователей) и трех базовых прав доступа к файлам (на чтение, на запись и на выполнение). Базовые средства защиты процессов основаны на отслеживании принадлежности процессов пользователям.
Для отслеживания владельцев процессов и файлов используются числовые идентификаторы. Идентификатор пользователя и группы — целое число (обычно) в диапазоне от 0 до 65535. Присвоение уникального идентификатора пользователя выполняется при заведении системным администратором нового регистрационного имени. Среди пользователей системы выделяется один пользователь — системный администратор или суперпользователь, обладающий всей полнотой прав на использование и конфигурирование системы. Это пользователь с идентификатором 0 и регистрационным именем root.
Учетные записи пользователей, как и большинство другой информации о конфигурации системы UNIX, по традиции, представлена в виде текстовых файлов: /etc/passwd, /etc/group и /etc/shadow (в системах с теневым хранением паролей).
Основные команды для работы с пользователями и группами (часть команд указанных ниже будет требовать sudo для выполнения):
В современных дистрибутивах Linux вместо root аккаунта для администрирования как правило используется утилита sudo (substitute user and do), позволяющая выполнить команду от лица пользователя root.
Все настройки sudo находятся в файле /etc/sudoers. Здесь можно настроить очень много параметров, начиная от кому будет позволено выполнять команды от имени суперпользователя и заканчивая ограничением набора доступных команд. Неправильный синтаксис, добавленный в этот файл, может полностью нарушить распределение прав между пользователями. Потому для работы с этим файлом используется утилита visudo, которая открывает файл в обычном текстовом редакторе, но во время сохранения файла проверяет его синтаксис. Это позволяет избежать ошибок в конфигурации.
Работа с файловой системой: навигация, создание-перемещение-удаление файлов, ссылки
Основные команды, используемые для навигации по файловой системе из окна терминала, создание, перемещение и удаление файлов и каталогов:
В ОС Linux существует два вида ссылок.
Жесткие ссылки привязываются к иноду, таким образом, файл присутствует в системе под несколькими разными именами. Файл существует до тех пор, пока с его инодом связано хотя бы одно имя. Понятия «жёсткая ссылка на файл» и «имя файла» являются синонимами.
Жесткие ссылки могут быть только на файлы, не на директории. Также нельзя создать жесткую ссылку на файл в другой файловой системе (у каждой ФС свой набор инодов).
Cимволические ссылки (или симлинки) — специальный вид файла, который ссылается на другой файл по имени, а не напрямую на инод. Симлинки не предохраняют файл от удаления. Если файл удалить, то симлинк на него станет нерабочим (или битым).
Симлинки создаются командой ln с опцией ‘-s’:
При работе с большим количеством файлов бывает удобно использовать маски — т.н. wildcards.
Wildcard «*» соответствует нулю или большему количеству символов:
Wildcard «?» заменяет один любой символ:
Шаблон «[]» позволяет явно указать набор символов — будут найдеты совпадения, содержащие один из указанных в скобках символов. Также в можно указать диапазон символов (для этого используется символ –/дефис) или несколько диапазонов подряд, тогда шаблон будет совпадать с одним любым символом из этого диапазона:
Управление процессами и потоками, отправка сигналов, kill
Процесс (process) — некая виртуальная среда, инкапсулирующая в себе ресурсы (открытые файлы, файлы отображенные в память. ) и их дескрипторы, потоки и т.д. Каждый процесс имеет как минимум один поток. Также каждый процесс имеет свое собственное виртуальное адресное пространство и контекст выполнения, а потоки одного процесса разделяют адресное пространство процесса. Некоторые приложения могут создавать несколько процессов одновременно.
Каждому процессу в системе назначаются числовые идентификаторы PID (Process Identifier) в диапазоне от 1 до 65535 и идентификаторы родительского процесса PPID (Parent Process Identifier).
Сигнал в операционных системах семейства Unix — асинхронное уведомление процесса о каком-либо событии.
Когда сигнал послан процессу, операционная система прерывает выполнение процесса, при этом, если процесс установил собственный обработчик сигнала, операционная система запускает этот обработчик, передав ему информацию о сигнале, если процесс не установил обработчик, то выполняется обработчик по умолчанию.
По умолчанию отправляется сигнал SIGTERM. Для безусловного завершения процесса можно отправить SIGKILL. Т.к. в большинстве систем SIGKILL имеет идентификатор 9, часто встречается команда в сокращенной форме записи:
SSH и передача файлов
SSH (Secure Shell) — защищенный протокол для удаленного доступа к компьютерам. В *nix-подобных системах (Linux, macOS) ssh-клиент обычно установлен по умолчанию и подключаться можно напрямую из терминала. Для подключения нужно указать адрес сервера и, опционально, имя пользователя и порт.
Простейший вариант — подключение по паролю. В таком случае система будет запрашивать пароль каждый раз при подключении.
Для подключения без ввода пароля можно использовать ключи: приватный (закрытый) и публичный (открытый). Эти ключи связаны друг с другом таким образом, что зашифровав информацию одним ключом, расшифровать ее можно только другим.
Для создания ключей необходимо выполнить команду:
Опционально можно ввести passphrase.
Будут созданы два файла:
/.ssh/id_rsa — приватный ключ.Его нельзя никому передавать.
/.ssh/id_rsa.pub — публичный ключ. Можно спокойно распространять.
Для загрузки публичного ключа на сервер нужно выполнить на локальной машине команду:
Другой вариант — добавить на удаленной машине в файл
/.ssh/authorized_keys содержимое публичного ключа.
Для более удобной работы с ключами можно добавить ключ к ssh-агенту. После этого для него больше не будет спрашиваться passphrase (если был задан) и не нужно будет вводить ключ вручную — он будет автоматически использован при соответствующем подключении.
ssh-agent привязан к сессии. Поэтому, например, если перезагрузить компьютер, то ключи нужно будет добавлять в агент заново.
Протокол SSH можно использовать для передачи файлов на удалённый сервер и загрузки их оттуда.
Перенаправление ввода/вывода
Процесс взаимодействия с пользователем выполняется в терминах записи и чтения в файл. Вывод на экран представляется как запись в файл, а ввод — как чтение файла. Файл, из которого осуществляется чтение, называется стандартным потоком ввода, а в который осуществляется запись — стандартным потоком вывода. Существует еще и стандартный поток ошибок, на который выводятся все сообщения об ошибках и те информативные сообщения о ходе работы программы, которые не могут быть выведены в стандартный поток вывода.
Можно организовать конвейер (pipe) выполняемых команд.
В примере выше вывод команды cat, т. е. текст из файла myfile, будет направлен на вход команды grep, которая выделит только строки, содержащие слово «Linux». Вывод команды grep будет, в свою очередь, направлен на вход команды wc -l, которая подсчитает число таких строк. Статус выхода из канала совпадает со статусом выхода, возвращаемым последней командой.
Работа с текстовыми файлами, find и grep
less — программа для просмотра содержимого текстовых файлов с возможностью его прокрутки. Умеет искать текст по шаблону и подсвечивать результат. Быстро работает с файлами больших размеров, т.к. не нуждается в чтении всего файла перед стартом.
После открытия текстового файла внутри утилиты можно набирать разные команды (они отображаются в левом нижнем углу), рассмотрим некоторые из них.
Для вызова справки внутри утилиты воспользуйтесь клавишей h.
Поиск внутри утилиты:
В режиме поиска:
tail — утилита, выводящая несколько последних строк файла, head — несколько первых строк.
Отображение последних 10 строк файла:
По умолчанию tail выводит именно 10 последних строк.
iconv — преобразование кодировки файла
Find — команда для поиска файлов и каталогов на основе специальных условий.
Команда grep — поиск по шаблону в файле.
Информация о размерах файлов и директорий, свободном пространстве
Для того, чтобы получить информацию о доступном в системе пространстве, можно использовать утилиту df (disk free):
Для оценки занимаемого файлом или директорией дискового пространства используется утилита du (disk usage):
Переменные окружения
Переменные окружения в Linux — специальные переменные, определенные оболочкой и используемые программами во время выполнения. Могут быть определены как системой, так и пользователем. Переменные являются парамти ключ — строковое значение. Несколько значений разделяются двоеточием, если в значении присутствует пробел — нужно использовать кавычки.
Существует три типа переменных окружения:
— локальные переменные окружения (environmental variables) — определены только для текущей сессии, будут безвозвратно стерты по ее завершении. Вывести текущие переменные окружения — команда printenv или env без параметров
— пользовательские переменные окружения (shell variables) — определяются для конкретного пользователя и устанавливаются при входе в систему или удаленном подключении. Хранятся в файлах конфигурации .bashrc, .bash_profile, .bash_login, .profile и других, размещенных в директории пользователя. Для просмотра используется команда set.
— системные переменные окружения — доступны всем пользователям, загружаются при старте системы из файлов /etc/environment, /etc/profile, /etc/profile.d/ /etc/bash.bashrc.
Конфигурационные файлы переменных окружения:
- .bashrc — переменные конкретного пользователя, загружается каждый раз при создании пользователем терминального сеанса
- .bash_profile — загружается каждый раз при удаленном подключении по SSH
- /etc/environment — файл для работы с переменными окружения на системном уровне, будут доступны всем пользователям системы, в том числе при удаленном подключении
- /etc/bashrc — выполняется для всех локальных пользователей при создании сессии в терминале
- /etc/profile — выполняется для всех удаленных пользователей при открытии терминала
Команды для работы с переменными окружения:
Работа с сетью
Основные команды для работы с сетью:
Адаптер lo (loopback) в выводе ifconfig используется системой для обращения к самой себе.
Работа со службами
В RHEL7 для управления службами в операционной системе используется утилита systemd, приносящая концепцию юнитов.
Юниты находятся в конфигурационных файлах, расположенных в директориях (указаны по возрастанию приоритета):
- /usr/lib/systemd/system/ — юниты из установленных покетов RPM
- /run/systemd/system/ — юниты, созданные в рантайме
- /etc/systemd/system/ — юниты, созданные и управляемые системным администратором с помощью команды systemctl enable.
Юниты содержат информацию о системных сервисах, прослушиваемых сокетах, сохраненных снапшотах состояний системы и других обьектах, относящихся к системе инициализации.
Типы юнитов systemd:
- .service – системный сервис,
- .target — группа юнитов systemd,
- .automount – точка автомонтирования файловой системы,
- .device – файл устройства, распознанного ядром,
- .mount – точка монтирования файловой системы,
- .path – файл или директория в файловой системе,
- .scope – процесс, созданный извне,
- .slice – группа иерархически организованных юнитов, управляющая системными процессами,
- .snapshot – сохраненное состояние менеджера systemd,
- .socket – сокет межпроцессного взаимодействия,
- .swap – свап-устройство или свап-файл (файл подкачки),
- .timer – таймер systemd.
Основные команды для работы со службами:
Менеджер пакетов YUM
Менеджер пакетов YUM — высокоуровневое решение по управлению RPM-пакетами. Основные преимущества YUM:
— хранение пакетов в централизованных репозиториях с определяющими зависимости метаданными. Если для установки одного пакета нужно докачать пакеты из других репозиториев — YUM будет об этом знать заранее
— автоматически разрешаются взаимосвязи между пакетами как при установке (докачать нужное) так и при удалении (удалить ставшее ненужным)
— возможность обновить одной командой все пакеты в системе
Источник