Редактирование:
Создаем Unit в Linux
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
Что такое systemd? systemd — это набор базовых строительных блоков для системы Linux. Он предоставляет диспетчер систем и служб, который работает как PID 1 и запускает остальную часть системы. systemd предоставляет агрессивные возможности распараллеливания, использует активацию сокетов и D-Bus для запуска служб. Предлагает запуск демонов по требованию, отслеживает процессы, использующие группы управления Linux. Поддерживает точки монтирования и автоматического монтирования. Реализует сложную логику управления службами на основе транзакционных зависимостей. systemd поддерживает сценарии SysV и LSB init и работает как замена для sysvinit. Другие части включают демон ведения журнала, утилиты для управления базовой конфигурацией системы. В него входит: имя хоста, дата, локаль, ведение списка зарегистрированных пользователей и запущенных контейнеров. А также виртуальных машин, системные учетные записи, каталоги времени выполнения и параметры. Не забудем о демонах управления простой конфигурацией сети, синхронизацией сетевого времени, пересылкой журналов и разрешением имен. unitd работает с сервисами описанными в своей конфигурации. Основой для создания сервиса служит юнит (unit) — это текстовый файл с описанием на подобии ini файла в системе windows. Конфигурационный файл состоит из секций. Внутри каждой секции указываются необходимые параметры. Обязательными во всех юнитах являются две секции, остальные используются в зависимости от типа юнита. Приступим например в /opt/telegram/start/ создаем фаил имя_програмы.sh в нем пишем: #!/bin/bash /usr/bin/python3 /opt/telegram/папка_с_pyton_програмой/main.py Создаем фал в сисди nano /etc/systemd/system/имя_нашей_программы.service Вставляем следующее: Description= описывавшем нашу программу в пару слов After=network.target [Service] User=имя_пользователя_от_которого_будет_запускаться_программа Nice=1 KillMode=none SuccessExitStatus=0 1 ProtectHome=true ProtectSystem=full PrivateDevices=true NoNewPrivileges=true WorkingDirectory=/opt/telegram/папка_с_pyton_програмой ExecStart=/opt/telegram/start/имя_програмы.sh [Install] WantedBy=multi-user.target далее: systemctl start имя_нашей_программы.service systemctl status имя_нашей_программы.service если всё oK, то: systemctl enable имя_нашей_программы.service - это будет запускать нашу программу при старте системы. Полезное: Каталоги хранения юнитов /usr/lib/systemd/system — юниты поставляемые вместе с системой и устанавливаемыми приложениями /run/systemd/system — юниты созданные динамически (в рантайме) /etc/systemd/system — юниты системного администратора (тут и будем хранить наши) Юниты systemd target — группирует модули service — отвечает за запуск сервисов (служб) и поддерживает вызов интерпретаторов для исполнения пользовательских скриптов mount — занимается монтированием файловых систем automount — автомонтирование файловых систем, используется при обращении к точке монтирования; swap — отвечает за подключение файла подкачки timer — запускает модули по расписанию, аналог cron socket — запуск модуля при подключению к сокету slice — группировка других модулей в контейнер (дерево) cgroups device — использует реакцию на подключение какого-либо устройства path — запуск модуля по событию доступа по конкретному пути в файловой системе [Unit] Description — описание юнита для большего понимания Documentation — документация по процессу sshd After — зависимость, т.е. в данном случае запускать юнит только после запуска network.target и sshd-keygen.target Wants — еще одна зависимость, означает желательно. В примере Wants=sshd-keygen.target, т.е. желательно чтобы было запущено sshd-keygen.target . Желательно но не обязательно. [Service] Type — типы запуска служб. Могут быть simple (по умолчанию) — происходит незамедлительный запуск этой службы, с учетом того что процесс не разветвляется (fork). Не используйте simple если пользуетесь очередностью запуска. Одно исключение это активация сокета. forking — служба считается запущенной после того, после разветвления процесса с завершением родительского процесса. Используется для запуска классических демонов исключая случаи, когда в таком поведении процесса нет необходимости. Также желательно указать PIDFile=, чтобы systemd мог отслеживать основной процесс. oneshot — удобен для скриптов, которые выполняют одно задание и завершаются. При необходимости можно задать параметр RemainAfterExit=yes, чтобы systemd считал процесс активным даже после его завершения. notify — идентичен параметру simple, но с оговоркой, что демон пошлет systemd сигнал о своей готовности. Эталонная реализация данного уведомления представлена в libsystemd-daemon.so. dbus — служба считается находящейся в состоянии готовности, когда указанный параметр BusName появляется в системной шине DBus. idle — откладывается выполнение двоичного файла службы до момента выполнения всех остальных задач. В остальном поведение аналогично simple. Далее в разделе Service EnvironmentFile — файлы переменного окружения ExecStart — полный путь к исполняемому файлу программы с параметрами запуска ExecReload — полный пусть к исполняемому файлу программы с параметрами перезапуска программы KillMode — указывается как будет завершен процесс. В данному случае параметр process говорит о том что будет закрыт только главный процесс Restart — перезагрузка процесса, параметр on-failure указывает на автоматическую перезагрузку в случает отказа процесса RestartSec — время ожидания через которое процесс должен перезагрузиться [Install] WantedBy — указывает на каком урове запуска стартует сервис, параметр multi-user.target указывает на запуск в многопользовательском режиме без графики
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «wiki.ramba-art.ru» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
wiki.ramba-art.ru:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице
MediaWiki Appliance
- Powered by
TurnKey Linux