Red hat 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имволические ссылки (или симлинки) - специальный вид файла, который ссылается на другой файл по имени, а не напрямую на инод. Симлинки не предохраняют файл от удаления. Если файл удалить, то симлинк на него станет нерабочим (или битым).
При работе с большим количеством файлов бывает удобно использовать маски - т.н. wildcards.
Wildcard "*" соответствует нулю или большему количеству символов:
Wildcard "?" заменяет один любой символ:
Шаблон "[]" позволяет явно указать набор символов - будут найдеты совпадения, содержащие один из указанных в скобках символов. Также в можно указать диапазон символов (для этого используется символ –/дефис) или несколько диапазонов подряд, тогда шаблон будет совпадать с одним любым символом из этого диапазона:
Управление процессами и потоками, отправка сигналов, kill
Процесс (process) — некая виртуальная среда, инкапсулирующая в себе ресурсы (открытые файлы, файлы отображенные в память. ) и их дескрипторы, потоки и т.д. Каждый процесс имеет как минимум один поток. Также каждый процесс имеет свое собственное виртуальное адресное пространство и контекст выполнения, а потоки одного процесса разделяют адресное пространство процесса. Некоторые приложения могут создавать несколько процессов одновременно.
Каждому процессу в системе назначаются числовые идентификаторы PID (Process Identifier) в диапазоне от 1 до 65535 и идентификаторы родительского процесса PPID (Parent Process Identifier).
Сигнал в операционных системах семейства Unix - асинхронное уведомление процесса о каком-либо событии.
Когда сигнал послан процессу, операционная система прерывает выполнение процесса, при этом, если процесс установил собственный обработчик сигнала, операционная система запускает этот обработчик, передав ему информацию о сигнале, если процесс не установил обработчик, то выполняется обработчик по умолчанию.
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 будет об этом знать заранее
- автоматически разрешаются взаимосвязи между пакетами как при установке (докачать нужное) так и при удалении (удалить ставшее ненужным)
Для выполнения множества действий в системе, например для установки и удаления программ, вам понадобятся права администратора, или суперпользователя root, как его называют в Linux.
- sudo . Эта команда даст вам права суперпользователя. Введите sudo перед нужной командой (например, sudo apt upgrade ), чтобы выполнить её от имени администратора. Система спросит у вас пароль.
- sudo su . После этой команды все введённые вами команды будут исполняться от имени суперпользователя, пока вы не закроете терминал. Используйте её, если вам нужно выполнить много команд с правами администратора.
- sudo gksudo . Команда для запуска с правами администратора приложения с графическим интерфейсом. Например, если вы хотите переместить или изменить системные файлы, введите sudo gksudo nautilus (укажите тот файловый менеджер, которым пользуетесь).
- sudo !! . Эта команда запустит ранее введённую команду с правами администратора. Полезно, если вы набрали команду без sudo .
Не выполняйте от имени суперпользователя команд, которых не понимаете.
Команды Linux для управления пакетным менеджером
Установку и удаление приложений в Linux выполняют пакетные менеджеры. В Ubuntu и Debian пакетный менеджер называется apt, в Fedora — dnf, в Arch и Manjaro — pacman. Они загружают приложения из сетевых репозитариев, источников пакетов. Давать им команды следует с правами суперпользователя.
apt (Debian/Ubuntu/Mint)
- sudo apt install имя_пакета . Установить нужный пакет.
- sudo apt-add-repository адрес_репозитария . Добавить сторонний репозитарий.
- sudo apt update . Обновить сведения о пакетах.
- sudo apt upgrade . Обновить все пакеты до самых свежих (выполнять после apt update ).
- sudo apt remove имя_пакета . Удалить ненужный пакет.
- sudo apt purge имя_пакета . Удалить ненужный пакет со всеми зависимостями, если хотите освободить больше места.
- sudo apt autoremove . Удалить все ненужные зависимости, бесхозные пакеты и прочий мусор.
dnf (Red Hat/Fedora/CentOS)
- sudo dnf install имя_пакета . Установить нужный пакет.
- sudo dnf config-manager --add-repo адрес_репозитария . Добавить сторонний репозитарий.
- sudo dnf upgrade . Обновить все пакеты до самых свежих.
- sudo dnf remove имя_пакета . Удалить ненужный пакет.
- sudo dnf autoremove . Удалить все ненужные зависимости.
pacman (Arch/Manjaro)
- sudo pacman -S имя_пакета . Установить нужный пакет.
- sudo yaourt -S имя_пакета . Установить пакет из AUR, если его нет в основном репозитарии.
- sudo pacman -Sy . Обновить сведения о пакетах.
- sudo pacman -Syu . Обновить все пакеты до самых свежих.
- sudo pacman -R имя_пакета . Удалить ненужный пакет.
- sudo pacman -Rs имя_пакета . Удалить ненужный пакет со всеми зависимостями.
Вы можете устанавливать и удалять сразу несколько пакетов, просто перечисляя их через пробел.
sudo apt install firefox clementine vlc
Если вы хотите установить какой-то пакет, но не знаете его точного названия, введите несколько первых букв имени пакета и дважды нажмите Tab. Пакетный менеджер покажет все пакеты, названия которых начинаются одинаково.
Команды Linux для управления процессами
- kill . Эта команда служит для принудительного завершения процессов. Нужно ввести kill PID_процесса . PID процесса можно узнать, введя top .
- xkill . Ещё одна команда для завершения процессов. Введите её, затем щёлкните по тому окну, которое нужно закрыть.
- killall . Убивает процессы c определённым именем. К примеру, killall firefox .
- top . Отображает перечень запущенных процессов, сортируя в зависимости от потребления ресурсов CPU. Своего рода терминальный «Системный монитор».
Команды Linux для управления файлами
Просмотр и изменение файлов
- cat . Когда команда используется с одним текстовым файлом (вот так: cat путь_к_файлу ), она отображает его содержимое в окне терминала. Если указать два и больше файлов, cat путь_к_файлу_1 путь_к_файлу_2 , она склеит их. Если ввести cat путь_к_файлу_1 > новый_файл , она объединит содержимое указанных файлов в новый файл.
- chmod . Позволяет изменять права доступа к файлу. Может пригодиться, если вы хотите внести изменения в системный файл.
- chown . Изменяет владельца файла. Следует выполнять с правами суперпользователя.
- file . Выводит информацию об указанном файле.
- nano . Открывает простой текстовый редактор. Можно создать новый текстовый файл или открыть существующий: nano путь_к_файлу .
- rename . Переименовывает файл или несколько файлов. Команду можно использовать и для массового переименования файлов по маске.
- touch . Изменяет дату последнего открытия или модификации указанного файла.
- wget . Загружает файлы из интернета в терминальную папку.
- zip . Распаковывает и сжимает архивы.
Создание и удаление файлов и папок
- mkdir . Создаёт новую папку в текущей терминальной папке или в указанной папке: mkdir путь_к_папке .
- rmdir . Удаляет указанную папку.
- rm . Удаляет файлы. Может удалить как отдельный файл, так и группу, соответствующую определённым признакам.
Копирование и перемещение файлов
- cp . Создаёт копию указанного файла в папке терминала: cp путь_к_файлу . Или вы можете указать назначение cp путь_к_файлу путь_для_копии .
- mv . Перемещает файл из одной папки в другую. Вы можете указать имя для перемещаемого файла. Забавно, но в Linux эта команда может использоваться и для переименования файлов. Просто укажите ту же папку, где находится файл, и другое имя.
Поиск файлов
- find . Поиск файлов по определённым критериям, таким как имя, тип, размер, владелец, дата создания и модификации.
- grep . Поиск текстовых файлов, содержащих определённые строки. Критерии очень гибко настраиваются.
- locate . Поиск файлов и папок, чьи названия подходят запросу, и отображение их путей в файловой системе.
Команды Linux для работы с разделами
- lsblk . Эта команда демонстрирует, какие диски есть в вашей системе и на какие разделы они поделены. Также команда отображает имена ваших разделов и накопителей, в формате sda1, sda2 и так далее.
- mount . Монтирует накопители, устройства или файловые системы Linux, чтобы вы могли с ними работать. Обычно устройства подключаются автоматически, как только вы щёлкнете по ним в файловом менеджере. Но иногда может понадобиться примонтировать что-то вручную. Вы можете подключать что угодно: диски, внешние накопители, разделы и даже ISO-образы. Эту команду нужно выполнять с правами суперпользователя. Чтобы примонтировать имеющийся диск или раздел, введите mount sdX .
- umount . Демонтирует файловые системы. Команда umount sdX отключит файловую систему внешнего носителя, чтобы вы могли извлечь его.
- dd . Эта команда копирует и преобразовывает файлы и разделы. У неё множество различных применений. Например, dd if=/dev/sda of=/dev/sdb сделает точную копию раздела sda на разделе sdb. dd if=/dev/zero of=/dev/sdX затрёт содержимое указанного носителя нулями, чтобы информацию было невозможно восстановить. А dd if=
Команды Linux для управления системой
- df . Отображает объём вашего диска, и сколько на нём осталось свободного места.
- free . Отображает объём доступной и занятой оперативной памяти.
- uname . Отображает сведения о системе Если ввести uname , терминал сообщит только Linux. Но команда uname -a выводит сведения об имени компьютера и версии ядра.
- uptime . Сообщает, как долго запущена ваша система.
- whereis . Отображает расположение исполняемого файла нужной программы.
- whoami . Называет имя пользователя.
Команды Linux для управления пользователями
- useradd . Регистрирует нового пользователя. Введите useradd имя_пользователя , и пользователь будет создан.
- userdel . Удаляет учётную запись и файлы пользователя.
- usermod . Изменяет учётную запись пользователя. Может переместить домашнюю папку пользователя или назначить дату, когда учётная запись будет заблокирована.
- passwd . Изменяет пароли учётных записей. Обычный пользователь может изменить пароль только своей учётной записи, суперпользователь может изменить пароль любой учётной записи.
Команды Linux для управления сетью
- ip . Многофункциональная команда для работы с сетью. Команда ip address show выводит сведения о сетевых адресах, ip route управляет маршрутизацией и так далее. Давая команды ip link set ethX up , ip link set ethX down , можно включать и выключать соединения. У команды ip много применений, так что перед её использованием лучше ознакомиться с руководством или ввести ip --help
- ping . Показывает, подключены ли вы к сети, и помогает определить качество связи.
И ещё кое-что
Напоследок — главные команды Linux. Они выводят на экран корову, которая может разговаривать с вами (не спрашивайте, что употребляют разработчики).
- cowsay что_угодно . Корова произнесёт то, что вы ей скажете.
- fortune | cowsay . Корова выдаст умную (или не очень) мысль или цитату.
- cowsay -l . Выводит список всех животных, которые могут быть отображены в терминале. Если вы вдруг не любите коров.
- fortune | cowsay -f животное_из_списка . Животное на ваш выбор начинает сыпать цитатами, иногда уместными.
- sudo apt-get install fortunes fortune-mod fortunes-min fortunes-ru . Заставит весь зоопарк говорить по-русски. Без этого животные цитируют Твена и Уайльда в оригинале.
Это далеко не все команды Linux. Если вам нужно узнать в деталях параметры и способы применения команд Linux, вы можете воспользоваться встроенным руководством. Наберите man ваша_команда или ваша_команда --help .
Терминал и текстовые команды — главный способ управления операционной системой Linux. Особенно, если речь идет о сервере – на него редко ставят графический интерфейс, и вся работа выполняется исключительно через командную строку. Поэтому любому администратору важно знать хотя бы с десяток ключевых команд для терминала Линукс, нужных для навигации в системе и базового управления файлами. В этом материале мы их как раз разберем.
Базовые команды для работы с терминалом
То, что поможет при работе с консолью в целом.
- clear — очищает всю выведенную в консоль информацию. Пригодится на тот случай, если терминал будет забит выводом других команд или содержимом ранее открытых документов. Помогает «начать с чистого листа».
- history — отображает ранее введенные команды. По умолчанию показывает 10 последних, но при желании это значение можно изменить, добавив в качестве параметра любое число. Например, history 17, чтобы показать 17 последних выполненных операций.
- whatis — вкратце описывает любую установленную программу. Вводим whatis и скармливаем ей в качестве аргумента название интересующей утилиты. Чтобы узнать, что такое wget, напишем whatis wget и получим краткую справку одной строкой.
- man — демонстрирует подробное руководство по выбранной программе или команде. Чтобы выяснить, как работает wget и какие опции для него доступны, введем man wget. Получим массивное полотно со всей документацией для выбранной утилиты. P.S. Выйти из нее можно нажав на клавишу Q.
Команды для управления правами на файлы и директории
Все, что нужно для разрешения проблем, связанных с правами в Linux.
- sudo — выдает права суперпользователя. Используется перед любой другой командой в терминале, если нужно выполнить ее от имени администратора. Многие программы и операции запускаются исключительно при наличии этих прав, так что sudo используется часто. Например, чтобы обновить список пакетов в Ubuntu, введем: sudo apt-get update. При этом система запросит пароль администратора.
- sudo su — переводит терминал в режим суперпользователя. В нем каждая введенная команда будет восприниматься системой так, будто перед ней ввели sudo. Помогает запускать несколько скриптов и утилит, требующих права администратора, без необходимости постоянно корректировать их или вводить пароль от учетной записи.
- sudo gksudo — используется для запуска графических утилит от имени администратора. В Windows для этого есть специальная кнопка в контекстном меню, а в Linux — префикс. Синтаксис такой:
Команды для управления пользователями
Linux — многопользовательская система. Ей одновременно могут управлять несколько людей. Поэтому здесь достаточно сложная система добавления и редактирования учетных записей.
- useradd — создает новую учетную запись. Например, мы хотим добавить пользователя с именем Timeweb. Для этого вводим: useradd Timeweb. Но свежесозданному аккаунту нужен не только логин, но и пароль. С помощью опций можно задать дополнительные характеристики новому пользователю.
- passwd — задает пароль для учетной записи, работает вкупе с предыдущей командой. То есть сразу после создания аккаунта, пишем: passwd Timeweb (в вашем случае может быть любой другой пользователь). После этого система попросит придумать и указать пароль для новой учетной записи. По ходу набора пароля в терминале не будут отображаться даже звездочки, но он все равно учитывает каждую нажатую клавишу. Продолжайте набирать пароль вслепую.
- userdel — удаляет выбранную учетную запись. Синтаксис простейший:
Установка, удаление и обновление пакетов
Для установки программ в Linux используются менеджеры пакетов. Они разнятся от дистрибутива к дистрибутиву, поэтому команды для управления ими тоже отличаются. Рассмотрим наиболее популярные.
Debian/Ubuntu
- sudo apt-get install название пакета — устанавливает программу на выбор. Главное знать, как она называется.
- sudo apt remove название пакета — стирает с жесткого диска имеющийся в системе пакет.
- sudo apt-get update — обновляет информацию о пакетах, имеющихся в системе, и тех, что хранятся в подключенных репозиториях.
- sudo apt-upgrade — обновляет установленные пакеты до самых свежих версий, доступных в подключенных репозиториях.
Red Hat Linux/CentOS
- sudo dnf install название пакета — устанавливает программу на выбор.
- sudo dnf upgrade — обновляет установленные пакеты до самых свежих версий.
- sudo dnf remove название пакета — стирает с жесткого диска имеющийся в системе пакет.
Команды для навигации и базовой работы с файлами
Самый крупный список в статье. Содержит в себе практически все мелкие утилиты и инструменты для взаимодействия с файлами и папками. Причем речь идет не только об их изменении, но и о получении информации о них.
- ls — покажет содержимое директории, в которой вы находитесь. Если после команды ввести адрес конкретной папки, то она покажет то, что хранится в ней. При добавлении аргумента -R в выводе команды появятся файлы из поддиректорий.
- cd — change directory, что в переводе означает «сменить директорию». Из названия понятно, что с помощью этой команды можно перемещаться между папками. Вписываем ее, а потом адрес: cd /user/test/dir/111. Есть сокращенные варианты: cd- для перемещения в предыдущую директорию или cd (без аргументов) для прыжка в домашнюю папку.
- pwd — укажет полный путь до директории, в которой вы находитесь. Если вы перепрыгнули на рабочий стол с помощью cd, то pwd покажет что-то в духе /home/Polzovatel/Desktop.
- file — расскажет, что перед вами изображение, директория или текстовый документ, а также предоставит информацию о них (для изображений, например, это данные EXIF).
- mv — mv применяется для перемещения файлов из одной папки в другую. Перенесем файл timeweb.txt из домашней директории на рабочий стол: mv timeweb.txt /home/имя учетной записи/Desktop. Эту же команду используют, чтобы поменять имя файла. Для этого надо не указывать папку для перемещения, а просто ввести новое название для документа:
- cp — используем, если нужно не переместить файл, а создать его копию в другой директории. Работает так же, как и mv. Указываем путь до файла, который нужно скопировать, и путь до директории, куда копируем:
- zip — упаковывает файлы в архив в формате .zip. Синтаксис для создания zip-архива такой: zip название архива.zip путь до файла, который надо упаковать. К примеру:
- unzip — напрямую связан с zip, но выполняет противоположную функцию. Извлекает файлы из архива. Работает по тому же принципу – вводим команду, а потом путь до архива, который надо распаковать.
- find — продвинутая команда по поиску объектов в файловой системе Linux. Можно искать элементы как по названию, так и по иным характеристикам. Например, указать тип файла: find -type d -name Timeweb. Такая команда покажет все директории с именем Timeweb.
- grep — find ищет файлы и директории, а grep ищет текст в их содержимом. Как вариант, можно отыскать слово «тест» в документе «test.txt». Для этого введем следующую команду: cat test.txt | grep тест. cat перед grep необходим, чтобы вывести найденную информацию в консоль. В противном случае grep найдет искомый контент, но не покажет его.
Вот, что написано в тестовом документе
Что в терминал выводит cat
И что выводит grep
- diff — сокращение от слово difference. Показывает разницу между двумя текстовыми файлами. Для сравнения используется такой синтаксис: diff название первого файланазвание второго файла. К примеру, diff text-1.txt text-2.txt
- mount — монтирует образ или раздел диска. Для использования нужно лишь указать путь к разделу или образу, который нужно смонтировать.
- unmount — выполняет противоположную задачу.
Команды для отображения базовой информации и управления системой
Утилиты, делящиеся разного рода справочной информацией с администратором компьютера.
- df — показывает, сколько пространства занято на подключенных дисках и разделах. По умолчанию отображает данные в килобайтах. Можно переключиться на мегабайт, добавив параметр -m. Это выглядит так: df -m.
- du — расскажет, сколько места занимает конкретный файл или папка. Чтобы узнать, насколько тяжелая директория Desktop, введем: du
На этом все. Это список команд, которыми я хотел бы поделиться с новичками. Я разобрал основное, что будет важно в самом начале работы. Ну а вы всегда можете воспользоваться документацией, открывающейся через man, и подробнее ознакомиться с любой из команд или утилит.
/boot — файлы загрузчика
Cодержит ядро и другие файлы, используемые при загрузке системы.
Используя его, можно, например подавить вывод на stdout:
Может быть использован для увеличения производительности приложений. При перезагрузке информация в разделе стирается.
Здесь хранятся конфигурационные файлы всех установленных в системе программ, скрипты запуска и завершения системных демонов, монтирования файловых систем и авторазгрузки программ.
/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, а поэтому после перезагрузки все файлы теряются.
/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/lib — базы данных
Содержит файлы баз данных, пакеты и т.п.
Файлы, расположенные здесь, означают, что ресурс, файл или устройство занято и не может быть использовано другим процессом.
/var/run — PID процессов
Содержит идентификаторы процессов, которые могут использоваться для взаимодейстия между программами. В отличие от /run данные сохраняются после перезагрузки.
Пользователи и группы
ОС UNIX предлагает базовые средства защиты и совместного использования файлов на основе отслеживания пользователя и группы, владеющих файлом, трех уровней доступа (для пользователя-владельца, для пользователей группы-владельца, и для всех остальных пользователей) и трех базовых прав доступа к файлам (на чтение, на запись и на выполнение). Базовые средства защиты процессов основаны на отслеживании принадлежности процессов пользователям.
Учетные записи пользователей, как и большинство другой информации о конфигурации системы UNIX, по традиции, представлена в виде текстовых файлов: /etc/passwd, /etc/group и /etc/shadow (в системах с теневым хранением паролей).
Основные команды для работы с пользователями и группами (часть команд указанных ниже будет требовать sudo для выполнения):
В современных дистрибутивах Linux вместо root аккаунта для администрирования как правило используется утилита sudo (substitute user and do), позволяющая выполнить команду от лица пользователя root.
Все настройки sudo находятся в файле /etc/sudoers. Здесь можно настроить очень много параметров, начиная от кому будет позволено выполнять команды от имени суперпользователя и заканчивая ограничением набора доступных команд. Неправильный синтаксис, добавленный в этот файл, может полностью нарушить распределение прав между пользователями. Потому для работы с этим файлом используется утилита visudo, которая открывает файл в обычном текстовом редакторе, но во время сохранения файла проверяет его синтаксис. Это позволяет избежать ошибок в конфигурации.
Работа с файловой системой: навигация, создание-перемещение-удаление файлов, ссылки
Основные команды, используемые для навигации по файловой системе из окна терминала, создание, перемещение и удаление файлов и каталогов:
В ОС Linux существует два вида ссылок.
Жесткие ссылки привязываются к иноду, таким образом, файл присутствует в системе под несколькими разными именами. Файл существует до тех пор, пока с его инодом связано хотя бы одно имя. Понятия «жёсткая ссылка на файл» и «имя файла» являются синонимами.
Жесткие ссылки могут быть только на файлы, не на директории. Также нельзя создать жесткую ссылку на файл в другой файловой системе (у каждой ФС свой набор инодов).
Управление процессами и потоками, отправка сигналов, kill
Каждому процессу в системе назначаются числовые идентификаторы PID (Process Identifier) в диапазоне от 1 до 65535 и идентификаторы родительского процесса PPID (Parent Process Identifier).
Когда сигнал послан процессу, операционная система прерывает выполнение процесса, при этом, если процесс установил собственный обработчик сигнала, операционная система запускает этот обработчик, передав ему информацию о сигнале, если процесс не установил обработчик, то выполняется обработчик по умолчанию.
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) выполняемых команд.
Работа с текстовыми файлами, find и grep
После открытия текстового файла внутри утилиты можно набирать разные команды (они отображаются в левом нижнем углу), рассмотрим некоторые из них.
Для вызова справки внутри утилиты воспользуйтесь клавишей h.
Поиск внутри утилиты:
В режиме поиска:
Отображение последних 10 строк файла:
По умолчанию tail выводит именно 10 последних строк.
Find — команда для поиска файлов и каталогов на основе специальных условий.
Информация о размерах файлов и директорий, свободном пространстве
Для того, чтобы получить информацию о доступном в системе пространстве, можно использовать утилиту df (disk free):
Для оценки занимаемого файлом или директорией дискового пространства используется утилита du (disk usage):
Переменные окружения
Существует три типа переменных окружения:
Конфигурационные файлы переменных окружения:
Команды для работы с переменными окружения:
Работа с сетью
Основные команды для работы с сетью:
Адаптер lo (loopback) в выводе ifconfig используется системой для обращения к самой себе.
Работа со службами
В RHEL7 для управления службами в операционной системе используется утилита systemd, приносящая концепцию юнитов.
Юниты находятся в конфигурационных файлах, расположенных в директориях (указаны по возрастанию приоритета):
Юниты содержат информацию о системных сервисах, прослушиваемых сокетах, сохраненных снапшотах состояний системы и других обьектах, относящихся к системе инициализации.
Типы юнитов systemd:
- .service – системный сервис,
- .target — группа юнитов systemd,
- .automount – точка автомонтирования файловой системы,
- .device – файл устройства, распознанного ядром,
- .mount – точка монтирования файловой системы,
- .path – файл или директория в файловой системе,
- .scope – процесс, созданный извне,
- .slice – группа иерархически организованных юнитов, управляющая системными процессами,
- .snapshot – сохраненное состояние менеджера systemd,
- .socket – сокет межпроцессного взаимодействия,
- .swap – свап-устройство или свап-файл (файл подкачки),
- .timer – таймер systemd.
Основные команды для работы со службами:
Менеджер пакетов YUM
Читайте также: