Как запустить скрипт при загрузке в Debian 11
Б oot up простыми словами относится ко времени от включения питания до момента запуска пользователя. Это достигается с помощью загрузочного сценария, который содержит инструкции о том, какой код загружать и какие процессы и приложения запускать.
Существует несколько этапов запуска Linux (перед загрузкой в systemd или System V init и до загрузки среды рабочего стола), и вы можете настроить свой собственный сценарий или программу автозапуска на любом этапе, где это может быть одна команда или, скорее, серия команд или исполняемый файл сценарий оболочки. Тем не менее, полезно отметить, что могут быть некоторые различия в процедуре запуска между различными дистрибутивами Linux и версии .
Современные версии Linux сначала загружаются в системад в то время как более старые версии используют Инициализация системы V. Оба метода будут работать хрон а также rc.local перед средами рабочего стола, такими как KDE или ГНОМ загружены. С другой стороны, серверные дистрибутивы Linux запускают оболочку по умолчанию, например, Баш, после входа пользователя в консоль вместо загрузки среды рабочего стола.
Чтобы надлежащим образом добавлять сервисы и скрипты при запуске на Дебиан 11 , вам нужно создать модули Systemd. В этом руководстве основное внимание будет уделено трем методам добавления сценариев при запуске на вашем компьютере. Дебиан 11 машина:
Что такое системный модуль?
Единицы systemd — это файлы конфигурации, содержащие информацию для соответствующего управления или выполнения определенных системных файлов. В systemd единица обозначает любой ресурс, с которым система умеет работать и управлять. Единицы systemd обычно используются для запуска, остановки, управления службами, организации процессов загрузки, обслуживания задач и процессы, создавать сокеты, автоматически монтировать точки, обменивать файлы или разделы, монтировать файловую систему и инициализировать аппаратное обеспечение.
Модули Systemd расположены в каталоге /etc/systemd/system. Любой скрипт, который вы хотите запускать при загрузке с использованием юнитов Systemd, должен быть указан в файле (юните) в указанном выше каталоге.
Для упрощения отношений между системад а также единицы лучше рассматривать systemd как тренера команды, чем юниты как удобства и потребности в команде, например, мячи, кукурузу, тренажерный зал, игровую площадку, игровые комплекты, и это лишь некоторые из них. Таким образом, чтобы заставить тренера управлять командой, чтобы она работала лучше, они используют доступное оборудование для глубокого улучшения команды. Точно так же systemd использует модули для контроля и управления системными процессами и службами.
Некоторые из типов модулей Systemd включают в себя:
- Цель — Набор единиц, описывающий точку синхронизации. Точка синхронизации используется во время загрузки для запуска системы в определенном состоянии.
- Устанавливать — Модуль такого типа управляет точкой монтирования файловой системы.
- Устройство — Блок этого типа обеспечивает активацию на основе устройства, как драйвер устройства.
- Разъем — Этот тип устройства активирует службу, когда служба получает входящий трафик на прослушивающем сокете.
- Дорожка — Этот тип устройства отслеживает файлы/каталоги, а затем активирует/деактивирует службу, если указанный файл или каталог извлекается.
- Таймер – Этот тип устройства выполняет активацию и деактивацию указанной услуги на основе таймера или по истечении установленного времени.
- Объем — Подразделение, которое систематизирует и управляет посторонними процессами.
Список единиц systemd
Ниже приведен краткий обзор существующих юнитов systemd в нашей системе с использованием лс команда.
Одним из файлов, исключенных из приведенного выше снимка, является tomcat.service, содержимое которого показано на следующем изображении.
Чтобы ознакомиться с файлами конфигурации устройства в приведенном выше снимке, ознакомьтесь со следующей подробной информацией. Не беспокойтесь о них, так как модуль, который вы создадите для запуска своего скрипта, будет немного проще.
Директивы устройства включают в себя;
- Описание: Эта директива обычно позволяет вам добавить описание модуля; здесь вы можете установить имя устройства для подтверждения.
- Хочет: Здесь обычно указываются зависимости модулей. Следует отметить, что существуют различные директивы для этой же цели. Например, директива Требует устанавливает жесткие зависимости, без которых блок не может функционировать. В отличие от Requires, Wants используется для указания зависимостей, без которых модуль может продолжать работу.
- После: Текущий модуль начнется после модуля, указанного в этой директиве.
- Тип: разветвление указывает, что служба должна быть уничтожена, при этом сохраняются дочерние процессы, которым должен быть назначен идентификатор процесса (PID).
- Окружающая обстановка: Здесь можно указать переменные среды модуля.
- ExecStart: Эта директива позволяет вам указать путь и команды, которые вы хотите выполнить.
- ExecStop: вы можете указать команду, используемую для остановки агрегата.
- Статус успешного выхода: Эта директива позволяет перечислять статус выхода и сигналы.
- Пользователь: вы можете идентифицировать пользователя-владельца устройства.
- Группа: вы можете перечислить владельца группы устройства.
- Маска: вы можете указать маску пользователя.
- Секунда перезапуска: Если устройство самопроизвольно перезагружается, вы можете указать время ожидания до перезагрузки службы.
- Начать сначала: вы можете указать для Systemd, когда устройство должно быть перезапущено. Доступные варианты всегда: сторожевой таймер, отказ, отклонение от нормы, успех и прерывание.
Директива [Install] в приведенном выше примере — WantedBy.
- Разыскивается: Эта директива позволяет вам описать модуль как зависимость; это похоже на Хочет директива, а для обозначения того, хорошо ли текущий модуль продуман как зависимость от другого модуля.
Другие обычные директивы в разделе [Unit], которые не были включены в предыдущий скриншот:
- Требует: В этой директиве вы можете указать зависимости для предотвращения сбоев при загрузке. В отличие от Хочет директивы, если зависимость, обозначенная директивой Requires, не выполняется, устройство не будет работать.
- PID-файл: Директива forking требует директивы PIDFile, в которой указан путь к PID файла дочернего процесса, чтобы Systemd мог его обнаружить.
- Стартлимитинтервал: указывает, что у устройства есть 60 секунд на 10 попыток перезапуска в случае сбоя.
- StartLimitBurst: Эта директива показывает лимит попыток, в предыдущем примере десять попыток за 60 секунд.
Ты сможешь перейдите по этой ссылке для получения дополнительной информации о модулях Systemd.
Запуск скрипта при загрузке в Debian 11
Способ 1: использование модуля systemd для запуска скрипта при загрузке
Запуск сценария при загрузке может быть простым и иметь меньше настроек, чем файл tomcat.service, который мы ранее использовали для отображения общего содержимого устройства.
Файлы (юниты), содержащие информацию о скриптах, запущенных при загрузке, расположены в каталоге /etc/systemd/system. Чтобы создать сценарий для запуска при загрузке, вы должны сгенерировать новый модуль для этого сценария. Таким образом, вы можете использовать любой редактор для целей создания. Однако в нашем случае мы воспользуемся редактором nano, в котором создадим модуль с именем script.service. Обратите внимание, что это имя можно изменить на любое из ваших предпочтений для удобной идентификации вашего скрипта.
судо нано /etc/systemd/system/script.service
После этого скопируйте и вставьте следующий код в файл, который вы создали в /etc/systemd/system.
с путем к вашему скрипту. [Unit] Description=Имя вашего скрипта здесь After=default.target [Service] ExecStart=/PATH/TO/Script.sh [Install]
После этого не забудьте заменить с именем вашего скрипта и с путем к вашему скрипту, как показано ниже:
После копирования данных в файл в /etc/systemd/system/ вы должны включить его с помощью команды systemctl, показанной ниже.
sudo systemctl включить script.service
Примечание: Не забудьте заменить instagram story viewer