Сервизните файлове имат .обслужване разширения и съдържат инструкциите, които се изискват от systemd за управление на услуга.
The systemd init системата управлява инициализацията на системата с помощта на Мерна единица . Единицата е обект, който изпълнява задача или действие, като например управление на услуга, което включва нейното контролиране и наблюдение. Тези единици по същество са файлове, наречени сервизни файлове, които включват зависимости и команди на единици. Тези файлове са от решаващо значение за ефективното контролиране на фоновите процеси и управлението на ресурсите.
В ръководството ще изследвам файла на услугата systemd, неговата структура и основните директиви, които контролират услугата.
Когато работите със systemd, условията системен служебен файл и системен файл на единица често се използват взаимозаменяемо, защото технически се отнасят за едно и също нещо.
Какво е Systemd сервизен файл
В Linux systemd управлява услугите, използвайки сервизните файлове, които съдържат инструкциите за конфигурация, така че systemd да може да разбере и изпълни.
За да изброите единиците, използвайте systemctl с –списъчни единици команда.
systemctl --списък-единици
За да прочетете служебния файл на която и да е услуга, използвайте котка команда с пътя на файла.
котка [ / път на сервизен файл ]Например, за да видите служебния файл на ssh.service използвайте дадената команда.
котка / либ / systemd / система / ssh.service
Анатомия на файла на услугата Systemd
Обикновено файловете на системните сервизни единици съдържат три раздела.
- Мерна единица
- Обслужване
- Инсталирай
Единичен файл за специфична услуга ще има специфичен раздел, наречен Обслужване раздел.
Имайте предвид, че услугата е само вид единица. Една единица може да има различни типове като сокет, устройство, монтиране, автоматично монтиране, суап, цел, таймер, срез и обхват. Тези секции се поставят между секциите Unit и Install. Разширението на файла също ще бъде заменено със съответния тип единица, например, тип единица за гнездо ще има a .гнездо разширение на файл.
Забележка: В това ръководство ще се съсредоточа върху типа сервизна единица поради широкото му използване от администратори и разработчици.
Тези раздели са затворени в квадратни скоби ([]). Всеки раздел съдържа подходящ набор от инструкции. По-долу е дадена обща структура на сервизен файл.
[ Мерна единица ]Директива1 =Инструкция 1
Директива 2 =Инструкция 2
[ Обслужване ]
Директива1 =Инструкция 1
Директива 2 =Инструкция 2
[ Инсталирай ]
Директива1 =Инструкция 1
Директива 2 =Инструкция 2
Редът на секциите може да се променя; въпреки това горепосоченият ред обикновено се следва.
Раздел [Единица].
Разделът за единица съдържа описание на единицата и зависимостите на единицата. Този раздел по конвенция се поставя в горната част на сервизния файл. Често използваните директиви са изброени по-долу:
Директива | Описание |
Описание | Тази директива се използва за споменаване на името на услугата. Дължината на описанието не трябва да надвишава 80 знака. |
Документация | Тази директива съдържа man страницата или URL адреса на услугата. |
Изисква | Тази директива се използва за споменаване на зависимостта от текущата услуга. Ако активирането на тази услуга за зависимост не бъде извършено, текущата услуга няма да бъде инициирана. |
Иска | Тази директива се използва за споменаване на зависимостта от текущата услуга. Въпреки това не е необходимо тази услуга за зависимост да бъде активирана, за да стартира текущата услуга. |
Преди | След като текущото устройство бъде активирано, услугата, спомената в тази директива, ще бъде стартирана. |
След | Преди текущото устройство да бъде активирано, услугата, спомената в тази директива, ще бъде стартирана. |
BindsTo | Тази директива свързва настоящата услуга със споменатата услуга. Ако свързаната услуга се рестартира, текущите услуги също ще се рестартират. |
Освен тези директиви има още две директиви; Състояние и Твърди. Много услуги изискват специфични системни условия за успешно изпълнение и тези директиви се използват за споменаване на условията.
Секция [Инсталиране].
Този раздел не е задължителен и е необходим само когато дадена услуга изисква активиране или деактивиране при зареждане. Освен това трябва да споменем услугата за псевдоним. Често използваните директиви за раздела за инсталиране са изброени по-долу:
Директива | Описание |
WantedBy | Тази директива определя нивото на изпълнение * цел на услугата. Ако целта е зададена на multi-user.target тогава услугата ще бъде активирана на това ниво на изпълнение. |
Изисква се от | Тази директива прилича на WantedBy, но дори и без зависимостта, спомената в директивата, услугата ще бъде активирана. |
Псевдоним | Тази директива се използва за активиране на услугата с друго име. Създава се символна връзка с това име, когато услугата е активирана. |
Най-вече, multi-user.target се използва като WantedBy параметър. Но какво е multi-user.target?
multi-user.target представлява състоянието на системата, готово да приеме неграфични сесии с множество потребители. Това е състоянието преди стартиране на GUI.
Има различни нива на изпълнение на системата, нека научим за функцията на тези нива на изпълнение.
В systemd услугите са групирани въз основа на нива на изпълнение, които се извикват цели . Всяко ниво на изпълнение има файл с .мишена разширение в /etc/systemd/system указател. Услугата ще се изпълнява въз основа на състоянието на нивото на изпълнение.
Ниво на бягане | Цели | състояние | файлове |
0 | изключване | Изключване и изключване | poweroff.target |
1 | спасяване | Стартира спасителната обвивка | спасяване.цел |
2,3,4 | мулти-потребител | Стартира многопотребителска обвивка без GUI | multi-user.target |
5 | графичен | Установява GUI обвивка за много потребители | графичен.цел |
6 | рестартирайте | Изключете и рестартирайте | рестартиране.target |
[Услуга] Раздел
Този раздел съдържа конфигурационните настройки за услугата. Основната конфигурация на този раздел е дефиниране на типа и командите, които да бъдат изпълнени при стартиране на услугата. Тип и ExecStart са основните директиви, използвани за настройка на услуга.
Различните видове услуги са изброени в следващата таблица.
Тип услуга | Описание |
просто | Това е типът по подразбиране, когато типът или името на шината не са споменати и се споменава само ExecStart. Systemd изпълнява първо главния процес и след това последващите модули. |
раздвояване | Този тип се използва, за да поддържа услугата работеща, дори ако родителската услуга е затворена. Той разклонява дъщерен процес след затварянето на родителския процес. |
един изстрел | Systemd първо изпълнява основния процес и когато главният процес излезе, ще стартират последващите модули. |
dbus | Услугата с dbus се използва за комуникация с друг процес в шината. Ако името на шината е споменато, процесът ще се активира, след като името на шината бъде получено. |
уведомявам | Услугата ще ви уведоми при стартиране на процеса. Systemd ще продължи към последващите звена след издаване на известието. |
празен | Той поддържа услугата, докато всички активни задачи бъдат изпратени; предимно полезно за подобряване на изхода на конзолата. |
Често използваните директиви в секцията за услуги са споменати по-долу:
Директива | Описание |
ExecStart | Той запазва пълния път на командата, която трябва да бъде изпълнена, за да започне процеса. |
ExecStartPre | Той съхранява командите, които трябва да бъдат изпълнени преди да започне основният процес. |
ExecStartPost | Той запазва командите, които трябва да бъдат изпълнени след началото на основния процес. |
ExecReload | Той запазва командата за презареждане на конфигурацията на услугата. |
Рестартирам | За автоматично рестартиране на услугата при обстоятелства като при повреда, при успех, при ненормално, при прекъсване и куче пазач. |
RestartSec | За да запазите броя секунди, след които услугата ще се рестартира автоматично. |
The ExecStart е една от най-важните директиви, използвани в раздела за услуги. Той съдържа пълен път на изпълнимия файл че услугата ще се изпълни при извикване.
Заключение
Сервизният файл на systemd е конфигурационен файл, който е структуриран с директиви и команди, така че да могат да се управляват от systemd. Тези файлове съдържат инструкции, показващи как дадена услуга се управлява от systemd. В това ръководство разгледах как да осъществя достъп до файл на услугата systemd, неговите секции и директиви, които управляват услугите. За да научите повече относно инструкциите за сервизния файл, моля, прочетете официалното ръководство за документация тук .