Linux для чайника – Telegram
Linux для чайника
20K subscribers
87 photos
4 files
78 links
Linux
- Разбор утилит / инструментов
- Новости / факты
- Опросы для проверки знаний, навыков
и многое другое.

Только по вопросам сотрудничества: @altmainf

Регистрация в перечне РКН https://clck.ru/3EpL9L
Download Telegram
Последовательное выполнение команд с последующим перенаправлением вывода

Иногда команды должны выполняться последовательно, одна за другой. Для этого в командной строке можно ввести несколько команд и разделить их точкой с запятой ( ; )

date ; troff -me большой_документ | lpr ; date

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

Команда date выводит дату и время начала форматирования. Команда troff выполняет форматирование и передает результат работы на печать. По завершении форматирования опять выводится текущая дата и время (можно подсчитать время, которое потребовалось для завершения форматирования).
Фоновое выполнение команд

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

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

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

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

Пример:
troff –me очень_большой_документ | lpr &
Проверка доступности интересующего интерпретатора командной строки

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

Командные интерпретаторы UNIX: bash, csh, ksh, zsh;

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

1. Привычка работать в системах UNIX System V (во многих из них по умолчанию применяются интерпретатор ksh) или в системах компании Sun Microsystems и других системах на базе Berkeley UNIX (в них часто используется csh). В данном случае применение этих интерпретаторов командной строки окажется наиболее удобным.

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

3. Возможности альтернативного командного интерпретатора могут оказаться более предпочтительными. Например, один из членов группы пользователей Linux предпочитает применять ksh, так как его не устраивает способ создания псевдонимов в bash.
Источники Apt

Во всех дистрибутивах на основе Debian - репозитории ПО apt определены в файле /etc/apt/sources.list либо в отдельных файлах в каталоге /etc/apt/sources.list.d/

Имена файлов репозитория в каталоге /etc/apt/sources.list.d/ должны заканчиваться на .list

Общий синтаксис файла /etc/apt/sources.list придерживается следующего формата:
deb http://repo.tld/ubuntu distro component...

⁃ Первая запись — тип архива (deb или deb-src)
⁃ Вторая запись — это URL-адрес репозитория
⁃ Третья запись — кодовое имя распространения (beaver, xenial и т.д.)
⁃ Последние записи — это компоненты / категории репозитория.
Управление языковыми и региональными параметрами

Наверняка многим из вас когда-нибудь приходилось потратить изрядное количество времени на настройку локалей и раскладок. Сделать это путем прописывания нужных параметров в различных конфигурационных файлах бывает непросто, поэтому с этим нам может помочь команда localectl.

Для того, чтобы вывести текущие настройки:
localectl

Вывести список доступных локалей:
localectl list-locales

Изменить язык системы на английский:
localectl set-locale LANG="en_EN.utf8"
(Единицы измерения, финансовые обозначения и прочие региональные параметры при этом останутся прежними)

Вывести список доступных раскладок клавиатуры:
localectl list-x11-keymap-layouts

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

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

Установить дату и время (работает только при выключенной синхронизации):
timedatectl set-time "2030-01-01 00:00:01"

Отключить синхронизацию с ntp-сервером:
timedatectl set-ntp 0
(В этой и других подобных командах из набора systemd в качестве булевых значений можно использовать 1\0, on\off, true\false)

А чтобы включить синхронизацию с ntp-сервером:
timedatectl set-ntp 1

Отобразить список часовых поясов и установить подходящий:
timedatectl list-timezones
loginctl: управление сеансами пользователей.

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

Примеры использования:

Чтобы заблокировать текущую сессию, выполните:
loginctl lock-session

Чтобы вывести список открытых сеансов:
loginctl list-sessions

Получить список залогинившихся пользователей:
loginctl list-users

Вывести информацию о состоянии текущего сеанса (или любого другого, если добавить id), включая список дочерних процессов и номер виртуальной консоли:
loginctl session-status
Возможности systemd

systemd
— подсистема инициализации и управления службами в Linux.
Основная особенность — интенсивное распараллеливание запуска служб в процессе загрузки системы, что позволяет существенно ускорить запуск ОС.

Помимо простого запуска и контроля служб, systemd предлагает некоторые другие удобные функции, для использования которых ранее системным администраторам приходилось прибегать к помощи дополнительных программ-демонов.

Среди таких функций:
1. сокет-активация служб (заменяет inetd);
2. запуск сервисов по расписанию (заменяет cron);
3. работа с аппаратным сторожевым таймером (заменяет watchdog);
4. смена корня (заменяет chroot);
5. автомонтирование томов и сетевых ресурсов (заменяет mount и fstab);
6. journalctl — служба журналирования;
7. systemd-analyze — анализ скорости запуска служб;
8. systemd-boot — UEFI-загрузчик (заменяет GRUB).
Архитектура systemd

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

systemd поддерживает следующие типы модулей:
.target — позволяет группировать модули, воплощая концепцию уровней запуска;

.service — отвечает за запуск сервисов (служб), также поддерживает вызов интерпретаторов для исполнения пользовательских скриптов;

.mount — отвечает за монтирование файловых систем;

.automount — позволяет отложить монтирование файловых систем до фактического обращения к точке монтирования;

.swap — отвечает за подключение файла или устройства подкачки;

.timer — позволяет запускать модули по расписанию;

.socket — предоставляет службам поддержку механизма сокет-активации;

.slice — отвечает за создание контейнера cgroups;

.device — позволяет реагировать на подключение устройств;

.path — управляет иерархией файловой системы.
Что такое apt-key?

apt-key - это утилита, используемая для управления ключами, которые APT (пакетный менеджер) использует для аутентификации пакетов. Она тесно связана с утилитой add-apt-repository (добавляет внешние репозитории)

Примеры использования:
Отобразить список доверенных ключей:
apt-key list

Добавить ключ в список доверенных:
apt-key add {{public_key_file.asc}}

Удалить ключ из списка доверенных:
apt-key del {{key_id}}

Ключам, добавленные с помощью apt-key, apt доверяет глобально. Такой ключ может быть использован для авторизации добавления любого другого внешнего хранилища, что представляет собой важную проблему безопасности.
Команда add-apt-repository

add-apt-repository — это скрипт Python, который позволяет вам добавить репозиторий APT в /etc/apt/sources.list или в отдельный файл в каталоге /etc/apt/sources.list.d. Команду также можно использовать для удаления уже существующего репозитория.

Репозиторий APT — это сетевой сервер или локальный каталог, содержащий пакеты deb и файлы метаданных, которые доступны для чтения инструментами APT.

Если add-apt-repository недоступен в вашей системе, вы получите сообщение об ошибке «Команда add-apt-repository не найдена».

Утилита add-apt-repository включена в software-properties-common . Для его установки выполняем:
sudo apt update
sudo apt install software-properties-common
Добавляем репозитории с помощью add-apt-repository

Базовый синтаксис команды add-apt-repository такой:
add-apt-repository [options] repository

Где repository является репозиторием PPA, либо может быть обычной записью репозитория, которую можно добавить в файл sources.list

По умолчанию в ubuntu 18.04 и новее add-apt-repository также обновляет индекс пакета, если открытый ключ репозитория импортируется.

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

Если по каким-либо неведанным причинам вы хотите удалить ранее включенный репозиторий, используйте параметр --remove.
Добавление репозиториев PPA

Персональные архивы пакетов (PPA) — с помощью этой службы, пользователи загружают исходные пакеты Ubuntu, которые создаются и публикуются благодаря Launchpad в качестве подходящего репозитория.

При добавлении репозитория PPA команда add-apt-repository создает новый файл в каталоге /etc/apt/sources.list.d/

(условный) пример, чтобы добавить PPA Пупкина В, который предоставляет Proga версии 41.x, вы должны запустить:
sudo add-apt-repository ppa:pupkinv/proga-41
Что такое wine?

Wine — это не виртуальная машина (соответственно, сама аббревиатура «Wine Is Not an Emulator» говорит нам об этом), а уровень совместимости, служащий для запуска приложений Windows на UNIX-подобных ОС. (Сюда же POSIX-совместимые, т.е. Linux, BSD, Mac).

Все просто: в данном случае, системные вызовы Windows преобразуются в эквивалентные вызовы POSIX, используемые ОС на основе Unix, а виртуальная машина (эмулятор), для примера говоря, ничего не преобразует, а имитирует внутреннюю логику Windows.

Чтобы установить wine, первым шагом будет — включение мультиархитектуры (если оно надо вообще), что позволит вам установить на машину как 64-битные, так и 32-битные пакеты:
sudo dpkg --add-architecture i386
sudo apt update

Ну а дальше просто устанавливаем, как любую утилиту:
sudo apt install wine64 wine32

На момент выхода поста, БД приложений Wine насчитывает 28943 приложения.
wait — это команда, которая ожидает завершения заданных заданий и возвращает статус выхода ожидаемой команды.

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

Общий синтаксис wait имеет следующий вид:
wait [options] ID

ID — это идентификатор процесса или задания. Если ID не указан, команда ожидает завершения всех дочерних фоновых заданий.

Например, чтобы дождаться фонового процесса с PID 3549 , вы должны использовать:
wait 3549
Команда wall в Linux

wall — это утилита командной строки, которая отображает сообщение на терминалах всех вошедших в систему пользователей. Сообщения можно вводить либо на терминале, либо в содержимом файла.

Синтаксис команды wall следующий:
wall [OPTIONS] [<FILE>|<MESSAGE>]

Если файл не указан, wall читает сообщение со стандартного ввода.

Самый простой способ передать сообщение — вызвать команду wall с сообщением в качестве аргумента:
wall "The system will be restarted in 10 minutes."

И сообщение будет передано всем пользователям, которые в данный момент вошли в систему.
Как транслировать сообщения из файла в терминал с помощью утилиты wall

wall — это утилита командной строки, которая отображает сообщение на терминалах всех вошедших в систему пользователей.

wall читает из файла только при вызове root!

Чтобы транслировать содержимое файла, вызовите команду wall за которой следует имя файла:
wall file.txt

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

Чтобы отправить сообщение только определенному пользователю, используйте команду write

write пользователь [терминал]

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

Чтобы отправить сообщение для группы под именем devs, запустите команду с параметром -g:

wall -g devs  [терминал]

Группа также может быть указана по ее GID (идентификатору группы).
Как управлять доступом на запись для терминала?

mesg — UNIX-утилита, управляет доступом на запись для терминала данного пользователя. Обычно используется для разрешения или запрета другим пользователям писать на терминал данного пользователя.

Использование:
mesg [y|n]

где y разрешить другим пользователям доступ на запись к вашему терминалу, а n запретить доступ на запись к вашему терминалу.

Если никакие опции не указаны, то mesg отображает текущий статус доступа к вашему терминалу.