Фоновое выполнение команд
Выполнение некоторых команд может потребовать значительного времени.
Иногда желательно не блокировать интерпретатор до завершения выполнения команды. В таких случаях команды можно запускать в фоновом режиме с помощью символа
Команды форматирования для больших документов часто запускаются в фоновом режиме.
Кроме этого, иногда возникает необходимость создания собственных сценариев, которые реализуются в фоновом режиме и ожидают выполнения определенных событий, например переполнения жесткого диска или регистрации определенного пользователя.
Пример:
Выполнение некоторых команд может потребовать значительного времени.
Иногда желательно не блокировать интерпретатор до завершения выполнения команды. В таких случаях команды можно запускать в фоновом режиме с помощью символа
&.Команды форматирования для больших документов часто запускаются в фоновом режиме.
Кроме этого, иногда возникает необходимость создания собственных сценариев, которые реализуются в фоновом режиме и ожидают выполнения определенных событий, например переполнения жесткого диска или регистрации определенного пользователя.
Пример:
troff –me очень_большой_документ | lpr &Проверка доступности интересующего интерпретатора командной строки
Интерпретатор командной строки — компьютерная программа, часть операционной системы, обеспечивающая базовые возможности управления компьютером посредством интерактивного ввода команд через интерфейс командной строки или последовательного исполнения пакетных командных файлов.
Командные интерпретаторы UNIX:
Самым простым способом проверки доступности интересующего командного интерпретатора является ввод его имени в командной строке. Если интерпретатор запустился, он доступен.
Интерпретатор командной строки — компьютерная программа, часть операционной системы, обеспечивающая базовые возможности управления компьютером посредством интерактивного ввода команд через интерфейс командной строки или последовательного исполнения пакетных командных файлов.
Командные интерпретаторы UNIX:
bash, csh, ksh, zsh;Самым простым способом проверки доступности интересующего командного интерпретатора является ввод его имени в командной строке. Если интерпретатор запустился, он доступен.
Несколько причин для выбора альтернативных командных интерпретаторов
1. Привычка работать в системах UNIX System V (во многих из них по умолчанию применяются интерпретатор ksh) или в системах компании Sun Microsystems и других системах на базе Berkeley UNIX (в них часто используется csh). В данном случае применение этих интерпретаторов командной строки окажется наиболее удобным.
2. Необходимость запуска сценариев, которые создавались исключительно для определенного командного интерпретатора.
3. Возможности альтернативного командного интерпретатора могут оказаться более предпочтительными. Например, один из членов группы пользователей Linux предпочитает применять ksh, так как его не устраивает способ создания псевдонимов в bash.
1. Привычка работать в системах UNIX System V (во многих из них по умолчанию применяются интерпретатор ksh) или в системах компании Sun Microsystems и других системах на базе Berkeley UNIX (в них часто используется csh). В данном случае применение этих интерпретаторов командной строки окажется наиболее удобным.
2. Необходимость запуска сценариев, которые создавались исключительно для определенного командного интерпретатора.
3. Возможности альтернативного командного интерпретатора могут оказаться более предпочтительными. Например, один из членов группы пользователей Linux предпочитает применять ksh, так как его не устраивает способ создания псевдонимов в bash.
Источники Apt
Во всех дистрибутивах на основе Debian - репозитории ПО apt определены в файле
Общий синтаксис файла
⁃ Вторая запись — это URL-адрес репозитория
⁃ Третья запись — кодовое имя распространения (
⁃ Последние записи — это компоненты / категории репозитория.
Во всех дистрибутивах на основе 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Вывести список доступных локалей:
localectl list-localesИзменить язык системы на английский:
localectl set-locale LANG="en_EN.utf8"(Единицы измерения, финансовые обозначения и прочие региональные параметры при этом останутся прежними)
Вывести список доступных раскладок клавиатуры:
localectl list-x11-keymap-layoutsВсю работу по обновлению существующих и созданию новых конфигурационных файлов localectl берет на себя.
Управление настройками времени и даты
А чтобы включить синхронизацию с ntp-сервером:
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-timezonesloginctl: управление сеансами пользователей.
Эта простая утилита, входящая в состав systemd, позволяет получать информацию о том, какие пользователи находятся в системе в данный момент, как давно они вошли, какой uid им принадлежит, сколько сеансов запущено на данный момент и т.д. Кроме того, 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 — подсистема инициализации и управления службами в 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 поддерживает следующие типы модулей:
Подсистема оперирует специально оформленными файлами конфигурации — модулями. Каждый модуль отвечает за отдельно взятую службу, точку монтирования, подключаемое устройство, файл подкачки, виртуальную машину и тому подобные ресурсы.
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
Репозиторий APT — это сетевой сервер или локальный каталог, содержащий пакеты deb и файлы метаданных, которые доступны для чтения инструментами APT.
Если
Утилита
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 команда
(условный) пример, чтобы добавить PPA Пупкина В, который предоставляет Proga версии 41.x, вы должны запустить:
Персональные архивы пакетов (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-битные пакеты:
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 влияет на текущую среду выполнения оболочки, в большинстве оболочек она реализована как встроенная команда.
Общий синтаксис wait имеет следующий вид:
wait [options] IDID — это идентификатор процесса или задания. Если ID не указан, команда ожидает завершения всех дочерних фоновых заданий.
Например, чтобы дождаться фонового процесса с
PID 3549 , вы должны использовать:wait 3549Команда wall в Linux
wall — это утилита командной строки, которая отображает сообщение на терминалах всех вошедших в систему пользователей. Сообщения можно вводить либо на терминале, либо в содержимом файла.
Синтаксис команды wall следующий:
Самый простой способ передать сообщение — вызвать команду wall с сообщением в качестве аргумента:
wall — это утилита командной строки, которая отображает сообщение на терминалах всех вошедших в систему пользователей. Сообщения можно вводить либо на терминале, либо в содержимом файла.
Синтаксис команды wall следующий:
wall [OPTIONS] [<FILE>|<MESSAGE>]Если файл не указан, wall читает сообщение со стандартного ввода.
Самый простой способ передать сообщение — вызвать команду wall с сообщением в качестве аргумента:
wall "The system will be restarted in 10 minutes."И сообщение будет передано всем пользователям, которые в данный момент вошли в систему.
Как транслировать сообщения из файла в терминал с помощью утилиты wall
wall — это утилита командной строки, которая отображает сообщение на терминалах всех вошедших в систему пользователей.
Чтобы транслировать содержимое файла, вызовите команду wall за которой следует имя файла:
wall — это утилита командной строки, которая отображает сообщение на терминалах всех вошедших в систему пользователей.
wall читает из файла только при вызове root!Чтобы транслировать содержимое файла, вызовите команду wall за которой следует имя файла:
wall file.txtЧтение из файла — намного удобнее, чем чтение сообщения через терминал, особенно если вы регулярно отправляете одни и те же сообщения.
Передача сообщения пользователю или группе
Чтобы отправить сообщение только определенному пользователю, используйте команду
Чтобы отправить сообщение для группы под именем devs, запустите команду с параметром
Чтобы отправить сообщение только определенному пользователю, используйте команду
write
write пользователь [терминал]Также есть утилита
wall, с помощью которой можно отправлять сообщения. Она отображает сообщение для всех пользователей и для определенных групп.Чтобы отправить сообщение для группы под именем devs, запустите команду с параметром
-g:wall -g devs [терминал]Группа также может быть указана по ее
GID (идентификатору группы).Как управлять доступом на запись для терминала?
Использование:
Если никакие опции не указаны, то mesg отображает текущий статус доступа к вашему терминалу.
mesg — UNIX-утилита, управляет доступом на запись для терминала данного пользователя. Обычно используется для разрешения или запрета другим пользователям писать на терминал данного пользователя.Использование:
mesg [y|n]где
y — разрешить другим пользователям доступ на запись к вашему терминалу, а n — запретить доступ на запись к вашему терминалу.Если никакие опции не указаны, то mesg отображает текущий статус доступа к вашему терминалу.
Команда Basename в Linux
Она поддерживает два формата синтаксиса:
Самый простой пример — вывести имя файла с удаленными ведущими каталогами:
basename — это утилита командной строки, которая удаляет каталог и конечный суффикс из заданных имен файлов.Она поддерживает два формата синтаксиса:
basename NAME [SUFFIX]basename берет имя файла и печатает последний компонент имени файла. При желании он также может удалить любой конечный суффикс.
basename OPTION... NAME...
Самый простой пример — вывести имя файла с удаленными ведущими каталогами:
basename /etc/passwdВывод будет включать имя файла:
passwd