Система инициализации systemd теперь является частью почти всех дистрибутивов Linux. Как администратор или разработчик, вы создаете сервисы, которыми может управлять systemd. Например, если вы хотите запускать службы при загрузке или хотите управлять ими вручную, то это можно сделать через специальный файл службы.
В этом уроке я расскажу, как создать служебный файл systemd в Linux.
Что такое служебный файл
Прежде чем идти дальше, давайте разберемся, что такое служебный файл systemd и как он создается в Linux.
Файл службы systemd содержит инструкции, установленные для systemd для управления службой. Обычно он содержит три раздела:
- Единица
- Услуга
- Установить
Единица Раздел содержит основную информацию о сервисе, такую как краткое описание, страницы документации и путь к зависимостям. Установить Раздел не является обязательным, но обычно он определяет, в каком состоянии системы должна быть включена служба.
Услуга раздел обычно находится между разделами «Модуль» и «Установка». В первую очередь он содержит тип службы и путь к исполняемым файлам, которые по сути представляют собой команды, выполняемые при вызове службы с помощью systemd.
Вот как выглядит типичная структура служебного файла.
[ Единица ]
Директива1 = инструкция
Директива2 = инструкция
…
[ Услуга ]
Директива1 = инструкция
Директива2 = инструкция
…
[ Установить ]
Директива1 = инструкция
Директива2 = инструкция
…
Здесь директивы — это параметры, которые принимают соответствующие входные данные. Например, Описание Директива принимает строку имени службы. Подобным образом, ЭксекСтарт учитывает полный путь к исполняемому файлу.
Типичный служебный файл ssh.service приведен ниже.
Как создать служебный файл
Чтобы создать сервис systemd, необходимо понимать ключевые директивы. В этом руководстве я расскажу об основных директивах, которые помогут вам создать полнофункциональный служебный файл.
Создание служебного файла включает в себя несколько шагов, давайте начнем с создания файла сценария.
Примечание: Чтобы продолжить использование метода, упомянутого ниже, у вас должны быть права root.
1. Создание сценария
Начальный шаг предполагает создание кода, который будет выполняться, когда сервис начнет свою работу. Для этого урока я создаю bash-скрипт, который будет хранить данные о времени безотказной работы системы Linux и использовании памяти.
Давайте создадим скрипт в текущем каталоге с именем myscript.sh с помощью редактора nano.
судо нано myscript.shТеперь добавьте в файл приведенный ниже скрипт и сохраните его, нажав Ctrl+X а потом и .
#!/бин/башэхо «>>Вот время безотказной работы вашей системы<<» > дом / сам / мойфайл.txt
время безотказной работы >> дом / сам / мойфайл.txt
эхо «>>Вот использование памяти вашей системы<<» >> / дом / сам / мойфайл.txt
бесплатно -м >> дом / сам / мойфайл.txt
спать 60
Скрипт содержит пару эхо-строк и время безотказной работы и бесплатно команды.
время безотказной работы Команда в Linux используется для вывода информации о том, как долго работает система и сколько пользователей подключено при средней загрузке системы за последние 1, 5 и 15 минут.
бесплатно команда используется для вывода информации об использовании памяти системой, а команда -м флаг используется для печати вывода в МБ .
Чтобы сохранить информацию в текстовом файле, мы используем специальные операторы, называемые операторами перенаправления. > Оператор используется для вставки текста в указанный текстовый файл. Однако, если файл еще не существует, он будет создан. В то время >> Оператор используется для добавления текста в файл. спать Команда используется для поддержания активности службы в течение как минимум одной минуты.
Теперь сделайте скрипт исполняемым, предоставив необходимые разрешения.
судо chmod +x myscript.shТеперь у скрипта есть разрешение на выполнение, давайте перейдем к следующему разделу.
Примечание: Чтобы сделать служебный файл безошибочным, используйте в сценарии bash абсолютный путь к файлу.
2. Создание файла .service
Далее создайте служебный файл с именем .услуга расширение. Сервисный файл должен быть создан в папке /etc/systemd/система каталог. Сначала перейдите в этот каталог, используя CD команда.
CD / и т. д. / системный / системаВы можете создать служебный файл в любом каталоге, а затем переместить его в этот каталог.
Я создаю служебный файл с мойсервис.сервис имя.
судо нано мойсервис.сервисТеперь добавьте в файл следующие строки.
[ Единица ]Описание = Мой сервис
[ Услуга ]
Тип = простой
ЭксекСтарт '=' / мусорное ведро / бить / дом / сам / скрипт.sh
Перезапуск = при отказе
[ Установить ]
Разыскивается =multi-user.target
Обратите внимание, что [Объект], [Сервис], и [Установить] являются с учетом регистра . Служебный файл не будет работать, если какой-либо из них указан неправильно, например [UNIT] или [SERVICE].
Имя службы указывается как Мой сервис в Описание директива [Единица] раздел.
Тип услуги простой в [Услуга] раздел, который является типом по умолчанию. Разветвление , один выстрел , поставить в известность , дбус , и IDLE — некоторые другие типы.
Если вы хотите сделать службу ориентированной на пользователя, то Пользователь Директиву также можно использовать с именем пользователя. Использование этой директивы сделает разрешения пользователя службы зависимыми.
В то время ЭксекСтарт Директива содержит полный путь к исполняемому файлу. В приведенном выше примере файл сценария myscript.sh хранится в /дома/Сэм/ каталог. Эта директива фактически управляет тем, что выполнять, когда служба вызывается systemd. Если полный путь команды не указан, он будет автоматически разрешен для исправления абсолютных путей, таких как /usr/локальный/бен , /usr/бин/, и /бин . Совершенно нормально использовать имя исполняемого файла, если он находится в стандартных командных каталогах, однако в противном случае укажите абсолютный путь. Обратите внимание, что также можно использовать несколько команд, разделенных точкой с запятой (;).
[Установить] раздел не является обязательным; однако он указывает, как служба включена. Разыскивается Директива принимает целевые файлы уровня выполнения в качестве параметров. Различные целевые файлы указывают на разные уровни запуска системы, например: выключение , спасать , многопользовательский , графический , и перезагрузить .
многопользовательский.target означает, что служба будет включена, когда система находится в состоянии, разрешающем многопользовательские неграфические сеансы.
3. Активация услуги
Чтобы активировать службу, сначала перезагрузите конфигурации systemd, используя системаctl полезность.
судо systemctl демон-перезагрузкаЗатем снова активируйте услугу, используя системаctl команда с давать возможность .
судо системаctl давать возможность мойсервис.сервисДля проверки проверьте статус службы с помощью Статус системы команда.
Служба успешно работает.
Теперь давайте прочитаем текстовый файл мойфайл.txt сервис, созданный в /дом каталог.
Как создать служебный файл Systemd для обычного пользователя
Процедура создания служебного файла для обычного пользователя аналогична методу создания служебного файла администратором. Однако каталог для сохранения служебного файла для обычных пользователей другой. Обычные пользователи должны размещать свои служебные файлы в папке ~/.config/systemd/пользователь . Этот каталог необходимо создать с помощью мкдир команда.
мкдир ~ / .config / системный / пользовательДля активации услуги обычным пользователем -пользователь команда вставляется с системаctl вместо судо .
системаctl --пользователь демон-перезагрузкасистемаctl --пользователь давать возможность ИМЯ-СЕРВИСА.service
системаctl --пользователь статус ИМЯ-СЕРВИСА.service
-пользователь Опция используется для управления служебными файлами systemd пользователя.
Как удалить служебный файл
Чтобы удалить служебный файл, сначала необходимо остановить службу.
судо systemctl остановить ИМЯ-СЕРВИСА.serviceПроверьте статус с помощью Статус системы команда, чтобы узнать, остановлена ли служба или нет. Затем удалите служебный файл с помощью РМ команда.
судо РМ / и т. д. / системный / система / ИМЯ-СЕРВИСА.serviceТеперь перезагрузите системный конфигурация.
судо systemctl демон-перезагрузкаЗаключение
Пользовательский сервис systemd полезен в различных сценариях. В этом руководстве мы узнали, как создать собственный служебный файл systemd для системного администратора и как обычные пользователи могут создать служебный файл. Кроме того, мы также видим процедуру удаления служебного файла.