Linux руководство по использованию

Время на прочтение
14 мин

Количество просмотров 185K

Привет, Хабр!

В последние несколько лет все больше и больше людей ищут возможность войти в ИТ или поглубже изучить Linux, повысив уровень своей квалификации. Вместе с тем полноценных обзоров с практическим уклоном по типу «все и сразу» написано не так уж и много (особенно на русском языке).

Главная задача данной статьи – указать начинающим специалистам направление развития, дать ключевые понятия для дальнейшего изучения и показать несколько простых практических приемов. По этой причине (а еще, безусловно, вследствие недостаточной квалификации автора) теоретический материал достаточно сильно упрощен.

Что такое Linux?

История и определение

В 1969 году в дочернем подразделении компании AT&T – Bell Laboratories – была выпущена операционная система Unix, которая стала основной для большого количества операционных систем того времени. UNIX была проприетарной системой, лицензия на нее стоила порядка 40 000 долларов. Таким образом, позволить себе ее покупку могли только крупные компании. Это послужило толчком для старта в 1983 году проекта GNU – GNU is Not Unix. Его основоположник, Ричард Столлман, объявил целью проекта создание свободно распространяемой операционной системы. Чуть позже Столлманом был написан знаменитый манифест GNU, который стал основой для лицензии GPL (GNU General Public License), актуальной и по сей день. К началу 1990-х годов в рамках проекта GNU было написано большинство компонентов ОС – оболочка bash, компиляторы, отладчик, текстовый редактор и др. Не хватало лишь ядра операционной системы.

В 1991 году Линус Торвальдс, будучи студентом финского университета, увлекся идеей написания ядра операционной системы для своего персонального компьютера с процессором Intel. Вдохновлением и прототипом для будущего Linux стала совместимая с Unix операционная система для персональных компьютеров Minix. Уже в августе 1991 года было написано ядро операционной системы, в нее были портированы оболочка bash и компилятор gсс из проекта GNU. По признанию самого Линуса, изначально это было не более, чем хобби, однако проект оказался весьма востребованным, к нему начали присоединяться разработчики со всего мира. Дополненная массой программ, разработанных в рамках проекта GNU, ОС Linux стала пригодна для практического использования. При этом ядро системы распространялось под лицензией GNU General Public License, что гарантировало свободное распространение кода ядра системы. 

Читать подробнее: История Linux. Вкратце о главном

Итак, сегодня Linux (или GNU/Linux) – семейство Unix-подобных операционных систем на базе ядра Linux, включающих тот или иной набор утилит и программ проекта GNU. Linux-системы распространяются в виде различных дистрибутивов, имеющих свой набор системных и прикладных компонентов (как свободных, так и проприетарных).

Серверные дистрибутивы

Дистрибутив Linux — это операционная система, созданная на основе ядра Linux, которая включает в себя набор библиотек и утилит (пакетов), разработанных в рамках проекта GNU, а также систему управления пакетами (менеджер пакетов). В настоящее время существует более 500 различных дистрибутивов, разрабатываемых как при коммерческой поддержке (Red Hat / Fedora, SLED / OpenSUSE, Ubuntu и др.), так и исключительно усилиями добровольцев (Debian, Slackware, Gentoo, ArchLinux и др.). 

Дистрибутивы делятся на несколько типов в зависимости от базового дистрибутива и системы управления пакетами. Вот несколько примеров наиболее популярных серверных дистрибутивов двух типов:

  • RPM-based (используют формат пакетов .rpm)
    RedHat Enterprise Linux, CentOS, Fedora

  • DEB-based (используют формат пакетов .deb)
    Debian, Ubuntu, Astra Linux

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

Работа с Linux

Загрузка

Алгоритм включения сервера и загрузки Linux в большинстве случаев выглядит следующим образом:

  • BIOS / UEFI → MBR / GPT
    Выполняется код, заложенный производителем аппаратного обеспечения. Этот код проводит тестирование системы POST (Power On Self Test) и передает управление загрузчику в MBR (Master Boot Record) / GPT (GUID Partition Table)

  • MBR / GPT → GRUB2 (существуют и другие загрузчики)
    Загрузчик из MBR / GPT очень простой – он способен только найти на диске и запустить следующий загрузчик. Как правило это GRUB2, но существуют и другие загрузчики, например LILO (в настоящее время практически не используется)

  • GRUB2 → Kernel
    GRUB2 расположен на разделе жесткого диска в каталоге /boot. GRUB2 загружает ядро Linux (vmlinuz)

  • Kernel → Init
    Ядро запускает процесс инициализации операционной системы. Как правило это SystemD, но существуют и другие системы инициализации, например SystemV (в настоящее время практически не используется). Процесс инициализации запускает все остальные процессы в системе

Читать подробнее: Алгоритм загрузки Linux (BIOS / UEFI)

Подключение

Командная оболочка

Подключиться к Linux для управления можно в интерфейсе командной строки (command-line interface, CLI) или в графическом интерфейсе (graphical user interface, GUI). При работе с серверной инфраструктурой в подавляющем числе случаев GUI отсутствует и взаимодействие с сервером осуществляется в CLI. При входе пользователя на сервер в CLI запускается командная оболочка (в GUI командную оболочку можно запустить через эмулятор, например Terminal). Командная оболочка (shell) – это программа, которая принимает команды с клавиатуры и передает их операционной системе для выполнения. Наиболее распространенной командной оболочкой в Linux является GNU bash (Bourne Again SHell). bash основывается на другой легковесной оболочке-предшественнике – sh (Bourne sh), созданной Стефеном Борном.

Команды можно выполнять с помощью командной строки, указав имя двоичного (бинарного, bin) исполняемого файла или сценария. По умолчанию в Linux много команд, которые позволяют перемещаться по файловой системе, устанавливать ПО, конфигурировать его и выполнять другие действия. Каждая запущенная команда является отдельным процессом. Важно отметить, что в Linux (в отличие от Windows) почти всегда учитывается регистр, включая имена файлов и каталогов, команды, аргументы и опции.

Читать подробнее: Основы работы с терминалом Linux

SSH

Подключаться к Linux и работать с командной оболочкой можно локально (например включив ПК дома или подойдя к серверу в центре обработки данных), однако гораздо чаще работать с системой требуется удаленно. Для этого необходимо настроить SSH и подключаться через него. SSH (Secure SHell) – это протокол, позволяющий производить удаленное управление операционной системой и туннелирование TCP-соединений (например, для копирования файлов). SSH основан на клиент-серверной архитектуре, которая организует защищенное (зашифрованное) соединение поверх небезопасных каналов связи. Серверная часть устанавливается на удаленном сервере, а клиентская на компьютере, с которого осуществляется подключение.

Существует много клиентов для удаленного подключения к серверу по SSH. Вот несколько примеров для различных операционных систем:

  • Windows
    PuTTY – выбор новичка, PowerShell (команда ssh), Xshell – выбор автора, MobaXterm, mRemoteNG

  • Linux
    Terminal (команда ssh) – выбор новичка и автора, Asbru Connection Manager

  • MacOS
    Terminal (команда ssh) – выбор новичка и автора, Core Shell

Читать подробнее: 

  • SSH

  • Как подключиться по SSH

  • Лучшие SSH клиенты для Windows, Linux и MacOS

Установка программ (утилит) пакетным менеджером

Зачем нужны пакетные менеджеры?

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

Существует несколько форматов пакетов, однако наибольшее распространение получили .deb и .rpm. Рассмотрим операционные системы и менеджеры пакетов для данных форматов:

  • DEB (.deb)
    ОС – DEB-based, например Debian, Ubuntu, AstraLinux
    Система управления пакетами – DPKG (работает только с локальными пакетами)
    Пакетный менеджер – apt

  • RPM (.rpm)
    ОС – RPM-based, например RedHat Enterprise Linux, Fedora, CentOS
    Система управления пакетами – RPM (работает только с локальными пакетами) 
    Пакетный менеджер – yum (в последних дистрибутивах заменен на dnf)

Читать подробнее: Популярные пакетные менеджеры Linux

Практика

На практике пользователю необходимо уметь взаимодействовать с пакетными менеджерами – устанавливать и удалять пакеты.

Ниже приведены несколько примеров команд:

# руководство (справочная информация)
man <utility> # просмотр справочной информации по утилите
<utility> --help # просмотр справочной информации по утилите

# менеджер пакетов apt (.deb)
sudo apt install nano # установка пакета
sudo apt remove nano # удаление пакета
sudo apt autoclean # удаление кэша пакетов

# менеджер пакетов yum (.rpm) - для dnf команды полностью аналогичны
sudo yum install nano # установка пакета
sudo yum remove nano # удаление пакета
sudo yum clean all # удаление кэша пакетов

При необходимости уточняйте описание утилит и ключей выполнения в Интернете или в руководстве man.

Структура файловой системы и работа с файлами

Типы файлов

Все объекты в Linux являются файлами. Существуют следующие типы файлов:

  • Обычные файлы 
    Символьные и двоичные данные (текст, картинки, программы и др.)

  • Каталог (директория) d
    Список ссылок на файлы или другие каталоги

  • Символьные ссылки l
    Ссылки на другие файлы по имени

  • Блочные устройства b, символьные устройства c
    Интерфейсы для взаимодействия с аппаратным обеспечением (диски, терминалы, клавиатуры, принтеры и др.). Когда происходит обращение к файлу устройства, ядро операционной системы передает запрос драйверу этого устройства

  • Сокеты s и каналы p
    Интерфейсы для взаимодействия процессов

Читать подробнее: Типы файлов в Linux

Структура файловой системы

Структура файловой системы представляет собой дерево, корнем которой является каталог /.

Рассмотрим подробно структуру и назначение каталогов:

  • /bin (binaries) – исполняемые файлы самых необходимых утилит. Может быть символьной ссылкой на /usr/bin

  • /boot – файлы, необходимые для самого первого этапа загрузки – загрузки ядра (и обычно само ядро)

  • /dev (devices) – блочные и символьные файлы устройств (диски, терминалы, клавиатуры, принтеры и др.)

  • /etc (etcetera) – конфигурационные файлы системы и различных программ

  • /home – домашние каталоги пользователей для хранения «личных» файлов

  • /lib (libraries) – файлы библиотек (стандартных функций, необходимых многим программам), необходимых для работы утилит. Может быть символьной ссылкой на /usr/bin

  • /mnt (mount) – каталог для подключения файловых систем (съемных носителей и др.)

  • /opt (optional) – каталог для дополнительных программ (проприетарных драйверов, агентов мониторинга и др.)

  • /proc (process) – файлы в оперативной памяти, в которых содержится информация о выполняемых в системе процессах

  • /root – домашний каталог пользователя root

  • /sbin (system binaries) – файлы системных утилит, необходимые для загрузки, резервного копирования и восстановления системы. Может быть символьной ссылкой на /usr/sbin

  • /sys (system) – виртуальная файловая система sysfs, которая содержит информацию об аппаратном обеспечении (ЦПУ, ОЗУ, дисках, сетевых устройствах), драйверах, ядре системы и др.

  • /tmp – каталог для временных файлов, обычно зачищается при каждой загрузке системы

  • /usr – пользовательский каталог, который содержит каталоги исполняемых файлов и конфигурационных файлов

  • /var (variable) – файлы, создаваемые или используемые различными программами (логи, очереди, идентификаторы процессов, БД и др.)

Читать подробнее: Структура файловой системы Linux

Права доступа

В Linux права доступа к файлам (в том числе к каталогам) задаются для трех видов пользователей – владельца, группы владельца и остальных. Также есть три типа доступа к файлу – чтение r (Read), запись w (Write) и исполнение x (eXecution), которые задаются для каждого из видов пользователей. Прочерк  означает отсутствие доступа.

Таким образом, права доступа к файлу выглядят следующим образом:

  • права для владельца (u, user) – read, write, execution

  • права для группы владельца (g, group) – read, write, execution

  • права для остальных пользователей (o, other) – read, write, execution

Пример: rwx r— — означает, что у владельца есть права на все, у группы владельца доступ только на чтение, а у остальных доступа нет. В двоичной системе счисления эти права выглядят как три группы цифр – 111 100 000, что равносильно трем цифрам 7 4 0 в восьмеричной и десятичной системах счисления.

Читать подробнее: 

  • Владельцы файлов и папок в Linux

  • Команда chmod в Linux

Практика

На практике пользователю необходимо осуществлять навигацию по системе, просматривать, создавать, редактировать и удалять файлы, настраивать права доступа.

Ниже приведены несколько примеров наиболее часто используемых команд:

# руководство (справочная информация)
man <utility> # просмотр справочной информации по утилите
<utility> --help # просмотр справочной информации по утилите

# навигация
ls -la <dir> # просмотр содержимого каталога (в том числе прав доступа)
cd <dir> # переход в каталог

# каталоги
mkdir <dir> # создание каталога
rmdir <dir> # удаление пустого каталога
rm -rf <dir> # удаление каталога с файлами

# файлы
cat <file> # вывод файла в консоль
less <file> # постраничный вывод файла
tail <file> # вывод последних строк («хвоста») файла
vi <file> # редактиврование файла текстовым редактором vi
nano <file> # редактирование файла текстовым редактором nano
cp <file> <dir> # копирование файла в каталог
mv <file> <dir> # перемещение файла в каталог (для переименования переместите файл в тот же каталог)
rm <file> # удаление файла
rm -rf <dir>/* # удаление всех файлов в каталоге

# права доступа
chown <user> <dir> # установить пользователя владельцем каталога
chown <user>:<group> <dir> # установить владельца и группу владельца каталога
chmod 644 <file> # установить права доступа rw- r-- r-- (чтение и запись для владельца, чтение для группы владельца, чтение для остальных пользователей)
сhmod 740 <file> # установить права доступа rwx r-- --- (чтение, запись и исполнение для владельца, чтение для группы владельца)
chmod u+w <file> # добавить владельцу право на запись файла

При необходимости уточняйте описание утилит и ключей выполнения в Интернете или в руководстве man.

Процессы и потребление ресурсов сервера

Процессы

Если предельно упростить, то процесс – это любая программа, которая выполняется в системе. В ходе работы с системой может быть запущено множество программ, которые, в свою очередь, могут запустить множество процессов. Простейший пример процесса – командная оболочка bash. Каждому процессу в Linux присваивается уникальный идентификатор процесса (PID), который используется ядром для управления процессом до завершения программы или команды, с которой он связан.

Процесс может находиться в следующих статусах:

  • Выполнение (R, Running)
    Выполнение или ожидание ЦПУ для выполнения

  • Сон (S, Sleep)
    Прерываемое программно ожидание

  • Непрерываемый сон (D, Direct)
    Ожидание «прямого» сигнала от аппаратной части для прерывания

  • Приостановлен (T, Tracing)
    Отладка

  • Зомби (Z, Zombie)
    Выполнение завершено, однако ресурсы не освобождены

Почти любой процесс (кроме процесса в статусе D) может быть принудительно прерван администратором в случае необходимости («убит»). Это не всегда безопасно, однако возможно.

Запущенные процессы требуют использования аппаратных ресурсов сервера – ЦПУ, ОЗУ, дисков, сетевых интерфейсов.

Читать подробнее: Процессы в Linux

Практика

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

Ниже приведены несколько примеров наиболее часто используемых команд:

# руководство (справочная информация)
man <utility> # просмотр справочной информации по утилите
<utility> --help # просмотр справочной информации по утилите

# процессы
top
sudo ps aux
sudo kill -9 <pid> # убийство процесса по PID
sudo killall -s 9 <name> # убийство всех процессов по имени

# утилиты для мониторинга использования ресурсов
htop # использование ресурсов по процессам (может потребоваться установка пакета htop)
nmon # использование процессора по ядрам, памяти, дисков и др. (может потребоваться установка пакета nmon)
iostat # использование процессора в среднем по ядрам и чтение/запись по дискам

# ЦПУ
lscpu # общая информация
cat /proc/cpuinfo # подробная информация

# ОЗУ
cat /proc/meminfo # общая информация и потребление
free -h # удобное представление на основе данных из файла meminfo
ps aux --sort -rss # использование памяти по процессам

# диски
lsblk # общая информация
df -h # просмотр занятного места по разделам
du -сh <dir> # просмотр занятого места в каталоге

# сеть
/sys/class/net/<interface>/speed # просмотр максимальной скорости интерфейса

При необходимости уточняйте описание утилит и ключей выполнения в Интернете или в руководстве man.

Программный комплекс systemd

Зачем нужен systemd?

SystemD – это программный комплекс, состоящий из системных компонентов Linux. Основным компонентом является система инициализации системы SystemD, которая пришла на смену SystemV в большинстве современных дистрибутивов. Ядро Linux запускает процесс systemd, который, в свою очередь, запускает все остальные процессы системы.

SystemD предоставляет следующий функционал:

  • Запуск служб при старте системы (по возможности параллельно) по различным таргетам (target, аналог уровней загрузки в SystemV)
    Обеспечивается обратная совместимость с системами инициализации SystemV и LSB

  • Контроль состояния запущенных служб

  • Управление устройствами, входом в систему, сетевыми подключениями, ведение журнала событий

  • Интерфейсы для реализации функциональных возможностей ядра – cgroups, autofs, kdbus

  • Набор утилит для управления системой – systemctl, journalctl и др.

Что такое systemd unit?

SystemD Unit – это обычный текстовый файл в стиле ini, который декларативно описывает информацию о службах .service, устройствах .device, целях запуска .target и других типах модулей systemd.

Описание юнита состоих из нескольких секций:

  • Unit
    Description (краткое описание), After (ожидание запуска), Requires (обязательная зависимость) и др.

  • Service
    Type (тип) – по умолчанию Simple, ExecStart (команда для запуска), ExecStop (команда для остановки) и др.

  • Install
    WantedBy (таргет или уровень запуска, на котором юнит должен запуститься)

Файлы systemd unit располагаются в следующих каталогах:

  • /etc/systemd/system – юниты, создаваемые администраторами

  • /usr/lib/systemd/system – юниты из установленых пакетов

  • /run/systemd/system – юниты, создаваемые во время работы системы (в runtime)

Редактировать и создавать юниты можно с помощью текстового редактора (например vi или nano).

Читать подробнее:

  • Применение systemd: только самое главное

  • Понимание systemd юнитов

  • Примеры systemd unit – NGINX, Apache

Практика

На практике пользователю необходимо просматривать различные systemd unit, просматривать их содержимое и управлять сервисами, а также читать журналы логов.

Ниже приведены несколько примеров наиболее часто используемых команд:

# руководство (справочная информация)
man <utility> # просмотр справочной информации по утилите
<utility> --help # просмотр справочной информации по утилите

# просмотр юнитов
systemctl # список юнитов (это псевдоним команды systemctl list-units)
systemctl --type=service # юниты типа сервисы
systemct | grep <keyword> # юниты, содержащие ключевое слово (полезно для быстрого поиска)
systemctl cat <unit> # описание юнита

# управление юнитами
systemctl status <unit> # статус (состояние) юнита
sudo systemctl daemon-reload # перезагрузка конфигурационных файлов в systemd
sudo systemctl enable <unit> # включение сервиса в автозагрузку
sudo systemctl disable <unit> # отключение сервиса из автозагрузки
sudo systemctl start <unit> # запуск
sudo systemctl stop <unit> # остановка

# журналы логов
journalctl -u <unit> # чтение логов по юниту
journalctl -u <unit> --since today # чтение логов по юниту со смены дня 

При необходимости уточняйте описание утилит и ключей выполнения в Интернете или в руководстве man.

Сеть

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

Ниже приведены несколько примеров наиболее часто используемых команд:

# руководство (справочная информация)
man <utility> # просмотр справочной информации по утилите
<utility> --help # просмотр справочной информации по утилите

# просмотр сетевых настроек сервера
ip a # IP адреса
ip n # ARP таблица
cat /etc/resolv.conf # конфигурация DNS
sudo netstat -tulpn # открытые порты
sudo ss -tulpn # открытые порты (молодежный вариант)

# диагностика сетевых проблем
nslookup <hostname> # проверка разрешения DNS имени
ping <host> # отправка ICMP пакетов до хоста
traceroute <host> # трассировка до хоста UDP пакетами
telnet <host> <port> # проверка доступности TCP порта на хосте
nmap <host> # сетевое сканирование хоста
nmap -p T:<port> <host> # проверка доступности TCP порта на хосте (молодежный вариант)
nmap -p U:<port> <host> # проверка доступности UDP порта на хосте (молодежный вариант)

При необходимости уточняйте описание утилит и ключей выполнения в Интернете или в руководстве man.


Все статьи серии:

  1. Основы Linux (обзор с практическим уклоном)

  2. Основы виртуализации (обзор)

  3. Основы контейнеризации (обзор Docker и Podman)

  4. Основы мониторинга (обзор Prometheus и Grafana)

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

Здесь на сцену выходит Linux. Для среднестатистического пользователя похоже, что в компьютерных технологиях преобладают Windows, macOS или Android и iOS. Тем не менее, можно с уверенностью сказать, что большинство продуктов и услуг, не принадлежащих Microsoft (а также часть их собственной инфраструктуры), в значительной степени полагаются на промышленную мощь Linux.

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

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

Эта серия будет полностью практической, и вы должны будете следить за ней на своей машине. Мы структурировали пост таким образом, чтобы он был подробно описан, но не был слишком утомительным для новичков. Рассматривайте эту серию как эквивалент «Linux для чайников», с той лишь разницей, что вместо того, чтобы вбрасывать все знания сразу. Мы разделим на более мелкие значимые части. В отличие от большинства публикаций, которые мы публикуем, я бы посоветовал вам подготовиться к некоторой работе (в конце концов, лучший способ изучить Linux — это запачкать руки его нюансами). Прежде чем мы даже начнем все это, позвольте мне дать вам небольшое руководство по Linux и прояснить некоторые неправильные представления о том, чем Linux полностью отличается от Unix. Обещаю, это не продлится долго.

Основы Linux: чем он отличается от Unix?

1. начало

  • Юникс: Unix была создана в 1969 году в Bell Labs. Одним из самых известных членов-основателей был Деннис Ричи. Он был написан на C и был разработан как портативная операционная система, способная выполнять несколько задач одновременно.
  • Linux: Linux был построен Linux Torvalds и в значительной степени вдохновлен MINIX (Unix-подобный дистрибутив). Он многое унаследовал от Unix, но это совершенно другая система как внутри, так и снаружи. Исходное ядро ​​было выпущено в 1991 году, и после добавления таких вещей, как драйверы и графический интерфейс, а также некоторой столь необходимой доработки, полноценная ОС была выпущена в 1992 году.

2. развитие

  • Юникс: Unix не обязательно является проектом с полностью открытым исходным кодом. Части этого есть, но по своему духу это проприетарная система. Существует несколько версий Unix, таких как BSD, macOS и т. Д. Первоначальная разработка выполняется AT&T и несколькими другими коммерческими поставщиками.
  • Linux: В отличие от Unix, Linux процветает в экосистеме с открытым исходным кодом. Весь проект активно финансируется и контролируется Linux Foundation. Разработка по-прежнему контролируется Линусом, который решает вопрос о новом дополнении. Но практически любой человек с опытом программирования может бесплатно загрузить исходный код и внести изменения.

3. архитектура

  • Юникс: Unix был разработан для использования на Системы RISC и иранские машины, но позже он был портирован для работы на архитектурах x86 и x64.
  • Linux: Linux изначально создавался для архитектуры Intel x86, но на сегодняшний день он поддерживает почти все основные платформы, включая ARM, ARM64 и т. Д., Благодаря активному сообществу разработчиков.

4. Интерфейс командной строки

  • Юникс: Начал с поддержки Борн Шелл. Теперь также поддерживает Korn и C Shell.
  • Linux: Linux в основном использовал BASH (Bourne Again Shell).

5. Цена

  • Юникс: Некоторые дистрибутивы бесплатны с платной поддержкой (например, Solaris); другие полностью оплачены.
  • Linux: По большей части бесплатные (не считая корпоративных версий с приоритетной поддержкой и т. Д.).

Хорошо, теперь, когда мы выяснили, что такое Linux и чем он отличается от Unix. Давай запачкаем руки, не так ли?

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

Чтобы узнать, как использовать Linux, вы должны сначала запустить Linux в вашей системе. Есть несколько способов сделать это, некоторые из них могут использовать Live USB и загружаться на него, устанавливать его физически на вашем компьютере, создавать мультизагрузочную систему с двумя операционными системами, устанавливать ее на виртуальную машину (Virtual Machine), а также аренду Linux-сервера и подключения к нему SSH. Я уверен, что эксперты расширили бы этот список еще несколькими вариантами, но для краткости давайте остановимся на вышеизложенном. Хотя конечным результатом использования всех вышеперечисленных настроек будет получение доступа к консоли для выполнения команд Linux, шаги для этого зависят от каждого из них по количеству и сложности.

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

Мое единственное предположение, которое я буду продвигаться вперед, будет следующее.

  • У вас есть приличный компьютер (4-8 ГБ ОЗУ, относительно недавний процессор, такой как Intel Core i3 как минимум, как минимум 30 ГБ свободного места на SSD / HDD).
  • Вы подключены к приличному интернет-соединению (вам понадобится это, чтобы загрузить пару вещей).
  • Вы знаете базовые вещи, такие как установка прикладной программы в Windows или macOS (в зависимости от того, что вы используете).

Если вы можете отметить все вышеперечисленное, вы определенно в лиге. Хорошо, для начала нам понадобится пара вещей (в буквальном смысле).

  • Дистрибутив Linux (здесь мы будем использовать Ubuntu).
  • Гипервизор (приложение, которое позволяет нам установить дополнительную ОС поверх нашей основной ОС), мы будем использовать Virtual Box.

Отлично, теперь, когда все формальности позади, приступим к интересным вещам!

Шаг 1: Зайдем Веб-сайт Ubuntu и загрузите Ubuntu 16.04.x ​​LTS (мы используем это только для стабильности, так что вы не получите ненужных ошибок по пути).

Скачать Ubuntu

Как только вы закончите загрузку, у вас должен быть .iso файл в вашей системе. Вот как бы это выглядело.

Скриншот ISO

Шаг 2: Теперь отправляйтесь в Страница загрузок VirtualBox и скачать Пакет платформы VirtualBox 5.x в зависимости от того, какую ОС вы используете в настоящее время. Например, если вы используете Windows, получите первую, в которой написано Хосты Windows.

Скачать VirtualBox

Шаг 3: Теперь, когда у вас есть оба необходимых файла, просто установите VirtualBox. Просто дважды нажмите на .exe or .dmg файл, который был загружен, и следуйте инструкциям на экране. Убедитесь, что вы не делаете там ничего особенного, просто принять значения по умолчанию и завершите установку.

После этого запустите VirtualBox. Ваш экран должен выглядеть почти так же, как мой, как показано ниже, за вычетом списка виртуальных машин, которые у меня есть. (поскольку я уже использую Virtual Box, у меня настроено несколько виртуальных машин, ваш список будет пустым).

Экран VirtualBox

Шаг 4: Теперь мы продолжим и начнем установку Ubuntu через VirtualBox. Нажмите Новинки в верхнем левом углу окна VirtualBox. Вы получите диалоговое окно с просьбой назвать операционную систему. Введите Ubuntu в Имя, выберите Тип as Linux и Версия as Ubuntu (64-разрядная) и нажмите Продолжить (более новые версии Virtual Box будут автоматически заполнять поля Тип и Версия в зависимости от того, что вы ввели в поле Имя).

Новая ОС

Шаг 5: Теперь вас попросят указать объем оперативной памяти, который будет использовать эта гостевая ОС (Ubuntu); по умолчанию — 1 ГБ, что достаточно, поэтому оставьте его там и нажмите Продолжить.

Параметры памяти

Шаг 6: Здесь вам нужно указать жесткий диск, который будет использоваться операционной системой. Часто люди загружают предварительно сконфигурированные установки своих экземпляров виртуальных ящиков в форме чего-то известного как техника. Бытовая техника работает по принципу «включай и работай».

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

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

Тип жесткого диска

Шаг 7: Здесь укажите тип как ВДИ, который должен быть параметром по умолчанию, и нажмите Продолжить.

Шаг 8: Теперь выберите размер. Рекомендуется иметь динамически распределяется drive, потому что он масштабируется в соответствии с вашими потребностями по сравнению с опцией фиксированного размера, которая назначит всю сумму сразу, независимо от того, нужна она вам или нет.

Теперь выберите размер жесткого диска; это гарантирует, что жесткий диск никогда не превысит указанное количество. По умолчанию восемь, но убедитесь, что вы выбрали 9 ГБ на всякий случай.

Выбор ISO

Теперь, когда мы закончили настройку, давайте включим нашу машину. Выберите Ubuntu из списка слева и нажмите Start в строке меню окна VirtualBox. Сразу же появится диалоговое окно с просьбой вставить образ для загрузки Ubuntu. Здесь и понадобится образ Ubuntu, который мы скачали ранее. Нажать на кнопка папки (показано на изображении ниже) в диалоговом окне, перейдите и выберите образ Ubuntu и нажмите «Открыть». Как только изображение появится в раскрывающемся списке, нажмите «Пуск».

Выберите ISO с компьютера

Через пару секунд вы увидите варианты установки Ubuntu, как показано ниже. Мы можем идти вперед и «Попробуйте Ubuntu» без установки и установки. Сделаем последнее и нажмем на Установите Ubuntu.

Установщик Ubuntu
Подготовьте Ubuntu

Мы снова примем значения по умолчанию и продолжим. Снимите флажки для загрузки обновлений при установке параметров и параметров «Установить стороннее программное обеспечение» и нажмите «Продолжить». Затем проверьте Стереть диск и установить Ubuntu вариант и нажмите установить сейчас.

Появится диалоговое окно с просьбой подтвердить процесс стирания, нажмите Продолжить.

Стереть диск

На этом шаге выберите свое местоположение и нажмите Продолжить. Затем выберите раскладку клавиатуры. И, как обычно, жмем Продолжить. Затем укажите свое имя, имя пользователя и тому подобное в полях.

А теперь подожди. Принеси себе кофе. Пройдет время, пока это будет сделано.

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

Похлопайте себя по спине. Теперь, когда у нас есть установленный дистрибутив Linux, мы собираемся перейти к некоторым основным командам Linux.

Основные команды Linux

Запустите терминал в Ubuntu следующим образом:

После запуска он должен выглядеть так.

Терминал

Хорошо, мы готовы начать, просто чтобы вы знали, текущие снимки экрана не будут похожи на терминал Ubuntu, потому что для большей наглядности я буду использовать терминал Linux на своем сервере. Не беспокойтесь об этом; просто сосредоточьтесь на командах и посмотрите, получите ли вы те же результаты, что и я на скриншотах.

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

  • Дата и время
  • Навигация по файловой системе
  • Создание каталогов / папок и их удаление
  • Создание и удаление файлов
  • Поиск помощи

Но прежде чем пройти через это, давайте проведем церемониальный тест «Hello World» для нашего терминала, не так ли? Хорошо, а затем введите следующую команду в терминал.

эхо "Hello World"

Как только вы нажмете клавишу ввода, ваш терминал отобразит Привет мир приветствие. Это не только начинает наш список команд, но также является хорошим тестом для проверки, все ли работает должным образом. В эхо Команда отобразит строку текста, указанную после команд. Кавычки необязательны, но принято использовать их вместе с кавычками.

Привет мир

1. Дата и время

Начнем с очень простой команды, которая проверяет дату и время через терминал. Эта команда с метко названной датой отображает дату и текущее время в 24-часовом формате вместе с вашим часовым поясом. Пожалуйста, введите следующее в свой терминал, чтобы убедиться в этом сами.

данные
Время

2. Навигация по файловой системе

Важная вещь, которую мы, как пользователи, делаем в ОС, — это перемещаться из одной папки в другую. Итак, давайте узнаем, как это сделать на терминале, используя набор команд, предназначенных для этой цели.

  • PWD — Прежде чем мы начнем прыгать из одной папки в другую, давайте узнаем, как узнать, в какой папке мы сейчас находимся. Вы можете сделать это с помощью PWD команда. Это означает Pечать Working Dкаталог. Просто введите следующую команду и проверьте результат.
PWD
PWD
  • ls — Команда ls в основном используется для вывода списка всего содержимого, то есть файлов и папок в данном каталоге. Просто введите следующее в свой терминал, и он перечислит все, что есть в вашем текущем каталоге.
ls
ls

По умолчанию ls перечисляет только имена файлов, чтобы получить подробную информацию о каждом файле, который вы можете использовать -l вариант вместе с ls следующим образом.

ls -l
ls -l

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

  • cd — Теперь, когда мы знакомы с тем, как составлять список файлов и проверять текущий каталог, давайте рассмотрим, как переключаться между каталогами. Команда cd означает «Изменить каталог» и используется следующим образом. Если вы находитесь внутри каталога и в нем больше каталогов, вы можете перейти в подкаталог следующим образом.
компакт-диск NAME_OF_DIRECTORY

Замените NAME_OF_DIRECTORY в приведенной выше команде с именем каталога, в который вы хотите перейти. Пример показан ниже.

Как видите, текущий каталог меняется, как только мы входим в подкаталог.

cd

Теперь, когда мы в каталоге, как нам выйти? Что ж, вы снова можете использовать опцию вместе с cd, чтобы выйти из подкаталога в родительский каталог. В моем примере я нахожусь в ~ / iOSProjects / 100DaysOfSwift , чтобы вернуться к ~ / iOSProjects Я буду использовать следующую команду.

CD ..

Это поднимет меня на 1 уровень. Теперь я в ~ / iOSProjects каталог, как показано ниже.

CD ..

Если бы я хотел уйти от ~ / iOSProjects / 100DaysOfSwift вплоть до корня, то есть ~ , команда cd будет иметь следующую структуру.

CD ../ ..

Уровни вложенности каталогов будут определять количество ../ .. в ваших вариантах.

3. Создание и удаление папок / каталогов

CD../..

Еще одна простая задача, которую мы регулярно выполняем, — это создание и удаление папок. Это можно сделать с помощью следующих двух команд.

  • mkdir — Команда mkdir расшифровывается как Make Directory и довольно проста в использовании. Просто введите его следующим образом.
mkdir ИМЯ_OF_DIRECTORY
Команда mkdir

Заменить NAME_OF_DIRECTORY с именем, которое вы хотите дать своему новому каталогу. После этого вы можете успешно перейти к нему, как показано ниже.

  • rmdir — Команда rmdir означает «Удалить каталог» и используется для удаления каталогов / удаления каталогов. Чтобы удалить каталог, вам необходимо находиться вне его / на уровне выше него. Как только вы вне каталога и что каталог пуст, просто введите следующую команду.
rmdir NAME_OF_DIRECTORY

Заменить NAME_OF_DIRECTORY с именем каталога, который вы хотите удалить. Помните, что эта команда будет работать только в том случае, если удаляемая директория пуста.

Команда rmdir

4. Создание и удаление файлов.

Далее давайте узнаем о создании файлов. Поскольку здесь мы сосредоточены исключительно на терминале, а не на других приложениях, вам может быть интересно, как бы вы создавали файлы разных форматов (txt, docx и т. Д.), Верно? ну, вот где наша следующая команда появится на картинке.

  • трогать — Хотя официальная цель использования сенсорного экрана — изменить время доступа к файлу и его модификации, его также можно использовать для создания нового файла. Он используется следующим образом.
нажмите FILENAME.EXTENSION

Заменить ИМЯ ФАЙЛА и РАСПРОСТРАНЕНИЕ с теми, кого вы хотите. Пример использования показан ниже. Если ваш терминал выполняет команду без сообщения, скорее всего, команда была успешной, и вы можете проверить, что файл был создан с помощью ls команда.

Сенсорная команда

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

  • rm — Команда rm означает «Удалить», и она выполняет то, что следует из названия, она используется для удаления файлов и каталогов. Он используется следующим образом.
rm ИМЯ ФАЙЛА.РАСШИРЕНИЕ

Заменить ИМЯ ФАЙЛА и РАСПРОСТРАНЕНИЕ с теми, кого вы хотите.

ЗАМЕТКА: Команда rm необратима, поэтому всегда проверяйте, удаляете ли вы нужные файлы. Более безопасный способ сделать это — использовать команду rm вместе с -i вариант; при этом терминал попросит вас подтвердить, хотите ли вы удалить файл или нет. Он используется следующим образом.

rm -i ИМЯ ФАЙЛА.РАСШИРЕНИЕ
rm Команда

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

5. Обращение за помощью

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

В Linux есть команда man, что означает «Страницы руководства». Он используется для получения документации по конкретной команде, если вы не уверены в команде, выполните следующие действия.

человек COMMAND_NAME

Замените поле COMMAND_NAME именем фактической команды, и будет представлена ​​полезная документация. Вы можете использовать Пробел прокручивать и к выход страница руководства нажмите q. Пример использования показан ниже.

справочная страница

Заключение

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

Раскрытие информации: Контент, опубликованный на TechLila, поддерживается читателями. Мы можем получать комиссию за покупки, совершенные по нашим партнерским ссылкам, без каких-либо дополнительных затрат для вас. Читайте наши Страница отказа от ответственности чтобы узнать больше о нашем финансировании, редакционной политике и способах поддержки.

Если собираетесь впервые перейти на Linux, есть некоторые вещи, которые вы должны знать. Это руководство содержит важную информацию, которая поможет вам начать ей пользоваться.

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

Содержание

  • Что такое Linux?
  • Зачем использовать Linux вместо Windows?
  • Какой дистрибутив Linux стоит использовать?
  • Что такое среда рабочего стола?
  • Как подключиться к интернету
  • Лучшая система для просмотра веб-страниц
  • Есть ли достойные офисные пакеты для Linux?
  • Как устанавливать программы в Linux?
  • Командная Строка Linux
  • Еще несколько фактов о Linux
  • Резюме

Что такое Linux?

Linux – это операционная система используется в работе множества систем от лампочек до оружия, от ноутбуков до крупных вычислительных центров.

На Linux работает все: от вашего телефона до вашего умного холодильника.

В пользовательской среде Linux является альтернативой коммерческим операционным системам, таким как Windows.

Зачем использовать Linux вместо Windows?

Есть много причин, почему стоит использовать Linux вместо Windows, и вот лишь некоторые из них.

  1. ОС Linux поддерживается на старых компьютерах. Хотя Windows XP по-прежнему будет работать на старом оборудовании, она больше не поддерживается, поэтому обновления для системы безопасности отсутствуют. Существует ряд дистрибутивов Linux, которые создаются специально для старого оборудования и регулярно поддерживаются и обновляются.
  2. Некоторые дистрибутивы Linux и среды рабочего стола теперь более привычны для обычных пользователей компьютеров, чем Windows 8 и Windows 10. Если вам нравится внешний вид Windows 7, почему бы не попробовать Linux Mint, например.
  3. Объем, занимаемый Windows 10 огромен. Типичный дистрибутив Linux занимает чуть более 1 гигабайта, хотя некоторые из них могут занимать всего несколько сотен мегабайт. Также Windows требует по крайней мере пропускной способности уровня DVD.
  4. Linux поставляется с бесплатным программным обеспечением, и вы можете изменять и использовать это программное обеспечение по своему усмотрению.
  5. Linux всегда был более безопасным, чем Windows, так как для него существует очень мало вирусов, хотя интернет вещей и был под угрозой в последнее время.
  6. Linux работает лучше, чем Windows, во многих отношениях, и вы можете выжать из него все ресурсы до последней капли на более старом оборудовании, имеющем ограничения.
  7. Конфиденциальность. Windows регулярно собирает данные, полученные с помощью Cortana и поиска в целом. Хотя это вещь не новая, так как Google делает то же самое, но вы можете быть более чем уверены, что Linux так не поступает, особенно если вы выбираете бесплатный дистрибутив.
  8. Надежность. Когда программа зависает в Linux вы можете закрыть его довольно легко. Когда программа зависает в Windows, даже когда вы пытаетесь запустить Диспетчер задач, чтобы закрыть эту программу, это не всегда получается.
  9. Обновления. Windows очень навязчива со своей политикой обновления. Сколько раз вы включали компьютер, чтобы распечатать билеты на концерт или другую важную информацию, чтобы увидеть экран с установкой обновления 1 из 450?
  10. Вариативность. Вы можете заставить Linux выглядеть, ощущаться и вести себя именно так, как вы хотите. С Windows, компьютер ведет себя так, как в Microsoft думают, что вы хотите.
    Если вы все еще не определились, прочтите это руководство, которое поможет вам решить, подходит ли вам Linux.

Какой дистрибутив Linux стоит использовать?

Первый вопрос, которым стоит задаться “что такое дистрибутив Linux?” Просто ядро Linux похоже на движок. Дистрибутив – это фактически транспортное средство, в котором находится двигатель.

Так какой дистрибутив Linux выбрать? Вот основные из них:

  • Linux Mint: не требует продвинутого опыта работы с компьютером, прост в установке, прост в использовании и имеет знакомый рабочий стол для пользователей Windows 7
  • Debian: если вы ищете действительно бесплатный дистрибутив Linux без проприетарных драйверов, прошивки или программного обеспечения, то Debian для вас. Старичок среди дистрибутивов.
  • Ubuntu: современный дистрибутив Linux, который прост в установке и использовании
  • openSUSE: стабильный и мощный дистрибутив Linux. Не так просто установить, как Mint и Ubuntu, но тем не менее является очень хорошей альтернативой
  • Fedora: самый современный дистрибутив Linux со всеми новыми концепциями, включающимися при первой же возможности
  • Mageia: восстал из пепла некогда великой Mandriva Linux. Прост в установке и использовании
  • CentOS: как и в Fedora, CentOS основан на коммерческом дистрибутиве Linux, Red Hat Linux. В отличие от Fedora, он создан для стабильности
  • Manjaro: основанный на Arch Linux, Manjaro обеспечивает отличный баланс между простотой использования и современным программным обеспечением
  • LXLE: на основе легкого дистрибутива Lubuntu он представляет из себя полнофункциональный дистрибутив Linux для старого оборудования
  • Arch: rolling release дистрибутив означает, что вы не должны устанавливать новые версии операционной системы, потому что оно самостоятельно обновляется. Сложнее для нового пользователя в освоении, но очень мощный
  • Elementary: Linux для людей, которым нравится интерфейс в стиле Mac

Более подробно про лучшие дистрибутивы для новичков вы можете прочесть в этой статье.

Что такое среда рабочего стола?

Типичный дистрибутив Linux состоит из нескольких компонентов.

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

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

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

Наиболее распространенные среды рабочего стола включают Cinnamon, GNOME, Unity, KDE, Enlightenment, XFCE, LXDE и MATE.

  • Cinnamon – это более традиционная среда рабочего стола, которая похожа на Windows 7 с панелью внизу, меню, значками в системном трее и значками быстрого запуска.
  • GNOME и Unity довольно похожи. Они представляют собой современные среды рабочего стола, которые используют концепцию значков лаунчеров и отображения в стиле панели мониторинга для выбора приложений. Есть также основные приложения, которые хорошо интегрируются с общей темой среды рабочего стола.
  • KDE – это довольно традиционная среда рабочего стола, но она имеет огромное количество функций и основной набор приложений, которые легко кастомизируется большим количеством настроек.
  • Enlightenment, XFCE, LXDE и MATE – довольно легкие среды рабочего стола с панелями и меню. Все они легко настраиваются.

Как подключиться к интернету

В то время как подключение к интернету отличается для каждой среды рабочего стола, принцип для всех одинаков.

  1. Где-то на панели находится значок сети. Нажмите на него, и вы увидите список беспроводных сетей.
  2. Кликните на нужную сеть и введите ключ безопасности.

Лучшая система для просмотра веб-страниц

На Linux есть все лучшие браузеры, включая Chrome, Chromium, Firefox и Midori.

На нем нет Internet Explorer, в прочем кому он нужен? В браузере Chrome есть все, что вам может понадобиться.

Есть ли достойные офисные пакеты для Linux?

Нет никаких сомнений, что Microsoft Office – это премиальный продукт, и это очень хороший инструмент, который трудно повторить и превзойти качества данного продукта.

Для личного использования и для малого и среднего бизнеса вы можете утверждать, что Google Docs и LibreOffice являются хорошими альтернативами и за меньшую стоимость.

LibreOffice поставляется с текстовым редактором с большинством функций, которые вы ожидаете увидеть в текстовом редакторе. Он также поставляется с достойной электронной таблицей, который также является полнофункциональной и даже включает базовый движок для программирования, хотя она не совместима с Excel VBA.

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

Как устанавливать программы в Linux?

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

Как правило, если пользователь Linux хочет установить пакет, он запускает инструмент, именуемый менеджер пакетов.

Менеджер пакетов обращается к репозиториям, в которых хранятся пакеты, которые можно установить.

Инструмент управления пакетами обычно предоставляет способ поиска программного обеспечения, установки программного обеспечения, поддержания программного обеспечения в актуальном состоянии и удаления программного обеспечения.

По мере развития технологий, некоторые дистрибутивы Linux вводят новые типы пакетов, которые самодостаточны так же, как приложения для Android.

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

  • Например, Ubuntu, Linux Mint и Debian используют менеджер пакетов apt-get.
  • Fedora и CentOS используют менеджер пакетов yum.
  • Arch и Manjaro используют Pacman.

Более подробно об установке приложений в Linux вы можете узнать из этой статьи.

Командная Строка Linux

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

Хотя полезно изучить основные команды Linux (то же самое можно сказать и о командах DOS в Windows), нет необходимости делать это.

Первое, что вам нужно знать, конечно, как открыть терминал, и, разумеется, есть, множество способов сделать это.

Почему это называется терминалом? Терминал на самом деле короткое имя для эмулятора терминала, и оно возвращает нас в то время, когда люди входили в систему на физических терминалах. Теперь все, что вам нужно знать, это то, что терминал – это место, где вы вводите команды Linux.

Как только вы откроете терминал, вы должны действительно в нем разбираться. Сперва вам стоит узнать о правах. Подробней об этом вы сможете прочесть в этой статье.

Команда, которую пользователи обычно узнают на ранней стадии – это команда sudo, но не начинайте бездумно вводить команды с помощью sudo, не понимая, что она делает, потому что все это может закончиться катастрофой.

В то время как вы работаете в терминале, вы должны также понимать в переключении пользователей с помощью команды su.

По сути, команда sudo позволяет повысить уровень прав, так что вы можете запускать команды от имени другого пользователя. По умолчанию другой пользователь является пользователем root.

Команда su переключает контекст таким образом, что вы работаете от имени указанного пользователя. От имени этого пользователя можно выполнить ряд команд.

Еще несколько фактов о Linux

  • Live Linux DVD или USB позволяет запускать Linux без установки на жесткий диск. Это позволяет тестировать Linux диск перед переходом на него, а также хорошо для случайного пользователя.
  • Каждый дистрибутив Linux устанавливается с помощью своего установщика, который является программой, которая поможет вам произвести настройку и установку Linux.
  • Когда пользователь устанавливает Linux, он может либо установить его единственной системой, либо установить его вместе с Windows.
  • Linux берет пальму первенства, когда дело доходит до воспроизведения аудиофайлов. Есть десятки отличных звуковых приложений, и вы можете выбрать одно или несколько, которые вам нравятся.
  • К сожалению, на Linux нет Outlook.
  • Самое замечательное в Linux то, что вы можете заставить его выглядеть и ощущаться так, как вы хотите.
  • Каждая среда рабочего стола Linux работает немного по-разному, и поэтому познание всех баз займет некоторое время.

Резюме

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

Это должно дать вам хорошую основу для дальнейшего движения.

Все системные администраторы рано или поздно начинают записывать команды в текстовый файлик сразу с нужными параметрами и опциями, чтобы заново не перечитывать man’ы. Было принято решение его структурировать, и лучше wiki инструмента не нашлось. Информация собрана здесь коллективным разумом, накоплена с опытом, подсмотрена на различных сайтах и в книгах. Убедительная просьба к системным администраторам — давайте синхронизировать наши знания!

Работа в командной строке Bash[править]

Конфигурационные файлы[править]

  • ~/.bashrc — исполняется в начале каждой новой сессии Bash.
  • ~/.bash_profile — исполняется один раз в начале входа в систему.
  • ~/.bash_logout — исполняется один раз после выхода из системы.
  • ~/.inputrc — настройка горячих клавиш для пользователя.

Обычно в ~/.bashrc добавляются псевдонимы для некоторых команд с целью сократить время на ввод. Обычно они добавляются так:

  • echo "alias iconv='iconv -f cp1251 -t utf8'" >> .bashrc — добавление псевдонима для команды iconv.

Если для некоторой команды есть псевдоним и требуется пресечь вызов по псевдониму (например в сценариях), следует добавлять обратный слеш в начало команды. Например, для псевдонима, который мы ввели выше, запись в сценарии должна быть такой iconv.

Горячие клавиши[править]

Ниже приведены некоторые ходовые горячие клавиши для командной оболочки.

  • Esc+. или Alt+. — ввести последний аргумент предыдущей команды.
  • ⇧ Shift+PageUp — пролистать экран консоли на одну страницу наверх.
  • Ctrl+a или Home — переместить каретку в начало командной строки.
  • Ctrl+e или End — переместить каретку в конец командной строки.
  • Ctrl+r и Ctrl+s — поиск по истории команд соответственно вперед и назад.
  • Ctrl+n или стрелка вниз — пролистать историю в командной строке вперед.
  • Ctrl+u — вырезать впередистоящий от каретки фрагмент.
  • Ctrl+w или Alt+← Backspace — вырезать впередистоящее от курсора слово.
  • Ctrl+k — вырезать фрагмент от каретки и до конца командной строки.
  • Alt+b — переместить каретку на одно слово назад.
  • Alt+f — переместить каретку на одно слово вперед.
  • Alt+d — вырезать следующее слово от каретки.
  • Ctrl+y — вставить вырезанный фрагмент.
  • Ctrl+l — очистить экран (вызов команды clear).
  • Ctrl+d — ввести в командную строку символ EOF. Для командной оболочки это означает завершить сеанс.
  • Ctrl+z — ставит на паузу исполняемую на переднем плане команду и возвращает управление оболочке. Командой fg <идентификатор> перевести задачу с указанным идентификатором на передний план. Командой bg <идентификатор> перевести задачу на задний план.
  • Ctrl+s — остановить прием символов терминальным устройством.
  • Ctrl+q — возобновить прием символов терминальным устройством.

Некоторые ходовые псевдонимы и функции .*shrc[править]

# Поиск запущеных приложений по имени
alias psgrep='ps aux | grep --color $(echo "$1" | sed "s/^(.)/[1]/g")'
# или
alias psgrep='ps aux | egrep -i'

# Список отсортированных по размеру директорий в текущей рабочей директории
alias dirsz='du -s `pwd`/* | sort -nr | cut -f 2- | while read a; do du -sh "$a"; done'

# Открыть доступ к директории через HTTP-сервер в библиотеке Python.
# Сервер слушает порт 8000.
alias sharethis='python -m SimpleHTTPServer'

# Поиск в истории команд по ключевому слову без учета регистра
alias hh='history | egrep -i'

# Пинг публичного dns-сервера
alias p='ping 8.8.8.8 -A'

# Выводит внешний IP-адрес вашего интернет-шлюза
myip(){ lynx --dump 2ip.ru | egrep -o '([[:digit:]]{1,3}.){3}[[:digit:]]{1,3}' | uniq; }
# или
myip(){ curl -s checkip.dyndns.org | sed 's/[^0-9.]//g'; }
# или
myip(){ curl ifconfig.me; }

# Убить процессы по имени исполняемого файла
ki() {
   [[ $1 = '' ]] || [[ $1 = '-h' ]] || [[ $1 = '--help' ]] && echo "usage: $0 <program1..programN>" && return 1
   for process in $*; do 
	  { kill -9 `pidof $process` 2>/dev/null && echo "$process" killed; } ||
	  { echo $process not found: seems like nothing to kill; }
   done
}

# Вывести файл без комментариев и пустых строк
# Пример: gr /etc/fstab
gr(){ egrep -v '^#|^$' "$1"; }

# Генерирование 10-и запоминаемых восьмизначных паролей (pwgen -B 8 10), c цифрами (-n), с буквами из верхнего регистра (-с), и вычислить MD5-хеш к нему.
alias pwg='pwgen -cnB 8 10 | while read PASS; do echo -n -e "$PASSt"; echo -n "$PASS" | md5sum | cut -f1 -d" "; done'

# Эмуляция утилиты service в Red Hat
service()
{
   init_path="/etc/rc.d"
   if [ -f ${init_path}/${1} ]; then service=${1}
	 if [ "$uid" != "0" ] && {command -v sudo 2>&1 >/dev/null;}; then
		  sudo_cmd="sudo"
     fi
   fi
   case "$2" in
	  force-restart)
                ${sudo_cmd} ${init_path}/${service} force-restart;;
	  force-reload)
                ${sudo_cmd} ${init_path}/${service} force-reload;; 
	  reload)
                ${sudo_cmd} ${init_path}/${service} reload;;
	  setup)
		        ${sudo_cmd} ${init_path}/${service} setup;;
	  start)
                ${sudo_cmd} ${init_path}/${service} start;;
      stop)
                ${sudo_cmd} ${init_path}/${service} stop;;
      restart)
                ${sudo_cmd} ${init_path}/${service} restart;;
	  setup)
                ${sudo_cmd} ${init_path}/${service} setup;;
	  *)
               echo "usage: $0 <service name> <action>" ;;
   esac
}

# Делает снимок участка экрана, выделенного мышью, и отправляет его на хостинг изображений
screenshot() {
	scrot -s "%Y-%m-%d_$wx$h.png" -e 'ompload  $f ; rm $f'
}

Скрипты[править]

Калькуляторы[править]

  • let "a = 2 + 2" — вычисления командой let.
  • bс -l — утилита bc позволяет производить вычисления в интерактивном режиме. Опция -l определяет стандартную библиотеку.
  • echo $((2+2)) — вычисления через подстановку.
  • awk 'BEGIN { print exp(1)+2^(1.0/3); }' — вычисления через команду awk.
  • perl -le "print 3*5" — вычисления через Perl.
  • python -c "print (9*5)" — вычисления через Python.
  • mysql -e "select 1+2*(1+2)"

Утилита screen[править]

Пример работы screen. На один экран терминала выведено два экрана сессии screen

Screen — оконный менеджер, разделяющий один физический терминал между несколькими процессами. Обычно используется для создания нескольких экранов в рамках одной SSH-сессии во время удаленного администрирования.

Основы работы с утилитой[править]

Простой ввод команды screen создаст новую сессию утилиты с одним экраном. Находясь на любом экране, вы можете использовать последовательности клавиш для быстрой работы с ними. Все комбинации начинает Ctrl+a и далее идет клавиша.

  • Ctrl+a, c — создать новый экран.
  • Ctrl+a, w — посмотреть список открытых экранов.
  • Ctrl+a, <цифра> — переключиться на указанный экран. Экраны отсчитываются с нуля.
  • Ctrl+a, " — переключиться на нужный экран из списка.

Если вы хотите видеть что происходит на каждом экране на одном мониторе, то экран терминала можно разделить на несколько подокон и в каждое из них поместить по открытому экрану утилиты.

  • Ctrl+a, S — разделить экран терминала по горизонтали на два. Обратите внимание, что S должна вводиться в верхнем регистре, т.е. нужно зажать ⇧ Shift перед вводом.
  • Ctrl+a, | — разделить экран терминала по вертикали.

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

  • Ctrl+a, Tab ↹ — переключиться на внутреннее окно в прямую сторону, т.е. слева направо, сверху вниз.
  • Ctrl+a, X — закрыть подокно, которое сейчас в фокусе.
  • Ctrl+a, Q — закрыть все подокна, оставив только текущее.

У каждого внутреннего окна в нижней части можно увидеть ярлычок, например 0 john@server:~. При желании его можно изменить на более информативный для вас через комбинацию Ctrl+a, A, а затем дополнить или переписать содержимое.

  • Ctrl+a, — закрыть все активные экраны и завершить сессию screen.
  • Ctrl+a, d — отключиться от текущей сессии screen без закрытия, при этом вам будет сообщен ее идентификатор для повторного подключения. Чтобы подключиться к существующей сессии, утилита должна вызываться например с ключом -r.

Если вы забыли комбинацию, то вы можете вывести подсказку сочетанием Ctrl+a, ?.

Опции утилиты[править]

  • screen -ls — вывести идентификаторы активных сессий screen списком.
  • screen -r 4541.pts-1.mail — восстановить сессию с идентификатором 4541.pts-1.mail.
  • screen -x 4541.pts-1.mail — параллельное подключение к сессии screen, для совместной работы в одном терминале нескольких пользователей. Для этого сначала нужно войти в систему под пользователем, создавшим сессию screen.

Утилита tmux[править]

Более продвинутый аналог screen. К основным преимуществам tmux по сравнению со screen можно отнести:

  • наличие информативной псевдографики;
  • поддержка мыши, если псевдотерминал открыт в оконной среде;
  • поддержка собственной командной строки.

Основы работы с утилитой[править]

Простой вызов tmux создаст сессию с одним экраном. Если вы привыкли к screen, то не все так плохо, так как разработчики оставили многие комбинации похожими, но теперь они начинаются на Ctrl+b.

  • Ctrl+b, c — создать еще один экран в текущей сессии.
  • Ctrl+b, w — выбрать один из открытых экранов из списка.
  • Ctrl+b, <число> — переключиться на открытый экран по его номеру. Экраны отсчитываются с нуля.
  • Ctrl+b, d — отсоединиться от текущей сессии tmux.
  • Ctrl+b, , — переименовать ярлычок активного экрана.
  • Ctrl+b, " — разделить экран терминала на две части по горизонтали.
  • Ctrl+b, % — разделить экран терминала на две части по вертикали.

Теперь между внутренними окошками можно перемещаться по стрелкам в любом направлении, т.е. Ctrl+b, <стрелка>. Размеры внутренних окошек можно менять по размеру, для чего нужно использовать серию Ctrl+b, Ctrl+<стрелка>, причем стрелку нужно зажимать в этом случае.

  • Ctrl+b, o — переместить фокус на следующее внутреннее окно.
  • Ctrl+b, ; — переместить фокус на предыдущее внутреннее окно.
  • Ctrl+b, x — закрыть текущее внутреннее окно.
  • Ctrl+b, : — перейти к командной строке tmux.

Если вы работаете без мыши, то копировать содержимое нужно следующим образом:

  1. Перейдите в режим копирования нажав серию Ctrl+b, [.
  2. Чтобы выделить некоторую часть, стрелками переместите каретку на первый копируемый символ, а затем нажмите Ctrl+Space, после чего перемещение каретки будет приводить к выделению последующих символов. Стрелками выделите копируемый фрагмент.
  3. Для копирования нажмите Ctrl+w, после чего вы перейдете в нормальный режим.
  4. Для вставки скопированного фрагмента нажмите серию Ctrl+b, ].
  5. Чтобы выйти из режима копирования без копирования, нажмите q или Esc.

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

Чтобы отключиться от сессии, нужно нажать Ctrl+b, d. Сессия будет активна пока активен сервер tmux.

Командная строка tmux[править]

В отличие от Screen, Tmux имеет свою командную строку, которая вызывается Ctrl+b, :. Обычно все команды, которые туда вводятся, имеют аналог в форме горячих клавиш, поэтому вы не часто будете пользоваться этой возможностью.

Опции команды[править]

  • tmux new-session -s <имя> — создать сессию с указанным именем.
  • tmux attach -t <имя> — подключиться к сессии с указанным именем.
  • tmux list-clients — посмотреть список всех открытых сессий на tmux-сервере.

Работа с файлами[править]

Создание[править]

  • fallocate -l 10m filename — резервирование диска под файл размером 10 мегабайт

Права[править]

  • chmod -R 741 /var/www/files — Сменить права рекурсивно (-R) во всей папке files на rwx r— —x, где: 4 — чтение (r), 2 — запись (w), 1 — выполнение (x)
  • chmod -R u+rwx, g+r-xw, a-rw+x /var/www/files — Смена прав рекурсивно (-R) во всей папке files на rwx r— —x, где u+rwx — u (user — владелец файла) добавить rwx, g+r-xw (group — пользователи группы владельца) добавить r убрать xw, a-rw+x (all — для всех пользователей, эквивалентно ugo) убрать rw добавить x, где r — чтение, w — запись, x — выполнение
  • chattr +Sai — Добавление атрибутов к файлу, синхронное изменение всех данных на диск, без кэширования (S); только добавление данных, удаление и переименование запрещено (a); запрещено удаление, изменение или переименование (i) (immutable)
  • chmod g+ws, o= /tmp/test/ — Включить наследование группы к которой принадлежит /tmp/test/ для всех вновь создаваемых объектов
  • cd <dir> && chown user.user -R . — Рекурсивное изменение группы и пользователя всех объектов в <dir>

Поиск[править]

  • locate foo — Быстрый поиск по файлам, заранее проиндексированным посредством updatedb
  • mlocate foo — То же самое, но updatedb.mlocate не индексирует заново не изменявшиеся файлы
  • pinfo bash — Удобная замена info
  • find /usr/bin -type f -mtime −10 -iname ‘*.log’ — Найти все файлы в ‘/usr/bin’, созданные или изменённые в течение последних 10 дней, с именем заканчивающимся на «.log» без учета регистра
  • find /usr/project (-name *.htm -o -name ‘*.html’ ) -exec enconv -V —convert-to=UTF-8 {} ; — Конвертировать найденные файлы в правильную кодировку
  • find -iname ‘*.mp3’ -print0 | xargs −0 mid3iconv -eCP1251 —remove-v1 — Конвертация тегов в UTF-8 (должен быть установлен python-mutagen)
  • find /bakdir -name bak-20??-??-??.tar.gz | sort | head -n −7 | egrep -v 20[01][0-9]-[01][0-9]-01 | while read I ; do rm -v «$I»; done — Вымученная изящная конструкция, по очистке бэкап архивов, которая оставляет файлы за последнюю неделю и каждое первое число. find выводит список наших бэкап файлов, формат которых bak-год-месяц-число.tar.gz, sort правильно сортирует, head передает все файлы, кроме последних 7-ми, egrep исключает файлы за первое число, конструкция while удаляет остальное
  • ls /bakdir/bak-20??-??-??.tar.gz | head -n −7 | egrep -v ’20[01][0-9]-[01][0-9]-01′ | while read I ; do rm -v «$I»; done — Еще более изящная и ресурсоемкая конструкция
  • rm -rf `find ./ -iname ‘*.svn’` — удаляет все служебные папки SVN
  • find . -name «*.*»| while read i;do cat «$i» | grep -H —label=»$i» -n «что нужно найти»;done — поиск по содержимому файлов в папке
  • grep -r «что нужно найти» /путь/до/папки — поиск по содержимому файлов в папке
  • shopt -s globstar; builtin echo **/*.txt — рекурсивный поиск по шаблону в директории (используется только /bin/bash)

Вывод[править]

  • tar -cjvf /home/user/etc_`date ‘+%Y-%m-%d’ -d yesterday`.tar.bz2 /etc — (с)Запаковать в (f)tar-архив и (j)сжать bzip2 папку /etc c текущей датой в имени файла, с (v)подробным выводом
  • tar -C каталог_источника —exclude={«/home*»,»/etc/passwd*»/,»/etc/shadow*»}-czpvf — . | ssh user@REMOTE_IP «cat > каталог_назначения/backup.tgz» — Запаковать с соответствующими исключениями и передать посредством ssh на удаленный сервер
  • tar -xzvf /home/user/Downloads/centerim-4.22.6.tar.gz -С /opt/ — (x)Распаковать (z)gzip-архив в /opt
  • tar —use-compress-program=xz -xvf kernel.txz — Распаковать xz-архив
  • grep -v ^# /etc/mail.conf | grep -v ^$  — Показать файл без комментариев и пустых строк (неоптимально)
  • egrep -v ‘^s*(#|$)’ /etc/mail.conf — Показать файл без комментариев и пустых строк (оптимально)
  • ls -f1 /var/log/packages/ | wc -l — Вывести количество строк (wc -c — байт)
  • diff -y httpd.conf httpd.con.new — Сравнение в две колонки
  • diff -u httpd.conf httpd.con.new — Унифицированное cравнение (в один столбец, но читаемо). (рек. colordiff)
  • tail -n +5 /file — Вывести строки, начиная с 5-ой
  • egrep -o ‘([[:digit:]]{1,3}.){3}[[:digit:]]{1,3}’ — Вывести только IP
  • … | awk ‘{print($1″STRING»)}’ — Вывести то что в пайпе, добавив STRING
  • awk ‘$1==»string» {print $2}’ file1 >> file2 — Считать файл file1 , если данные в первом столбце равны ‘string’ добавить в файл file2 данные из второго столбца этой строки
  • … | tr ‘n’ ‘ ‘ — Заменить все переносы строки на пробелы
  • … | awk ‘{s += $2} END {print s*9}’ — Сложить второй столбец и вывести результат умноженный на 9
  • TIME=$(LANG=en_US.UTF-8 date -d ‘2 min ago’ ‘+[%d/%b/%Y:%H:%M:’);awk «/$TIME/,/END/» /var/log/nginx/access.log | awk ‘$0~»GET / HTTP» {print $1}’ | sort -rg | uniq -c | awk ‘$1>5 {print $2}’ >> black.list — Еще один вымученный скрипт против DDOS, если host попросил больше 5 раз за 2 минуты главную страницу вашего сайта, то он добавляется в black.list, дальше можно и в ipset
  • cat /tmp/text | /usr/local/bin/topnwords.pl | head -n 5 — показать TOP5 слов в файле text
#! /usr/bin/env perl

#file /usr/local/bin/topnwords.pl

my %x;
while(<>) {
    ($x{$_} ||= 0)++ foreach split;
}
print "$x{$_}  $_n" foreach sort { $x{$b} <=> $x{$a} } keys %x;

Модификация[править]

  • sed -i ‘s/foo/too/’ — Заменить foo на too*
  • sed -i ‘s/[^[:digit:]]//g’ — Убрать все символы, кроме цифр ([:digit:])
  • sed -i ’14d’ /file — Удалить 14ю строку
  • sed -i ‘/[Nn]etwork/d’ /file — Удалить строку содержащую Network или network
  • sed -i ‘$ a \n[mounts]nuser root’ /etc/munin/config — Добавить в конец файла «[mounts]» затем перенос на новую строка и «user root»
  • sed ’14a echo «graph_category logger»‘ /etc/munin/plugins/command — После 14ой строки добавить «echo „graph_category logger“»
  • sed ‘1i # vim: ft=rubyn’ — Вставить в начало файла ‘# vim: ft=ruby’ и перенос строки
  • sed -i ‘/LOGREJECT/d’ /var/log/messages — Удалить строки содержащие ‘LOGREJECT’
  • tr -d ‘<символ>’ — Удалить символ. Можно использовать классы символов POSIX (вроде ‘[:space:]’)
  • tr -s ‘<X>’ ‘<Y>’ — Заменить символ <Х> на <Y>. Можно использовать классы символов POSIX (например, cat /etc/fstab | tr -s «[:lower:]» «[:upper:]»)
  • cat /etc/fstab | tr -s ‘a-z’ ‘A-Z’ — Заменить все строчные буквы в соответствующем файле на прописные (подобным образом можно делать и транслитерацию)
  • cp /dev/null file.txt — Быстрая очистка содержимого файла file.txt
  • echo «« > file.txt — Быстрая очистка содержимого файла file.txt
  • > file.txt — самая быстрая очистка содержимого файла
  • cat /proc/PID/cmdline | tr ’00’ ‘ ‘  — Cделать cmdline читаемым
  • cat /proc/PID/cmdline | xargs −0 echo — То же самое
  • Пример, заменяющий шаблон ip-адрес/маска на ‘*.*.*.*’, ‘/префикс’ на ‘/*’ и поднимающими регистр букв:
ip ad | sed 's/([[:digit:]]{1,3}.){3}[[:digit:]]{1,3}/*.*.*.*/g;s//[[:digit:]]{1,2}//*/g;s/(.*)/U1/g'
  • Пример, поднимающий регистр букв в файле /etc/fstab в строках, содержащей ‘sda’ кроме самой подстроки ‘sda’:
cat /etc/fstab | sed 's/(.*)(sda)(.*)/U1L2U3/g'
  • Пример, заменяющий последний октет ip адреса на ноль:
echo 192.168.23.46 | sed 's/[[:digit:]]*/0/4'

Кодировки[править]

  • iconv -f koi8-r -t utf-8 < file.php > file2.php — Конвертация KOI8-R в UTF8
  • recode KOI8-R..UTF-8 blah.php — Конвертация KOI8-R в UTF8

Работа с дисками[править]

Состояние дисковой подсистемы[править]

  • rescan-scsi-bus -l — После добавления sata-диска, чтобы он определился системой (полезно для горячей замены!)
  • partprobe — реинициализация дисков и разделов
  • cat /proc/scsi/scsi — Посмотреть подключенные диски
  • fsarchiver probe — Выводит список дисков и разделов
  • df -h — Показывает занятость подмонтированных дисков
  • dfc -h — Цветной df
  • pydf — Правильная замена df
  • du -smc —exclude={proc, sys, dev} /* | sort -gr — Получаем отсортированный список самых „тяжелых“ каталогов в мегабайтах
  • du -ha —max-depth=0 —threshold=500M ./* | sort -n — узнать размер файлов и каталогов свыше 500М в ГБ в текущей директории
  • du -Sha —threshold=500M ./* | sort -g — узнать размер файлов и каталог (без подкаталогов) и сортировать их в текущей директории
  • find . -size +<размер>k — Поиск файлов размер которых превышает указанный (или c — для байтов, M — мегабайт, G — гигабайт. В примере, соответственно, килобайты)
  • ls -lSrh — В конце вывода увидим самые большие файлы
  • vdir — расширенный вывод содержимого директории
  • hdparm -tT /dev/sda — Тестирование производительности диска, ей же можно тонко настроить производительность (обычно не нужно, так как современные системы корректно определяют параметры)
  • dd if=/dev/sdx of=/dev/null bs=1M — Вроде как выявление проблем с диском.[1]
  • smartctl -s on -S on -t long /dev/sda Запуск процесса диагностики диска
  • hddtemp /dev/sd[a-z] — Температура жестких дисков в системе (раб.<60 °C)
  • testdisk — Анализ и восстановление файловых систем
  • parted — Подходит для создания и восстановления разделов

Горячее подключение дисков SATA[править]

  • echo „- — -“ > /sys/class/scsi_host/host1/scan — Сканирование и инициализация нового устройства на порту host1.
  • ls −1 /sys/class/scsi_host/ — Вывести список портов host используемых для подключения дисков.
  • ls /sys/class/scsi_host/host?/device/target?:?:?/?:?:?:?/block — Показать на каких портах hostX подключены диски /dev/sdX.
  • echo 1 > /sys/block/sdb/device/delete — Деактивировать и удалить из системы диск /dev/sdb.

Разметка диска[править]

Разметка диска, по сути — запись (таблица разделов в самом начале диска начиная с 447 байта 64 байта) о том где и какие разделы расположены физически на диске. То есть редактируя таблицу разделов, данные (находящиеся на жестком диске) остаются нетронутыми.

  • sfdisk -luM /dev/sda — Информация о разделах на диске (-uM) в мегабайтах.
  • partprobe -s /dev/sda — Перечитывает таблицу разделов блочного устройства.
  • cat /proc/partitions — Tаблица разделов, с которыми работает ядро.
  • mkfs.ext3 -L fsroot /dev/sda6 — Создать файловую систему ext3 c меткой „fsroot“.
  • tune2fs -L fsroot /dev/sda6 — Присвоить метку „fsroot“ диску, для удобства монтирования (или e2label /dev/sda6 fsroot).
  • blkid — Отображает атрибуты: UUID, метку, тип ФС блочных устройств.
  • mount LABEL=fsroot /mnt/data — Монтрирование по метке раздела.
  • sfdisk -d /dev/sda | sfdisk /dev/sdb — Копирование таблицы разделов с sda на sdb.
  • sfdisk -d /dev/sda > sda.mbr.bak — Копирование MBR в файл (файл можно редактировать).
  • sfdisk /dev/sda < sda.mbr.bak — Восстановление MBR из файла.
  • fdisk -p ad2 > /tmp/slices — Скопировать таблицу слайсов в файл.
  • fdisk -f /tmp/slices ad0 — Применить таблицу слайсов из файла к ad0.
  • dd if=/dev/sda of=/root/sda.mbr.img bs=512 count=1 — Копирование MBR в файл, самый надежный способ.
  • dd if=/dev/zero of=/dev/hda bs=512 count=1 — Очищаем MBR (внимательно!). Если без таблицы разделов, то bs=446
  • dumpfs -m /dev/sda2
  • yum install cloud-utils-growpart.x86_64; growpart /dev/vdb 1; xfs_growfs /srv/vdb1/ — Расширение xfs раздела налету

Монтирование[править]

  • cat /proc/mounts — подробная инфа о примонтированных устройствах. Можно заменить вызовом mount без аргументов. column -t /proc/mounts или mount | column -t то же, но отформатированное. Если нужно коротко, то df -h
  • mount -t cifs //192.168.0.122/data /mnt/amigoglobal/data -o user=USER,pass=PASSWORD,uid=1000 — Монтирование виндовых разделов
  • curlftpfs ftp://<ftp_user>:@<ftp_server_ip> /<local_directory> — Монтирование фтп-ресурса
  • mount -o loop /mnt/bak/disk/LiveCD/newcd/live.iso /mnt/cdrom/ — Монтирование образа диска
  • mount -a — Монтировать все из fstab (напр. при добавлении ресурсов)
  • mount -o remount /dev/sda1 / — Перемонтировать. Например, при изменении опций
  • mount —bind olddir newdir — Примонтировать одну директорию к другой
  • fuser -v /opt — Узнать, кто занимает ресурс. Например, если не дает размонтировать
  • fuser -km /opt — Принудительное размонтирование раздела
  • umount -l /dev/sdb1 — Размонтировать, когда ресурс освободится
  • archivemount archivemount /home/directory.zip /mnt — Примонтировать архив в директорию /mnt

Шифрование раздела[править]

Осторожно! Использовать только после изучения манов и тренировки на тестовом разделе!

  • dd if=/dev/random of=<key.file> bs=1 count=256 — Создаём файл-ключ. Не теряйте его!
  • cryptsetup -h=sha256 -c=aes-cbc-essiv: sha256 -s=256 -d=<key.file> luksFormat /encrypted/part — Собственно, шифруем раздел
  • cryptsetup -d=<key.file> luksOpen /encrypted/part decrypted — Получаем новое блочное устройство decrypted, с которым можно работать, как с обычным разделом

Шифрование директории[править]

  • mv /images /images_bak — Переименовываем директорию, которую хотим зашифровать, чтобы освободить имя директории
  • mkdir /images/ — Создаем директорию, которую будем шифровать
  • mount -t ecryptfs /images /images — Монтируем шифрованную директорию. Отвечаем на вопросы : 1, 1, n, n
  • cp -av /images_bak/* /images/ — Копируем файлы в зашифрованную директорию. Если директорию размонтировать теперь, файлы будут зашифрованы. Архив можно удалять (rm -fr /images_bak)

Swap[править]

  • mkswap -L swap /dev/sda5 — создаём файловую систему для раздела подкачки, устанавливаем метку swap
  • swapon /dev/sda5 — подключаем раздел.
  • swapon -a — подключаем все разделы с подкачкой прописаные в /etc/fstab.

Создаем файл подкачки вместо раздела. Позволяет перераспределить дисковые ресурсы(при LVM, RAID, XEN), но слегка замедляет работу подкачки.
Обычно размер файла подкачки предпочитают устанавливать равным объему оперативной памяти.

  • dd if=/dev/zero of=/file.swp bs=1M count=1024 — создаем файл необходимого размера (у нас 1Гб).
  • mkswap /file.swp — создаём файловую систему внутри файла.
  • swapon /file.swp — подключаем.
  • swapoff /dev/sda5 — отключаем подкачку.
  • swapoff -a — отключаем все использующиеся файлы и устройства подкачки.
  • /file.swp none swap sw 0 0 — запись в fstab
  • echo 0 > /proc/sys/vm/swappiness — использовать swap в крайнем случае

Образ диска[править]

  • dd if=/dev/zero of=/null bs=1024 ; rm -f /null — Забиваем свободное место на диске нулями, чтобы dd мусор не сохранял, и сразу удаляем.
  • dd if=/dev/sda2 bs=16M | gzip -c > /mnt/bak/sda2.img.gz — где bs=16M — размер кэша на винчестере. Побитное копирование раздела с последующей упаковкой, я использую для бэкапа свеже настроенных систем (копирует вместе с файловым мусором, зато надежно).
  • gunzip -с /mnt/bak/sda2.img.gz | dd of=/dev/sda2 bs=16M — Восстановление из сжатого образа.
  • На оригинальной системе: dd if=/dev/sdX bs=16065b | netcat <REMOTE_IP> <REMOTE_PORT>. На целевой системе: netcat -l -p <PORT> | dd of=/dev/sdY bs=16065b — Копирование раздела по сети.
  • На оригинальной системе: cat /dev/sda | netcat <REMOTE_IP> <REMOTE_PORT>. На целевой системе: netcat -l -p <PORT> | > /dev/sda  — Копирование раздела по сети. Вариант без использования dd

Работа с CD/DVD[править]

  • dd if=/dev/cdrom of=cd_image.iso bs=1M — Копирование образа (а так же: cp /dev/cdrom cd_image.iso или cat /dev/cdrom > cd_image.iso)
  • wodim dev=/dev/cdrom -eject -v mycd.iso — Запись диска
  • wodim -v blank=fast dev=/dev/cdrom — Стирание диска
  • genisoimage -f -v -J -o /home/${USERNAME}/ARCH/DIR.iso /home/${USERNAME}/DIR — Создать iso-образ директории

Наблюдаем за работой dd:[править]

  • dd status=progress if=/dev/disk of=disk.iso (для coreutils>8.24)

Набираем из другой консоли:

   kill -s USR1 $(pidof dd)

dd нам вывалит что-то вроде:

   825599+0 записей считано
   825599+0 записей написано
   скопировано 422706688 байт (423 MB), 16,1309 c, 26,2 MB/c

и продолжит работу.

Наберите в соседней консоли:

   watch -n 10 'sudo kill -s USR1 $(pidof dd)'

и на консоли с dd увидите обновление статуса dd каждые десять секунд.

   2804193+0 записей получено
   2804193+0 записей отправлено
   1435746816 байт (1,4 GB, 1,3 GiB) скопирован, 214,006 s, 6,7 MB/s
   3778113+0 записей получено
   3778113+0 записей отправлено
   1934393856 байт (1,9 GB, 1,8 GiB) скопирован, 322,185 s, 6,0 MB/s
   3867969+0 записей получено
   3867969+0 записей отправлено
   1980400128 байт (2,0 GB, 1,8 GiB) скопирован, 332,218 s, 6,0 MB/s
   3958457+0 записей получено
   3958457+0 записей отправлено
   2026729984 байт (2,0 GB, 1,9 GiB) скопирован, 342,228 s, 5,9 MB/s
   4037161+0 записей получено
   4037161+0 записей отправлено
   2067026432 байт (2,1 GB, 1,9 GiB) скопирован, 352,277 s, 5,9 MB/s
   4125009+0 записей получено
   4125009+0 записей отправлено

Более изящный способ, с помощью pv:

   $ dd if=/dev/disk | pv >~/disk.iso
   278MB 0:00:05 [57,7MB/s] [      <=>                                             ]

А можно и так:

   $ dd if=/dev/disk | pv -s $(du -sb /dev/disk | cut -f 1) >~/disk.iso
   1,24GB 0:00:49 [26,6MB/s] [=============>                                       ] 28% ETA 0:02:03

Или даже так:

   $ watch -n 1 du -h ~/disk.iso

LVM[править]

  • vgscan — Поиск по системе виртуальных групп VG
  • vgchange -ay — Активизировать виртуальную группу (-an — деактивизировать)
  • pvscan — Поиск доступных физических томов и отображение сравнительной информации о них
  • pvdisplay /dev/sda1 — Просмотр полной информации о физическом томе.
  • pvs /dev/sda1 — Просмотр краткой информации о физическом томе.
  • pvcreate /dev/sda1 — Подготовка физического тома PV (тип раздела 8Eh)
  • pvmove /dev/sda1 — Освобождение физического тома (перенос данных на другие физические тома)
  • pvresize /dev/sda2 — Расширить физический том
  • vgdisplay VG — Просмотреть полную информацию о виртуальной группе
  • vgs VG — Просмотреть краткую информацию о виртуальной группе
  • vgcreate VG /dev/sda1 /dev/sdb1 — Создание виртуальной группы на основе двух физических томов
  • vgremove VG — Удаление виртуальной группы
  • vgextend VG /dev/sdc1 — Добавление физического тома к виртуальной группе
  • vgreduce VG /dev/sda1 — Удаление физического тома из виртуальной группы
  • vgexport VG — Подготовка виртуальной группы для переноса на иную машину
  • vgimport VG /dev/sda1 /dev/sda2 — Импорт виртуальной группы (с другой машины)
  • lvcreate -L1500 -nlv00 VG — Создание логического тома (LV) с именем nlv00 и размером 1500 Мб
  • lvcreate -l 100 %FREE -n nlv00 VG — Создаем „логический том“ на все доступное пространство
  • lvremove /dev/VG/home — Удаление логического тома
  • lvextend -L120M /dev/VG/home — Увеличение размера логического тома до указаной величины
  • lvextend -L+100M /dev/VG/home — Увеличение размера логического тома на указанную величину
  • lvextend -l +100 %FREE /dev/mapper/scientific-root — Расширить размер логического тома на максимально возможную величину
  • lvresize -L +10G /dev/VG/home — Добавляет в логический том 10Гб, при их наличии в физическом томе.
  • lvreduce -L120M /dev/VG/home — Уменьшение размера логического тома до указаной величины
  • lvreduce -L-100M /dev/VG/home — Уменьшение размера логического тома на указанную величину
  • resize2fs /dev/VG/home — Расширяем раздел находу на все доступное пространство (для ext3)
  • mkfs.ext3 /dev/VG/home — Создаем файловую систему

Работа с программами[править]

  • echo ‘0-5 20,22 * * 1-5 root bak.sh’ >> /etc/crontab — Запись в означает, что bak.sh будет выполняться cron’ом с нулевой по пятую минуту в 20 и в 22 каждый день с понедельника по пятницу
  • echo ‘*/15 * 3 * root bak.sh’ >> /etc/crontab — bak.sh будет выполняться каждые 15 минут, каждое третье число
  • ps aux | grep process — Вывод системной информации по конкретному процессу
  • kill -TERM `cat /usr/local/apache2/logs/httpd.pid` — Послать сигнал процессу
  • pgrep <PROGRAM_NAME> — Выводит PID’ы процессов
  • pidof <PROGRAM_NAME> — Выводит PID’ы процессов
  • pkill httpd — Послать сигнал найденным процессам
  • killall /usr/sbin/httpd — Послать сигнал процессу только по полному имени
  • nice -n −20 command — Запустить command с наивысшим приоритетом (-n 19 — наименьший)
  • ionice -c3 command — Запустить command с наименьшем приоритетом по системе ввода-вывода (-с1 — наивысший). (только для планировщика CFQ)
  • LANG=en_EN[.UTF-8] command — Запуск программы в другой локали [.кодировке]
  • gnome-screenshot —window —delay=5 — Сделать скриншот активного окна, с задержкой 5 секунд
  • espeak -v ru „таки да“ —stdout -s 60 | aplay — Сгенерировать и озвучить слова в кавычках с помощью синтезатора речи. Язык — русский, скорость 60 (слов в минуту)
  • CREATE ROLE test_user; GRANT ALL privileges ON DATABASE test_database TO test_user; ALTER ROLE test_user WITH LOGIN; ALTER USER staging_rb_user WITH PASSWORD ‘testPassWord;’ — Дать права пользователю на БД (postgres)

Управление пакетами[править]

debian-разработчиками рекомендуется apt-get, так как aptitude устарел.

Действиесистема apt (deb)

Debian, Ubuntu

yum (rpm)

Fedora, CentOS

zypper (rpm)

SuSe, OpenSuSe

pkgtools

Slackware

ports

FreeBSD

packages

FreeBSD

portage

Gentoo, Sabayon

pacman

ArchLinux

Установка пакета из репозитория apt[-get] install foo yum install foo -y zypper install foo cd /usr/ports/foo && make install pkg_add -r foo emerge foo pacman -S foo
Установка локального пакета dpkg -i foo.deb yum localinstall foo.rpm

rpm -ivh foo.rpm

zypper install foo.rpm

rpm -Uvh foo.rpm

installpkg foo.tgz pkg_add foo.tgz ebuild foo.ebuild setup pacman -U foo.pkg.tar.gz
Обновления списка пакетов из репозиториев. apt[-get] update yum check-update zypper list-updates pkg_version emerge —sync pacman -Sy
Обновление существующих пакетов apt[-get] upgrade yum update foo zypper update upgradepkg foo.tgz emerge -uDN world pacman -Su
Удаление пакета apt[-get] remove foo yum erase foo zypper remove foo removepkg foo cd /usr/ports/foo && make deinstall pkg_delete foo emerge -C foo pacman -R foo
Поиск по имени пакета apt-cache search foo yum list foo zypper search foo whereis fullnamefoo или make search key=foo emerge -s foo или eix foo pacman -Ss foo
Поиск по описанию и имени пакета aptitude search foo yum search foo zypper search foo http://www.freebsd.org/ports/ emerge -S foo или eix -S foo pacman -Ss foo
Показать информацию о пакете aptitude show foo yum info foo zypper info foo pkg_info -L foo-1.0 | less emerge -s foo или eix foo pacman -Si foo
Список пакетов установленных в системе dpkg -l yum list installed

rpm -qa

rpm -qa ls /var/log/packages/ ls /var/db/pkg/ pkg_info eix -Ic pacman -Q
Поиск имени пакета по файлу apt-file search file или dpkg-query -S file yum provides file zypper what-provides file, cnf file grep -R file /var/log/packages/ equery b file pacman -Qo file
Файлы установленные пакетом dpkg-query -L foo rpm -ql foo rpm -ql foo equery f foo pacman -Ql foo
  • aptitude install debian-archive-keyring — Обновить ключи репозиториев

Сборка пакетов[править]

  • rpm -i foo-1.2.src.rpm && cd /usr/src/redhat/SPECS && rpmbuild -bb foo-1.2.spec — Собрать foo.rpm
  • cd /usr/ports/foo && make package — Собрать package для FreeBSD
  • quickpkg foo — Собрать пакет для portage из уже установленного в системе
  • emerge -B foo — Собрать пакет для portage, не устанавливая его

Система[править]

  • shutdown -P now — Выключить машину сейчас
  • shutdown -P +10 — Выключить машину через 10 минут
  • shutdown -r 05:00 — Запланировать перезагрузку на 05 часов 00 минут (время в 24-м формате, от 0 до 23)
  • shutdown -c — Отменить запланированную кем-нибудь перезагрузку
  • ls —time-style=long-iso -clt / | tail -n 1 | awk ‘{ print $7, $6}’ — узнать дату установки ОС по самому старому файлу

Планировщик задач[править]

  • cron — Для периодического выполнения заданий
    • crontab -e — править список заданий
    • crontab -l — вывести список заданий
  • at — Для разового выполнения заданий
# at 7:30
warning: commands will be executed using /bin/sh
at> /sbin/reboot
at> <EOT>
job 1 at Thu Feb 23 07:30:00 2012

Конфигурация[править]

  • ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime — Установка часового пояса
  • ntpdate ntpserver — Жесткая синхронизация времени (быстрая смена времени может быть вредна некоторым сервисам, рек. ntpd)
  • sysctl -a — Вывести текущие настройки ядра
  • sysctl -p — Применить настройки ядра /etc/sysctl.conf (для слаки вероятно параметры задавать в rc.local)
  • hostname -F /etc/hostnamefile — Установить сетевое имя из файла (см. ниже)
  • sysctl hw.model hw.ncpu hw.physmem machdep.tsc_freq — Сведения о системе (FreeBSD)

Для Debian-like[править]

  • /etc/hostname — Прописываем имя машины
  • dpkg-reconfigure locales — Установка системной локали

Для RHEL-like[править]

  • /etc/sysconfig/network — Прописываем имя машины (напр. HOSTNAME=localhost.localdomain)
  • /etc/sysconfig/clock — Правка часового пояса

Для Slackware[править]

  • /etc/HOSTNAME — Прописываем имя машины.

Пользователи и группы[править]

  • chfn — изменение информации о пользователе
# chfn -o 'User for ftp' userftp
  • useradd -r -N -g <groupname> —uid 1000 <username> — Создать системного пользователя <username>. -N не даёт создавать одноимённую группу для пользователя, -g <groupname> — назначает основной для пользователя группу <groupname>
  • userdel -r <username> — Удалить пользователя <username> вместе с домашним каталогом
  • usermod -g <group_main> -G <Group1>, <Group2> <username> — Назначить пользователю <username> основной группу <group_main> и включить его в две дополнительные группы <Group1> и <Group2>
  • vipw — Редактор vi блокирует /etc/passwd, так, чтобы другие команды не могли модифицировать его в то же самое время
  • vigr — Редактор vi блокирует /etc/group, так, чтобы другие команды не могли модифицировать его в то же самое время
  • visudo — Спец редактор vi для правки /etc/sudoers. (visudo -c — проверка синтаксиса)
  • PASS=666; useradd testuser -m -p $(echo $PASS | mkpasswd -m sha-512 -s) — Создание пользователя в скрипте сразу с паролем
  • Использование утилиты newusers для массового создания системных пользователей по шаблону „user1 — userN“ со случайными паролями; список пользователей с настройками и паролями выводится в файл users.txt:
uid=`cat /etc/passwd | cut -d ":" -f 3 | sort -gr | head -1`
for user in {1..100}; do
        uid=$(( uid + 1  ))
        echo user${user}:$(pwgen -cnB 8 1):${uid}:1000:user${user}:/home/user${user}:/bin/zsh
done | tee users.txt | newusers
  • groupadd <group_name> — Создать группу <group_name>
  • groupdel <group_name> — Удалить группу <group_name>
  • groupmod -n <new_group_name> <old_group_name> — Переименовать группу <old_group_name> в <new_group_name>
  • ssh sudouser@servername ‘/usr/bin/sudo /usr/sbin/usermod —expiredate 1 username &&/usr/bin/sudo /usr/bin/pkill -u username’ — запускается удаленно, под пользователем у которого есть sudo, лочит (lock) юзера в независимости от типа авторизации (пасс/key) в отличии от usermod -L и passwd -l, pkill выкидывает (kick) из сессии.
  • ssh sudouser@servername ‘/usr/bin/sudo /usr/sbin/usermod —expiredate 99999 username’ — Разблокировать пользователя.

Авторизация по флешке[править]

  • sudo pamusb-conf —add-device <flash> — Добавить устройство авторизации
  • sudo pamusb-conf —add-user <username> — Добавить пользователя, который будет авторизовываться по этому устройству
  • sudo pamusb-check username — Проверка настроек.

Автовход в систему[править]

  • Для GNOME добавить в /etc/gdm/custom.conf (Для новых версий в /etc/gdm3/daemon.conf)
[daemon]
AutomaticLoginEnable=true
AutomaticLogin=username
  • Для KDE добавить в /etc/kdm/kdmrc
[X-:0-Core]
AutoLoginEnable=true
AutoLoginUser=username
AutoLoginPass=userpassword
  • Для LXDE и всего остального сначала установить пакет autologin. Потом создать и отредактировать файл /etc/sysconfig/autologin:
AUTOLOGIN=yes
USER=username
EXEC=/usr/bin/startx
  • Автологин и запуск иксов без *DM(Display Manager):

Для LXDE добавить в /etc/rc.local

Изменить в /etc/X11/Xwrapper.config

Добавить в ~/.xinitrc

exec ck-launch-session dbus-launch startlxde

Железо (Модули)[править]

  • lsmod — Показать загруженные модули ядра
  • modinfo foo — Показать информацию о модуле (зависимости и т. п.)
  • modprobe foo — Включить модуль
  • modprobe -vr foo — Удалить неиспользуемый модуль (почти тоже что и *rmmod foo*)
  • modprobe -vr pcspkr — Выключить динамик на материнской плате. А еще лучше echo ‘blacklist pcspkr’ >> /etc/modprobe.d/blacklist
  • cat /dev/dsp > wave-file.wav — Записываем несжатый аудио‐поток с микрофона компьютера через вход звуковой карты
  • cat wave-file.wav > /dev/dsp — Проиграть файл

Мониторинг[править]

  • htop — Правильная замена top
  • vmstat 5 — Подробные сведения о системе виртуальной памяти
  • dstat — Удобный генератор статистики по ресурсам.
  • iostat 5 -m -x — Нагрузка на разделы дисков в мегабайтах, с усредненным значением за 5 секунд
  • iotop — Анализ нагрузки отдельными программами на дисковую подсистему (python)
  • atop — расширенный top (диски, память, сеть)
  • tailf или tail -f /путь/к/логу — Просмотр изменений лога
  • Нажатие Shift+f в less аналогично поведению tailf
  • iftop — Статистика по сетевому интерфейсу в реальном времени
  • vnstat — Простой, но весьма полезный учётчик трафика
  • ifstat -TtSnqA -i wimax0 — Статистика по конкретному сетевому интерфейсу и по общему трафику в реальном времени
  • apachetop и mytop — Статистика в реальном времени по запросам apache и mysql соответственно
  • iptraf — Грамотный сетевой монитор
  • watch -n 1 <program> — Запускать программу раз в 1 секунду. Удобно наблюдать за выводом программ
  • script -t 2> timingfile — Записать лог терминальной сессии с отметками времени
  • scriptreplay timingfile — Проиграть записанный лог
  • nethogs — Показывает сетевое потребление трафика процессом
  • tcpstat — Статистика сетевых интерфейсов
  • cat /proc/net/nf_conntrack — Посмотреть таблицу трансляции сетевых адресов (NAT)
  • Перенаправляем вывод какого-нибудь лога (скажем, syslog) на консоль (скажем, девятую) — заносим (или раскомментируем) в файле /etc/rsyslog.conf подобные строки:
   daemon,mail.*;
          news.=crit;news.=err;news.=notice;
          *.=debug;*.=info;
          *.=notice;*.=warn       /dev/tty9
  • Монитор через некоторое время выключается. Как исправить?

Добавляем

   setterm -powersave off -powerdown 0 -blank 0

в файл /etc/rc.local и можно любоваться логами сквида (постфикса, дхцп etc) круглосуточно.

Журналирование[править]

  • /home/adm/script.sh 2>&1 | /usr/bin/logger -t event_name — запись всех сообщение от script.sh в системный журнал

Ядро[править]

  • lsmod — Показать загруженные модули ядра
  • modprobe foo — Включить модуль
  • modprobe -vr foo — Удалить неиспльзуемый модуль (почти тоже что и *rmmod foo*)

Пересборка ядра[править]

  1. Скачать архив с исходными файлами, распаковать и перейти в распакованный каталог:
  2. Генерация конфигурации .config (можно использовать также menuconfig или xconfig). Для надежности можно взять конфигурацию уже рабочей системы и править его (cp /boot/config-generic-2.6.29.4 /usr/src/linux-2.6.30/.config):
  3. Создание дерева зависимостей:
  4. Удаление предыдущей сборки:
  5. Компиляция ядра:
  6. Посмотреть версию скомпилированного ядра:
  7. Установка собранного ядра:
    make install
    
    # или вручную
    cp arch/i386/boot/bzImage /boot/bzImage-2.6.23.1
    cp System.map /boot/System.map-2.6.23.1
    
  8. Компиляция модулей:
  9. Установка модулей:
  10. Пересборка образа initrd:
    cd /boot; mkinitrd -c -k 2.6.30 -m mbcache: jbd: ext3 -f ext3 -r /dev/sda2
    
  11. Добавить ядро в конфигурацию загрузчика.

Сети[править]

Уровень стека протоколов Протоколы Описание
Прикладной (в стек не входит) DHCP, SSH, SMTP, HTTP, FTP, DNS На этом уровне работают пользовательские приложения. Передаваемые данные называются сообщениями.
Транспортный TCP (сегменты), UDP (дейтаграммы), RTP, SCTP, DCCP Этот уровень поддерживают все устройства, участвующие в сетевом обмене информацией (тонкие клиенты, рабочие станции, серверы, сетевые принтеры). В TCP соединение устанавливается прозрачно (между конечными сторонами).
Межсетевой (сетевой) Для TCP/IP это IP (пакет) (IPv6); вспомогательные протоколы, вроде ICMP (пинги, диагностика соединения) и IGMP работают поверх IP, но являются частью сетевого уровня; ARP не работает поверх IP. На этом уровне работают маршрутизаторы (router) и коммутаторы третьего уровня стека протоколов TCP/IP (L3 switch)
Канальный (уровень доступа) Ethernet (фреймы), Token ring, PPP, IEEE 802.11 Wi-Fi, ISDN На этом уровне работают коммутаторы (switch), хабы (hub) работают на физическом уровне.
Физический Определяет: тип среды передачи (медь, оптика, радиоэфир, окружающее пространство); метод передачи информации (широкополосный, узкополосный); тип синхронизации (синронный, асинхронный — в последовательных интерфейсах; в параллельных интерфейсах для передачи информации о синхронизации используется отдельный проводник); на этом уровне также осуществляется мультиплексирование сигналов.

Конфигурация[править]

  • /etc/resolv.conf — DNS-сервера провайдера (для RHEL-like можно также указать в конфиге DNS{1,2}=80.80.111.254, он приоритетней)
  • /etc/sysctl.conf — Для маршрутизации пакетов в системе net.ipv4.ip_forward = 1 (или в rc.local добавить строку: echo 1 > /proc/sys/net/ipv4/ip_forward)
  • ip route add 192.168.124.0/24 via 192.168.0.220 — Добавить маршрут (временно, до первой перезагрузки)
  • ip r a 192.168.124.0/24 via 192.168.0.220 — Добавить маршрут (краткая запись предыдущей команды)
  • route add default gw 192.168.1.1 — Добавить маршрут по умолчанию через шлюз 192.168.1.1 (временно, до перезагрузки)
  • ip addr add 192.168.0.100/24 dev eth0 — Добавить IP-адрес интерфейсу (временно, до первой перезагрузки); для совместимости с ifconfig в конце добавить „label eth0:0“
  • vconfig <NET_DEV> <VLAN_ID> — Добавить тегированный интерфейс (предварительно убедиться, что подгружен модуль 802.1q); устаревший вариант
  • ip link add link wimax0 name mgmt type vlan id 123 — Добавить тегированный интерфейс с именем mgmt и vlan_id равным 123 на интерфейсе wimax0; современный вариант
  • ip -details link show dev mgmt — Посмотреть созданный интерфейс
  • ip -s link show up — Вывести статистику по поднятым интерфейсам
  • brctl addbr <BRIDGE_NAME> — Создать контейнер интерфейсов для коммутатора (нужен модуль ядра bridge)
  • brctl addif <BRIDGE_NAME> <IFACE> — Добавить интерфейс в созданный коммутатор

Для Debian-like[править]

  • /etc/network/interfaces — Файл конфигурации интерфейсов

Для RHEL-like[править]

  • /etc/sysconfig/networking/devices/ifcfg-eth0 — Файл конфигурации интерфейса (/etc/sysconfig/network-scripts/ifcfg-eth0 — жесткая ссылка на него же)
  • /etc/sysconfig/network-scripts/route-eth0 — Файл статической маршрутизации, с синтаксисом: 192.168.124.0/24 via 192.168.0.220 dev eth0 или ADDRESS0=192.168.124.0

Для Slackware[править]

  • /etc/rc.d/rc.inet1.conf — Файл конфигурации интерфейсов.
  • /etc/udev/rules.d/70-persistent-net.rules — Переопределение имени инт. (напр. eth1 -> eth0)

Мониторинг[править]

  • traceroute -i eth3 ya.ru — Трассировать через определенный интерфейс (для отладки маршрута)
  • ping -I eth1 -i4 -c3 host — Пропинговать хост через eth1 три раза с интрервалом в 4 секунды
  • mtr ya.ru — traceroute и ping в одном флаконе
  • ifconfig — Вывод конфигурации всех интерфейсов (рек. ip addr)
  • netstat -tunap — Список всех портов и соединений (lsof -i -n)
  • netstat -tnlpu — Список всех слушающих приложений и соответствующих tcp/udp портов. Чтобы видеть все приложения, запускать необходимо от рута
  • arp — Вывод arp-таблицы (нужно для выяснения физической доступности в сети, или выяснения МАС-адреса соседа). Правильнее ip neigh (или ip n)
  • tcpdump -vvvnnni eth0 not port ssh and not 3389 and not 80 and not 5191 and not 443 and not 53 and not 2222 and not 5223 and not udp port 5001 — Ищем незнакомый трафик в сети
  • tcpdump -c 100 -nni vlan100 dst megahost.ru and icmp — Отфильтровать 100 сообщений ICMP для megahost.ru
  • ip neigh (ip link, ip address, ip route, ip rule, ip tunnel и пр.) — Показать соседей канального уровня (линки, ip-адреса, маршруты, таблицы правил маршрутизации: утилиты из состава iproute2)
  • ethtool eth0 — Статистика интерфейса, режимы текущего соединения и поддерживаемых соединений и прочее
  • iptstate — Мониторинг contrack из iptables, показывает активные трансляции с возможностью их прибить

Сетевые сервисы и утилиты[править]

  • rsync -avz -e „ssh -p 9876“ root@192.168.222.20:/home/$USRNAME/Desktop/ /home/$USERNAME/Desktop —del —exclude=»*.avi» —bwlimit=75 — Синхронизировать содержимое директории /home/Desktop на двух машинах посредством rsync через ssh (ssh-сервер на порту 9876, ограничение пропускной способности — 75 килобайт в секунду)
  • rdesktop 192.168.0.1 -u admin -p ‘pass’ -fzPa8 -k ru — Подключение к RDP серверу со сжатием, кэшированием, на полный экран, с русской раскладкой.
  • xfreerdp 192.168.0.1 -u admin -p ‘pass’ -k common -g 1280×1024 — Подключение к RDP серверу под соответствующим пользователем с соответствующим паролем, раскладкой, в окне соответствующего разрешения. Клиент — допиленный rdesktop
  • pdsh -w root@host-0[1-7,10] uptime — Выполнить команду uptime на хостах с 1 по 7 и на 10ом. Предварительно должен быть настроен вход ssh по ключам.
  • pdcp -w root@host-0[1-7,10], root@otherhost /home/user/.vimrc /root/ — Копировать локальный файл .vimrc в папку /root на удаленных хостах. pdsh должен быть установлен на всех хостах
  • trickle — Шейпер трафика (неудобный)
  • knockd — Забавный инструмент ограничения доступа к портам
  • ngrep — Простой и удобный сниффер
  • netsed — Модификация трафика на лету
  • autossh — Поддержания ssh соединения
  • iperf — Анализ пропускной способности канала (генератор TCP и UDP трафика). iperf -s — на сервере, iperf -c <server_ip> — на клиенте
  • #pptpsetup —create <CONNECTION_NAME> —server <PPTP_SERVER_IP> —username <USERNAME> —password <PASSWORD> —encrypt mschap —start — Создать и поднять pptp соединение
  • #pon <CONNECTION_NAME> — Поднять туннель
  • #poff <CONNECTION_NAME> — Отключить туннель
  • mausezahn — Грамотный конструктор сетевых пакетов-генератор трафика
  • nemesis — Также конструктор сетевых пакетов-генератор трафика
  • nmap — Сетевой сканер
  • zenmap — gui к нему
  • ipcalc — Калькулятор для расчёта сетей
  • clusterssh — Мультиплексор для ssh (и telnet) подключений
  • hping — сканер и конструктор сетевых пакетов
  • fping -sq 192.168.1.1 192.168.1.254 — Пропинговать диапазон адресов
  • redir —laddr=<IP 1> —lport=80 —caddr=<IP 2> —cport=80 — Простое перенаправление tcp сервиса на другой ip адрес и порт
  • siege mysite.ru -d1 -r10 -c250 — Нагрузочное тестирование сайта

SSH[править]

  • ssh user@domen.ru -p 2233 — Подключится к серверу на нестандартный порт 2233 под пользователем user.
  • ssh 192.168.1.100 «uptime» — Выполнить команду на удаленном сервере.
  • ssh -X 192.168.1.200 «iceweasel &» & — Запустить графическое приложение, установленное на удаленном сервере.
  • ssh -L 5555:192.168.0.10:80 root@213.37.57.236 — После установки соединения твой локальный порт 5555 будет проброшен на 192.168.0.10:80
  • ssh -f -N -L 4080:internal_server:22 proxy_user@proxy_server — Пробросить 22 порт internal_server’а на свой локальный 4080 порт через внешний proxy_server
  • ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa — Создать пару ключей (секретный и публичный) длинной 2048 бит и положить их в ~/.ssh/id_rsa и ~/.ssh/id_rsa.pub соответственно
  • ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host_ip’ — скопировать публичный ключ (id_rsa.pub) на удаленную машину user@machine. Это позволить заходить на machine по ssh без ввода пароля
  • scp remote_user@remote_host_ip:/etc/rc.d/autostart.sh /<local_dir> — Копирование файла /etc/rc.d/autostart.sh с удаленного хоста в локальную директорию <local_dir>
  • sftp -i ~/.ssh/id_rsa remote_host_ip — Подключиться к удаленному, встроенному в openssh, sftp-серверу с авторизацией по ключу
  • sshfs -o allow_other user@host:/home/user/ /mnt/host_user/ — монтирует /home/user/ удаленного хоста(host) в /mnt/host_user/. Опция allow_other позволяет другим пользователям обращаться к ресурсу
  • Просмотр статистики неудачного логина
sudo cat /var/log/auth.log* 
    | awk '/Failed password/ && /sshd/ {print $1,$2}' 
    | sort -k 1,1M -k 2n | uniq -c
  • Отметим, что если добавить выполняющего эту команду пользователя в имеющую доступ к файлам /var/log группу adm, использование sudo станет ненужным.
Проброс UDP трафика через SSH туннель[править]
Проброс UDP трафика с узла A на узел C через промежуточный узел B, к которому есть доступ по ssh:

— на узле A — проброс 12345 порта с узла A на порт 6789 узла B

ssh -tNf -L12345:127.0.0.1:6789 "B" -l user

— на узле B — переводим содержимое TCP пакетов в FIFO и тут же забираем и упаковываем в UDP и отсылаем на узел C порт 2056:

mkfifo /tmp/fifo
nc -l -p 6789 < /tmp/fifo | nc -u "C" 2056 > /tmp/fifo

— на узле A — переводим содержимое UDP пакетов, отсылаемых локальным сервисом на localhost:2056 в FIFO и сразу забираем из FIFO и отправляем на localhost:12345:

mkfifo /tmp/fifo
nc -l -u -p 2056 < /tmp/fifo | nc 127.0.0.1 12345 > /tmp/fifo
  • corkscrew — Утилита для работы ssh через https прокси

Сеть PPPoE[править]

  • pppoeconf — поиск и настройка концентратора pppoe в псевдографическом режиме.
  • pon dsl-provider — установить соединение.
  • poff — разорвать соединение.
  • rp-pppoe — настройка концентратора pppoe в терминале в ручном режиме.

Принтеры, сканеры[править]

  • pdf2ps -dASCII85EncodePages=true -dLanguageLevel=1 input.pdf out.ps — кодирование PDF в PostScript версии 1
  • psnup -PA2 -pA3 −1 out.ps | lp -d Printer -t input.pdf -o media=A3 — — меняем формат с А2 на А3 и печатаем 1 копию на бумагу формата A3. Имя задания — input.pdf

Криптография[править]

  • openssl req -x509 -nodes -days 730 -subj ‘/C=Russia/ST=Center/L=Moscow/CN=mysite.org’ -newkey rsa:1024 -keyout my_cert.pem -out my_cert.pem  — Создать файл с сертификатом, действительным 2 года, закрытым ключом и соответствующими параметрами
  • openssl x509 -text -in my_cert.pem  — Просмотреть сертификат (если нужно вычленить ключ или сертификат, то cat my_cart.pem и вырезать соответствующую часть)
  • grub-crypt —md5 — Создать хеш пароля для /etc/shadow
  • openssl passwd −1 «PassWorD»  — Создать хеш пароля для /etc/shadow
  • openssl aes-128-cbc -d -salt -in pass.aes -out /tmp/pass.txt — Расшифровать файл
  • openssl aes-128-cbc -salt -in /tmp/pass.txt -out pass.aes; rm -f /tmp/pass.txt — Зашифровать файл
  • openssl s_client -host mail.ru -port 443 — Соединиться с хостом по шифрованному соединению
  • openssl s_client -starttls imap -connect mymail.ru:993 — Протестировать imap через старттлс

Кластеры[править]

  • pcs resource create int_ip ocf: heartbeat:IPaddr2 ip=10.10.10.10 cidr_netmask=32 op monitor interval=30s — Создать ресурс

Мультимедиа[править]

ffmpeg[править]

  • ffmpeg -i file.avi -vn output.mp3 — «Вырезать» звук из видеофайла и переконвертировать в mp3

mplayer, mencoder[править]

CUE[править]

  • shnsplit -f *.cue -o flac -t ‘%p-%a-%n-%t’ -m _ *.ape— Разделить образ диска ape на отдельные композиции
  • cuetag sample.cue track*.flac— Прописать теги

mplayer[править]

  • mplayer dvd:// -dvd-device <dir> — воспроизведение контента DVD из каталога <dir>
  • mplayer -vf cropdetect — определение кропа
  • mplayer -vf crop=704:416:8:80 — воспроизведение с кропом
  • mplayer -af volume=20.1:0 — увеличение громкости
  • mplayer -idx file.avi — воспроизведение файла с «битым» индексом

:

mplayer file.avi -dumpaudio -dumpfile audio.ac3
mplayer file.avi -vo null -ao pcm: fast: file=filename.wav

Кодирование[править]

Запись видео с вебкамеры:

$ mencoder tv:// -tv driver=v4l:device=/dev/video0:width=640:height=480:forceaudio -ovc 
lavc -oac lavc -lavcopts vcodec=mpeg4:acodec=mp3 -ffourcc divx -o test.avi

«Склеиваем» два видеофайла:

$ mencoder -oac copy -ovc copy out.avi file_1.avi file_2.avi

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

$ mencoder -oac copy -ovc copy -ss 00:00 -endpos 0:05 file.avi -o out.avi

Кодируем видеофайл в 3gp:

$ ffmpeg -i file.avi -b 200Kb -r 12 -s qcif -ac 1 -ab 12.2k -ar 8000 out.3gp

Исправляем «битые» индексы:

$ mencoder input.avi -forceidx -oac copy -ovc copy -o output.avi

или же:

Скрипт для кодирования DVD:

#!/bin/bash

TITLE=
ABR=128
VOLUME=5
DVDDEV="./"
OUT=out
VBR=600000

while true ; do
        case "$1" in
        --vers | --versi | --versio | --version)
        echo $"`basename $0` 0.3"
        printf $"Copyright '(C)' %s Free Software Foundation, Inc.nThis is free software; 
see the source for copying conditions.nThere is NO warranty; not even for MERCHANTABILITY 
or FITNESS FOR A PARTICULAR PURPOSE.n" "2009"

printf $"Written by %s aka %s.n" "Zakhary Akulov" "hozzzar"
printf $"Feel free to email me about possible bug at %s.n" "hozzzar@gmail.com"
        exit 0
        shift
;;
        -h | --h | -help | --help)
        echo $"Использование: `basename $0` [-t title] [-ab bitrate] [-vb bitrate] [-v volume] [-d dvd-device]
        -ab, --abitrate         требуемый аудиобитрейт, по умолчанию -- 128 kbps
        -vb, --vbitrate         требуемый видеобитрейт, по умолчанию -- для 700Mb диска
        -d, --dvd               путь к каталогу DVD
        -t, --title             номер тайтла
        -v, --volume            громкость, по умолчанию 5
        -s, --start             начало фрагмента, MM:SS
        -e, --end               продолжительность фрагмента, MM:SS
        --scale                 масштабирование в пикселах, ширина:высота
        -o, --output            файл вывода, без пробелов и расширения
        -h, --help              показать эту справку и выйти
        --version               показать версию и выйти"
        exit 0
        shift
;;
        -ab | --ab | -abitrate | --abitrate)
        ABR="$2"
        shift 2
;;
        -vb | --vb | -vbitrate | --vbitrate)
        VBR="$2"
        shift 2
;;
        -d | --d | -dvd | --dvd)
        DVDDEV="$2"
        shift 2
;;
        -t | --t | --title | -tile)
        TITLE="$2"
        shift 2
;;
        -v | --v | -volume | --volume)
        VOLUME="$2"
        shift 2
;;
        -s | --s | -start | --start)
        SPOS="-ss $2"
        shift 2
;;
        -e | --e | -end | --end)
        EPOS="-endpos $2"
        shift 2
;;
        --scale)
        SCALE=",scale=$2"
        shift 2
;;
        -o | --o | -output | --output)
        OUT="$2"
        shift 2
;;
        --)           # Останов.
        shift; break
;;
        -*)
        echo >&2 $"`basename $0`: не могу распознать опцию '$1'"
        echo >&2 $"Наберите '`basename $0` --help' для получения справки."
exit 1
;;
        *)
        break
;;

esac
done

mplayer dvd://${TITLE} -dvd-device ${DVDDEV} -vf cropdetect 
-ss 10:00 -endpos 00:05 > cropfile

CROP=`awk -F' ' '{print($24)}' cropfile |grep -m 1 crop | sed 's/..$//g'`

mencoder dvd://${TITLE} -dvd-device ${DVDDEV} ${SPOS} ${EPOS} -ovc frameno -oac mp3lame 
-lameopts abr:br=${ABR}:mode=1:vol=${VOLUME} -o frameno.avi

mencoder dvd://${TITLE} -dvd-device ${DVDDEV} ${SPOS} ${EPOS} -ovc xvid 
-xvidencopts pass=1:vhq=1:vhq=4:gmc 
-vf ${CROP}${SCALE},hqdn3d=2:1:2 -oac copy -o /dev/null

mencoder dvd://${TITLE} -dvd-device ${DVDDEV} ${SPOS} ${EPOS} -ovc xvid 
-xvidencopts pass=2:vhq=1:vhq=4:gmc:bitrate=-${VBR} 
-vf ${CROP}${SCALE},hqdn3d=2:1:2 -oac copy -o ${OUT}.avi

Обработка графики[править]

  • convert input.tiff output.pdf — конвертация изображения tiff в pdf
  • convert -geometry 60×80 in.png out.png — привести изображение к указанному разрешению
  • gs -r384 -sDEVICE=jpeg -dNOPAUSE -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sOutputFile=passport.jpg — passport.pdf — конвертирование PDF в JPEG
  • pdftk 1.pdf 2.pdf cat output 1_plus_2.pdf — объединить файлы pdf в один

Docker[править]

  • docker run -it -p 22:22 debian — скачивание образа и запуск контейнера debian, с последующим входом в терминал внутри контейнера debian (-it), а так же проброс портов 22 между контейнером и хостом (-p 22:22)
  • docker run -d —rm nginx — запуск контейнера nginx в фоновом режиме (-d), а после остановки контейнера автоматически удалить его из локального репозитория (—rm)
  • docker ps -as — показать все контейнеры, с занимаемым пространством
  • docker container prune — удалить все остановленные контейнеры
  • docker container inpect d3dbb46de006 — все детали контейнера с ID d3dbb46de006
  • docker exec -it d3dbb46de006 bash — подключить дополнительный процесс (Bash) к контейнеру
  • docker run -v local_dir:docker_dir nginx — Использование локальной директории внутри директории контейнера образа nginx

Примечания[править]

  1. Если простое считывание окажется для него серьёзной нагрузкой. Лучше сделать дамп диска, а потом сравнить хэши.

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

NewTux

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

Официальной версии операционной системы не существует. Ядро от Линус Торвальдс + окружение от Ричарда Столлмана = GNU/Linux. Оригинальная версия ядра «Vanilla kernel» – kernel.org. Разные версии ядра, разная структура каталогов, разные менеджеры пакетов, разный набор ПО. Не существует официальных сборок.

Версии Linux

Популярные версии (Список дистрибутивов Linux):

Иерархическая структура каталогов Linux

Иерархическая структура каталогов Linux – все сводится к корню «/» (root).

Иерархическая структура каталогов Linux

Иерархическая структура каталогов Linux

/ Корневой каталог, содержит всю файловую архитектуру.
/bin Основные утилиты, необходимые как в однопользовательском режиме, так и при обычной работе всем пользователям (например: cat, ls, cp).
/boot Загрузочные файлы (в том числе файлы загрузчика, ядро, initrd).
/dev Основные файлы устройств (например, /dev/null, /dev/zero).
/etc Общесистемные конфигурационные файлы.
/home Домашние каталоги пользователей, которые содержат персональные настройки и данные пользователя.
/lib Основные библиотеки, необходимы для работы программ из /bin и /sbin.
/media Точки монтирования для сменных носителей.
/mnt Временно монтируемые файловые системы.
/opt Дополнительное программное обеспечение.
/proc Виртуальная файловая система, состояние ядра ОС и запущенные процессы в виде файлов.
/root Домашний каталог супер пользователя.
/run Информация о системе с момента ее загрузки, в том числе данные, необходимые для работы демонов.
/sbin Основные системные программы для администрирования и настройки системы, например init, iptables, ifconfig.
/srv Данные для сервисов, предоставляемых системой (например, www или ftp).
/sys Информация об устройствах, драйверах, а также некоторых свойств ядра.
/tmp Временные файлы.
/usr Вторичная иерархия для данных пользователя. Содержит большинство пользовательских приложений и утилит, используемых в многопользовательском режиме.
/var Изменяемые файлы, такие как файлы регистрации, временные почтовые файлы, файлы спулеров, лог файлы.

Варианты установки ПО в Linux

Из исходных кодов – компиляция бинарных файлов, возможность модифицировать, возможность установки без прав администратора.
Минусы: Поиск зависимостей очень долгий. Отсутствие контроля установленного ПО.

Из пакетов – пакет, это своего рода архив, который содержит уже готовый скомпилированный бинарный файл и перечень зависимостей (сразу виден перечень зависимостей). Есть контроль установленного ПО.

Пакетные менеджеры обрабатываю пакеты, имеют собственную базу данных установленного ПО. Если все таки ПО идет из исходного кода, тогда правильно будет собрать пакет и установить.
Минусы: Нужны права администратора. Пакеты создаются под определённый дистрибутив Linux (rpm для пакетного менеджера yum и deb для dpkg).

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

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

ls -l Просмотр файлов и директорий, -a показать скрытые файлы.
pwd Текущая директория.
touch Создание файлов
mkdir Создание директорий, -p авто создание поддиректорий.
cd Сменить текущую директорию. Абсолютный путь – путь от корня файловой системы. Относительный путь – путь из текущей директории.
rm Цдалить файл, можно использовать маску.
rmdir Удалить директорию, удаляет только пустые. Нужно использовать команду rm –r, а после rmdir.
cp Копирование файлов и директорий.
mv Перемещение файлов и директорий, можно использовать для переименования.
type Информация о типе команды, то как она будет интерпретироваться если вводится в командной строке.
whereis Показывает полный путь к исполняемому файлу.
who Кто сейчас работает на сервере.
man Справочная информация по команде.
more Листать файл, пробел постранично, еnter построчно, выход клавиша Q.
less Листать файл, можно с помощью курсора, поиск по файлу.

Пользователи в Linux

Идентификация пользователя (UID) — Имя пользователя – 32 символа (псевдоним), для ОС важно идентификатор пользователя.
Два типа пользователей:

  • root (UID 0) – никаких ограничений.
  • Все остальные – служебные (демоны) и обычные (UID не 0).

/etc/passwd – хранится информация о пользователях, в виде:
имя пользователя : Х : UID : GUID (UID группы) : комментарий : домашний каталог : командная оболочка

/etc/group – информация о группах пользователей.
имя группы : GUID : кто входит в группу

/etc/shadow – информация о паролях пользователей, в виде хэш.

Аутентификация – проверка подлинности, наличия пользователя в системе. Логин + пароль – Хеш функция – сравнение с тем что хранится в системе.
Авторизация — предоставление определённому лицу или группе лиц прав на выполнение определённых действий, а также процесс проверки данных прав при попытке выполнения этих действий. Часто можно услышать выражение, что какой-то человек «авторизован» для выполнения данной операции — это значит, что он имеет на неё право.

Расширение файла не имеет значения для ОС – файл это всего лишь поток байт.

File permissions

File permissions

Права доступа к файлам

Права доступа к файлам

Директория – это файл с определенным признаком каталога.
x – открыть директорию.
r – прочесть содержимое директории.

chmod – смена прав. Ключ –R меняет права директории и содержимого.

Команда chmod

Команда chmod

Файл – именованная область данных на диске — ext2,3,4. Блок минимальная единица – в ext4 блок 4 Килобайта.
inode – индексный дескриптор, хранит мета информацию о файле, идентифицируются по номерам. Количество inode ограничено, в xfs – нет таких ограничений.

stat – выводит информацию inode файла.

df – свободное пространство файловых систем.
df –i – информация о inode.

Каталог – хранит в себе имена файлов, по сути соответствие имени файла и его inode. Удаление файла — удаление его имени из каталога, файл остается лежать на диске.

Hard Link – синоним имени файлов – для создания ln, для просмотра ln –li, так как при выводе inode можно увидеть количество жестких ссылок. Жесткие линки созданные на один файл, логически между собой равны. Нельзя создавать на каталоги и только в пределах одной файловой системы, потому что inode уникальны в рамках одной файловой система.

Soft Link – аналог ярлыков, ln –s.
Софт линк занимает inode так как это новый файл, а хард линк – новое имя уже существующего файла. Можно создавать на каталоги и между разными файловыми системами.

Работа с потоками STDIN, STDOUT, STDERR

STDIN — Поток номер 0 (stdin) зарезервирован для чтения команд пользователя или входных данных.
STDOUT — Поток номер 1 (stdout) зарезервирован для вывода данных, как правило (хотя и не обязательно) текстовых.
STDERR — Поток номер 2 (stderr) зарезервирован для вывода диагностических и отладочных сообщений в текстовом виде.

Потоки STDIN, STDOUT, STDERR

Потоки STDIN, STDOUT, STDERR

I/O Redirection – STDIN, STDOUT, STDERR streams

Перенаправление в файл:
Стандартный поток: ls -l > stdout
Ошибки: ls -l 2> stderr
Одновременно: ls -l 2>stderr 1> stdout
> — перезаписывает файл
>> — добавление в файл

Порядок выполнения команды в bash:
ls -l > stdout — выполнение идет справа налево, сначала создается файл и после в него записывается вывод команды ls.

Перенаправление в STDIN другой команды:
command1 | command2 — перенаправление вывода одной команды на вход другой, используется “|” — pipe.

Команда tee::

ls -l | tee file

Потоки и указатели: “&” — перенаправление по адресу, по указателю.

2>&1 1> file

И, ИЛИ, НЕ ИМЕЕТ ЗНАЧЕНИЯ — Логические операторы работают на основании кода возврата программы. Код возврата: 0 — true, не 0 — false. Каждая программа возвращает код возврата, как увидеть: echo $?

&& — Логическое И:

ls -l && echo OK

|| — Логическое ИЛИ:

ls -l || echo ERROR

; — Логическое НЕ ИМЕЕТ ЗНАЧЕНИЕ:

Команда 1; Команда 2

Монтирование

Все есть файлы, диски находятся в каталоге dev, например, sda, sda1, sda2, sdb, sdc, sde, sdf. S — интерфейс SATA. Если имя состоит из букв, это физический диск. Если в конце цифра, это логический диск. Работа с дисками посредством виртуальной файловой системы, VFS — Virtual File System:

  • Уровень абстракции поверх конкретной реализации файловой системы.
  • Обеспечивает единообразный доступ клиентских приложений к различным типам файловых систем.
  • Программный интерфейс между ядром и драйвером конкретной файловой системой.

Монтирование — связывание виртуальной файловой системы с реальной.
vfs

После того как запускается ядро ОС, оно должно произвести монтирование корневой файловой системы, точки монтирования прописаны в файле: /etc/fstab
lsblk — информация о блочных устройствах, дисках ОС.
df — h — выводить размеры в читаемом виде, в мегабайтах или гигабайтах.
mount — более подробная информация, берет данные из /etc/mtab -> /proc/self/mounts

/mnt — каталог для монтирования временных устройств, если на постоянной основе, тогда через fstab и отдельный каталог.

sudo mount /dev/sda /mnt/
unmount /mnt/ либо unmount /dev/sda

Установка ПО

rpm — Пакетный менеджер в Centos (работа с пакетами).
yum — Надстройка над пакетным менеджером, которая работает с репозиторием. Предоставляет данные пакетному менеджеру.

yum search http | grep -i apache
sudo yum install httpd

Список файлов в пакете:

rpm -ql httpd
rpm -ql httpd | grep bin

Поиск пакета по файлу:

yum provides /bin/ls
which ls
rpm -qa

Удаление пакетов:

sudo yum remove httpd
sudo rpm -e httpd

Процессы в Linux

Процесс – программа выполняющаяся в текущий момент, совокупность файлов и данных.

Создать процесс можно исключительно из существующего процесса.
fork() – системный вызов, создающий новый процесс. Создает полную копию процесса. Стартует в одном процессе, завершается в двух.
exec() – системный вызов, заменяющий исполняемый код в процессе. Загрузили программу в созданный процесс.
exit() – завершение процесса. Возвращает код возврата.
wait() – считывает код возврата. Вызывается из процесса, который сделал вызов fork(). Считать код возврата может только тот процесс, из которого произошел процесс, который сейчас завершился, то есть процесс родитель.

fork-exec-exit-wait

fork exec exit wait

PID – Уникальный идентификатор процесса, PPID – уникальный идентификатор процесс родителя. Все процессы имеют идентификаторы кроме init или systemd (pid 1 и ppid 0) и kthreadd (pid 2 и ppid 0).

init – пространство пользователя.
kthreadd – процесс пространства ядра.

A tree of processes on a typical Linux system

Иерархическая структура процессов.

Процесс зомби – процесс между событиями exit и wait от родителя. Нормальное состояние, но если они начинают плодится стоит задуматься. Так как могут быть лимит у пользователя.
1. Симптом загруженной системы.
2. Процесс не следить за своими потомками, код возврата читает исключительно родитель.

Процесс сирота – это процесс без родителя. За сиротами следит ядро, как только появляется такой процесс он присваивается init, чтобы можно было прочесть код возврата.

Как завершить процесс-зомби, сделать сиротой, тогда он присвоится init и завершится.

Каталог /proc/pid — информация о процессе. Просмотр доступен всем пользователям ОС. Управлять процессом может либо создающий пользователь либо root. Сменить владельца не возможно. Кто является владельцем каталога то и является владельцем процесса.
Демон (Аналог служба в Windows.) — Программа работающая в фоновом режиме. Процесс, который не имеет управляющего терминала — не воспринимает команды с клавиатуры. Взаимодействие происходит с помощью сигналов ОС. Буква d в названии файлов – демон.

kill <Сигнал> pid — по умолчанию завершает процесс.
posix 28 видов сигналов.
SIGINT – 2 (Сигнал прерывания Ctrl-C с терминала).
SIGTERM – 15 (Сигнал завершения, сигнал по умолчанию для kill).
SIGKILL – 9 Безусловное завершение.

Сигналы обрабатываются специальными обработчиками – описание того что произойдет. Можем сами написать, произойдет замена на дефолтный. На 9 сигнал невозможно написать обработчик. Исключения процессы в статусе d (dump) и процесс init (В FreeBSD можно убить init).

top – показывает первые процессы которые потребляют больше всего процессорного времени.
Если нажать S можно установить период обновления.

top_load_average

Загрузка компьютера: За 1 минуту, За 5 минут, за 15 минут.

load average – среднее количество процессов в очереди на ожидании ресурсов. Если за минуту больше чем за 5 минут, значит нагрузка возрастает, если наоборот, нагрузка падает. Должно быть меньше или равно количеству ядер процессора, но не всегда.

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

Если нажать 1 можно увидеть данные по ядрам.
Вторая строчка – сколько процессов и какой у них статус.

top_cpu_tasks

top_cpu_tasks

us – сколько процессорных ресурсов израсходовано в пространстве пользователя.
sy – сколько процессорного потрачено на работу ядра.
ni (nice) – сколько процесс. ресурсов потраченных на процессы с низким приоритетом
id – процент простоя процессорного времени.
wa – сколько процессорного времени потраченного на устройство ввода-вывода. Если растет этот параметр, значить система ввода-вывод не справляется с текущей нагрузкой, либо сеть либо диск.
hi – сколько процессорных ресурсов потрачено на обработку аппаратных прерываний.
si – сколько процессорных ресурсов потрачено на программные прерывания.
st – как занята хостовая машина. Актуально для виртуальных машин. Не для всех гипервизоров актуально.

ps -efl
pstree

Сеть

ip a
ip r

Узнать DNS: cat /etc/resolv.conf

sudo ss –tnlp
sudo ss –tnlp

Системы инициализации

Порядок загрузки компьютера:
Linux-Booting-process

MBR — главная загрузочная запись, 512 байт — содержит код загрузчика и таблицы раздела. Необходима для загрузки операционной системы.
GPT — стандарт формата размещения таблиц разделов на физическом жестком диске. Он является частью Расширяемого микропрограммного интерфейса (англ. Extensible Firmware Interface, EFI) — стандарта, предложенного Intel на смену BIOS. EFI использует GPT там, где BIOS использует Главную загрузочную запись (англ. Master Boot Record, MBR).

GRUB — Позволяет пользователю иметь несколько установленных операционных систем. Умеет по цепочке передавать управление другому загрузчику. Популярный загрузчик в мире Linux. Загрузка ядра ОС.

Ядро должно содержать драйвер диска для каталога «/». Если загрузка идет со специфического диска, то, как правило, сначала вместо реального диска в каталог / монтируется initrd (Initial RAM Disk) — временная файловая система, можно положить модули ядра. После, старт системы инициализации.

Система инициализации — стартует после загрузки ядра. За систему инициализации отвечает первый процесс (init/systemd). Определяет порядок запуска служб и программ.

Три наиболее популярные системы:
1. SysV — наиболее старая система. Пришла из мира Unix. Набор стартовых скриптов. Уровни запуска.
2. Upstart — пришла на смену SysV, упростить написание стартовых скриптов, инициализация служб отличалась от SysV. Полностью быть совместимой с SysV. Особо не популярна.
3. Systemd — современная система инициализации. Параллельность запуска. Зависимости служб. Если служба не запустилась, система будет пытаться запустить.

Скрипты SysV лежать в каталоге /etc/init.d/
Upstart — команда service
В каталогах rc*.d указывается кто и когда будет стартовать, см. /etc/rc

Каталог по умолчанию для систем инициализации: /lib/systemd/system — перечень файлов, которые отвечают за старт служб.

Понравилась статья? Поделить с друзьями:
  • Кофемашина ровента эспрессо инструкция по применению
  • Полисорб инструкция при похмелье как принимать
  • Руководство мпр россии
  • Инструкция bioaqua от черных точек 3 х ступенчатая
  • Термолюкс газовый котел инструкция аогв 12 5