Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 10964|Отговор: 8

[linux] Linux systemd мениджър на услуги обяснен подробно

[Копирай линк]
Публикувано в 28.11.2021 г. 10:02:32 ч. | | | |
systemd е набор от основни градивни елементи за Linux системи. Той предоставя мениджър на система и услуги, който изпълнява и стартира останалата част от системата като PID 1.

systemd предоставя агресивни възможности за паралелизация, използва сокети и активация на D-Bus за стартиране на услуги, осигурява стартиране на демони при поискване, използва Linux контролни групи за проследяване на процеси, поддържа монтажи и точки за автоматично монтиране и имплементира добре проектирана логика за контрол на услуги, базирана на зависимост от транзакции. systemd поддържа SysV и LSB init скриптове и може да замени sysvinit.

Други секции включват лог демони, помощни програми за контрол на основни системни конфигурации като имена на хостове, дати, локации, поддържане на списък с влезли потребители и изпълнение на контейнери и виртуални машини, системни акаунти, директории по време на изпълнение и настройки, както и управление на конфигурации на демони за прости мрежи, синхронизация на времето в мрежата, препращане на логове и разрешаване на имена.

Конфигурационният файл systemd съществува в следните три папки:         

/etc/systemd/system 存放系统启动的默认级别及启动的unit的软连接,优先级最高。

/run/systemd/system 系统执行过程中产生的服务脚本,优先级次之。

/usr/lib/systemd/system 存放系统上所有的启动文件,优先级最低。
Преглед:

Linux разглежда лог изхода на услугата Systemd
https://www.itsvse.com/thread-10154-1-1.html

Jenkins (4) Добавете Linux възел и го регистрирате като услуга
https://www.itsvse.com/thread-10120-1-1.html

CentOS 7 инсталира експортера на Node
https://www.itsvse.com/thread-9969-1-1.html

Профил на единицата

Единичен файл в systemd е файл, който кодира информация за различните единици, които systemd може да управлява, включително услуги, сокети, устройства и др. Това ръководство се фокусира върху услугите, в който случай unit файлът, с който работим, е .service файл. Конфигурационният файл на устройството varnish.service съдържа информация за това как systemd трябва да изпълнява, наблюдава и управлява varnish демона.

Блокът [Единица] обикновено е първият блок на конфигурационния файл и се използва за дефиниране на метаданните на Единицата и как тя се отнася към другите Единици. Основните му области са следните.

  • Описание: Кратко описание
  • Документация: Адресът на документа
  • Изисква: Други единици, от които зависи текущото устройство, и ако не работят, текущото устройство няма да стартира
  • Желания: Други единици, които работят с текущата единица, ако не работят, текущата единица няма да се откаже да стартира
  • BindsTo: Подобно на Requires, той определя единица, която кара текущото устройство да спре да работи, ако излезе
  • Преди: Ако Единицата, посочена в това поле, също трябва да бъде стартирана, тя трябва да бъде стартирана след текущата Единица
  • След: Ако Единицата, посочена в това поле, също трябва да бъде стартирана, тя трябва да бъде стартирана преди текущата Единица
  • Конфликти: Посочената тук единица не може да работи едновременно с текущата единица
  • Условие... : Условията, които трябва да бъдат изпълнени, за да работи текущото устройство, иначе няма да работи
  • Отстоявам... : Условията, които трябва да бъдат изпълнени, за да работи текущото устройство, в противен случай ще бъде докладвана повредата при стартиране

[Инсталация] обикновено е последният блок от конфигурационния файл, който определя как да се стартира и дали да се стартира. Основните му области са следните.

  • WantedBy: Стойността ѝ е една или повече Targets, а когато текущата единица е активна (enable), символичната връзка се поставя в поддиректория под директорията /etc/systemd/system с суфикса Target name + .wants
  • RequiredBy: Стойността му е една или повече Цели, а когато текущата единица е активна, символичната връзка се поставя в поддиректория под директорията /etc/systemd/system с суфикс Target name + .required.
  • Псевдоним: Псевдонимът, който текущата единица може да използва, за да започне
  • Също така: Когато текущото устройство се активира, други единици ще бъдат активирани едновременно

Блокът [Service] се използва за конфигуриране на Service, като само единиците от типа Service имат този блок. Основните му области са следните.

  • Тип: Определя поведението на процеса при стартиране. Той има следните стойности.
  • Type=simple: Стойността по подразбиране, изпълнете командата, зададена от ExecStart, за стартиране на основния процес
  • type=forking: Fork създава дъщерен процес от родителския процес, който ще излезе веднага след създаването
  • Type=oneshot: Еднократен процес, Systemd ще изчака текущата услуга да излезе, преди да продължи изпълнението
  • Type=dbus: Настоящата услуга започва чрез D-Bus
  • type=notify: Когато текущата услуга бъде стартирана, Systemd ще бъде уведомен и ще продължи изпълнението
  • type=idle: Текущата услуга ще се изпълнява само ако се изпълняват други задачи
  • ExecStart: Командата за стартиране на текущата услуга
  • ExecStartPre: Командата, изпълнена преди стартиране на текущата услуга
  • ExecStartPost: Командата, изпълнена след стартиране на текущата услуга
  • ExecReload: Командата, която се изпълнява при рестартиране на текущата услуга
  • ExecStop: Командата, която се изпълнява, когато текущата услуга бъде спряна
  • ExecStopPost: Спрете командата, която се изпълнява, когато е изпълнена
  • RestartSec: Броят секунди между автоматичното рестартиране на текущата услуга
  • Restart: Определя обстоятелствата, при които Systemd автоматично ще рестартира текущата услуга, с възможни стойности като винаги, при успех, при отказ, на ненормално, при прекъсване, на наблюдение
  • TimeoutSec: Определя броя секунди, през които Systemd чака преди да прекрати текущата услуга
  • Среда: Задайте променливата на околната среда

Инструмент за управление Systemctl

Управлението на програми в CentOS се извършва основно от инструмента systemctl.

Услуга за стартиране:

systemctl start name.service

Прекратете услугата:

systemctl stop name.service

Услуга за рестартиране:

systemctl restart name.service

Статус на гледане:

systemctl статус name.service

Условно рестартиране:

Ако услугата е била стартирана по-рано, тя ще бъде рестартирана, а ако не е стартирана, няма да се оперира

systemctl try-restart name.service

Презареди или рестартирай:

Първо презаредете и ако презареждането не е успешно, рестартирайте

systemctl reload-or-restart name.service

Презареждане или условен рестарт:

systemctl reload-or-try-restart name.service

Задава дали услугата може да бъде зададена от потребителя, за да стартира състоянието

systemctl демаскиране на име.service

Systemctl mask name.service е забранена

Вижте текущия статус на активиране на услугата:

Стойността за връщане на статуса на командата "service is started" е 0. Стойността за връщане на статуса на командата, която не е стартирана, е не-0.

systemctl is-active name.service

Вижте всички активирани услуги:

-t Определя типа показвана единица.

--всички показват по-подробен списък с информация.

-еквивалент --всички

Systemctl списъчни единици

SystemCTL списък-единици -T услуга

systemctl списък-единици -t обслужване -a

Вижте всички услуги:

systemctl списък-единици -a

Вижте всички статуси на услуги:

systemctl list-unit-files

-a 、--всички : Вижте статуса на всички услуги

-t 、--type: Определя типа единица, която трябва да се разглежда

loaded: Конфигурационният файл е зареден, зареден в паметта

активни(текущи): Изпълнения, които се обработват непрекъснато един или повече пъти

активен(exited): Еднократната конфигурация е успешно завършена

активен (чакащ): Бягане, чакане на събитие

inactive:不运行

enabled:开机启动

disabled:开机不启动

static:开机不启动,但可被另一个启用的服务激活

Използва се за изброяване на нива на работа услугата да бъде активирана и деактивирана

Дали /etc/systemd/system/*.wants/sshd.service

systemctl list-unit-files --тип target --all

За да настроя услугата да не стартира:

systemctl Деактивира Service Name Unit

Проверете дали услугата е стартирана и стартирана:

systemctl is-enabled name.service

Разгледайте зависимостите на услугите:

systemctl list-dependencies name.service
systemctl list-depebdencies

Обслужване на тежки товари:

systemctl daemon-reload

Прекратете процеса:

Име на процеса за убиване на systemctl

Ресурси:

Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.





Предишен:Linux тества LDAP свързаност с командата Curl
Следващ:Проблем с VSFTP разрешението за качване на файл
 Хазяин| Публикувано в 11.12.2021 г. 17:35:26 ч. |
[Единица]Блокът обикновено е първият блок в конфигурационен файл, който дефинира метаданните на единица и как тя се отнася към други единици. Основните му области са следните.

Описание: Кратко описание
Документация: Адресът на документа
Изисква: Други единици, от които зависи текущото устройство, и ако не работят, текущото устройство няма да стартира
Желания: Други единици, които работят с текущата единица, ако не работят, текущата единица няма да се откаже да стартира
BindsTo: Подобно на Requires, той определя единица, която кара текущото устройство да спре да работи, ако излезе
Преди: Ако Единицата, посочена в това поле, също трябва да бъде стартирана, тя трябва да бъде стартирана след текущата Единица
След: Ако Единицата, посочена в това поле, също трябва да бъде стартирана, тя трябва да бъде стартирана преди текущата Единица
Конфликти: Посочената тук единица не може да работи едновременно с текущата единица
Условие... : Условията, които трябва да бъдат изпълнени, за да работи текущото устройство, иначе няма да работи
Отстоявам... : Условията, които трябва да бъдат изпълнени, за да работи текущото устройство, в противен случай ще бъде докладвана повредата при стартиране
[Инсталиране]Обикновено последният блок от конфигурационния файл определя как да се стартира и дали да се стартира. Основните му области са следните.

WantedBy: Стойността ѝ е една или повече Targets, а когато текущата единица е активна (enable), символичната връзка се поставя в поддиректория под директорията /etc/systemd/system с суфикса Target name + .wants
RequiredBy: Стойността му е една или повече Цели, а когато текущата единица е активна, символичната връзка се поставя в поддиректория под директорията /etc/systemd/system с суфикс Target name + .required.
Псевдоним: Псевдонимът, който текущата единица може да използва, за да започне
Също така: Когато текущото устройство се активира, други единици ще бъдат активирани едновременно
[Обслужване]Блоковете се използват за конфигуриране на услуги, като само единиците от тип Service имат този блок. Основните му области са следните.

Тип: Определя поведението на процеса при стартиране. Той има следните стойности.
Type=simple: Стойността по подразбиране, изпълнете командата, зададена от ExecStart, за стартиране на основния процес
type=forking: Fork създава дъщерен процес от родителския процес, който ще излезе веднага след създаването
Type=oneshot: Еднократен процес, Systemd ще изчака текущата услуга да излезе, преди да продължи изпълнението
Type=dbus: Настоящата услуга започва чрез D-Bus
type=notify: Когато текущата услуга бъде стартирана, Systemd ще бъде уведомен и ще продължи изпълнението
type=idle: Текущата услуга ще се изпълнява само ако се изпълняват други задачи
ExecStart: Командата за стартиране на текущата услуга
ExecStartPre: Командата, изпълнена преди стартиране на текущата услуга
ExecStartPost: Командата, изпълнена след стартиране на текущата услуга
ExecReload: Командата, която се изпълнява при рестартиране на текущата услуга
ExecStop: Командата, която се изпълнява, когато текущата услуга бъде спряна
ExecStopPost: Спрете командата, която се изпълнява, когато е изпълнена
RestartSec: Броят секунди между автоматичното рестартиране на текущата услуга
Restart: Определя обстоятелствата, при които Systemd автоматично ще рестартира текущата услуга, с възможни стойности като винаги, при успех, при отказ, на ненормално, при прекъсване, на наблюдение
TimeoutSec: Определя броя секунди, през които Systemd чака преди да прекрати текущата услуга
Среда: Задайте променливата на околната среда


 Хазяин| Публикувано в 11.12.2021 г. 17:37:33 ч. |
Тип=разклонение
Systemd смята, че услугата стартира успешно, когато процесът на услугата се разклони и родителският процес излезе. За обикновените демони, освен ако не сте сигурни, че този метод за стартиране не отговаря на вашите нужди, можете да започнете с този тип. При този тип стартиране трябва да се задава и PIDFile=, за да може systemd да проследява основния процес на услугата

 Хазяин| Публикувано в 15.12.2021 г. 16:55:14 ч. |
Командата EnvironmentFile

EnvironmentFile е подобен на директивата Environment, но чете променливи на околната среда от текстов файл. Текстовият файл трябва да съдържа разпределения на променливи, разделени с прекъсвания на редове

пример

Можете да вземете този файл с околната среда и да използвате неговите променливи по следния начин:



 Хазяин| Публикувано в 4.01.2022 г. 15:56:55 ч. |
Параметри на командите:https://www.commandlinux.com/man-page/man1/systemctl.1.html
 Хазяин| Публикувано в 5.01.2022 г. 9:48:21 ч. |
Стандартният път на docker Service file /usr/lib/systemd/system/docker.service

 Хазяин| Публикувано в 23.01.2022 г. 22:57:56 ч. |
Вижте всички статуси на услуги



Запитайте дали дадена услуга е включена, използвайки NFS като пример:

 Хазяин| Публикувано в 25.02.2025 г. 17:01:08 ч. |
Масови стартови услуги, които започват с ABC

 Хазяин| Публикувано в 11.04.2025 г. 15:57:14 ч. |
DefaultTimeoutStartSec= и DefaultTimeoutStopSec= по подразбиране са 90 секунди в System Manager и 90 секунди в User Manager.

Входът към хиперлинк е видим.

Вижте конфигурацията на посочената услуга със следната команда:


Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com