CentOS 7 Service Cheat Sheet със systemd
Systemd е мениджър на системи и услуги за операционната система Linux. Той е проектиран да бъде обратно съвместим със скриптове за инициализиране на SysV и да предоставя полезни функции като паралелно стартиране на системни услуги по време на зареждане, активиране на демони при поискване, поддържане на моментни снимки на състоянието на системата и логика за управление на услуги, базирана на зависимост. На CentOS 7 systemd замества Upstart като инициализираната система по подразбиране.
В тази статия ще разгледаме процеса на управление на услуги в systemd за потребител на CentOS 7. Тези знания ще бъдат полезни в други дистрибуции, тъй като systemd се използва дълго време във Fedora и е планиран за Ubuntu 14.10 и Debian 8. Ще го оставим зад кулисите.
Докато четете тази статия, можете да опитате systemd на класически VPS и облачен VPS от Infobox. Стремим се своевременно да добавим поддръжка за модерни операционни системи, за да можете да използвате най-новите технологии, за да работите по-ефективно. Самата идея за писане на статия се роди след поредния въпрос на потребителите относно използването на услуги в CentOS 7.
Systemd носи концепцията за systemd единици. Единиците са представени от конфигурационни файлове, разположени в една от директориите:
- / usr/lib/systemd/system / - единици от инсталирани RPM пакети.
- / run/systemd/system / - единици, създадени по време на изпълнение. Тази директория има предимство пред директорията с инсталирани единици от пакети.
- / etc/systemd/system / - единици, създадени и управлявани от системния администратор. Тази директория има предимство пред директорията на единици, създадени по време на изпълнение.
Единиците съдържат информация за системни услуги, сокети за прослушване, запазени моментни снимки на системни състояния и други обекти, свързани с init системата.
Типове системни единици:
- .обслужване - системна услуга
- .цел - група системни единици
- .автоматиченt - точка за автоматично монтиране на файлова система
- .устройство - файл на устройството, разпознат от ядрото
- .монтиране точка на монтиране на файлова система -
- .път - файл или директория във файловата система
- .обхват - процес, създаден външно
- .филийка - група от йерархично организирани единици, които управляват системните процеси
- .моментална снимка запазено състояние на системния мениджър -
- .гнездо сокет междупроцесната комуникация -
- .размяна - Размяна на устройство или суап файл (суап файл)
- .таймер systemd таймер -
Основни характеристики на systemd в CentOS 7
- Активация, базирана на сокет. По време на зареждане systemd изслушва сокети за всички системни услуги, поддържа този тип активиране и прехвърля сокети към тези услуги веднага след стартирането на услугите. Това не само позволява на systemd да стартира услугите паралелно, но също така предоставя възможност за рестартиране на услуги, без да се губят съобщения, изпратени до него, докато услугите са били недостъпни. Съответният сокет остава на разположение и всички съобщения са на опашка.
- Активиране въз основа на D-Bus. Системните услуги, използващи D-Bus за междупроцесна комуникация, могат да бъдат стартирани при поискване, когато клиентско приложение се опита да комуникира с тях.
- Активиране въз основа на устройство. Системните услуги, които поддържат активиране въз основа на устройство, могат да бъдат стартирани, когато определен тип оборудване е свързано или предоставено на разположение.
- Активиране въз основа на пътя. Системните услуги могат да поддържат този тип активиране, ако състоянието на папка или директория се промени.
- Моментни снимки на състоянието на системата. Системата може да запази състоянието на всички единици и да възстанови предишното състояние на системата.
- Точка на монтиране и управление на автоматичен монтаж. Systemd следи и управлява точки за монтиране и автоматично монтиране.
- Агресивна паралелизация Systemd стартира системни услуги паралелно поради използването на сокет-базирана активация. В комбинация с услуги, които поддържат активиране при поискване, едновременното активиране значително намалява времето за зареждане на системата.
- Транзакционна логика за активиране на единици. Преди да активира и деактивира единици, systemd изчислява техните зависимости, създава временна транзакция и проверява целостта на тази транзакция. Ако транзакцията е непоследователна, systemd автоматично се опитва да я поправи и премахне ненужните задачи от нея, преди да генерира съобщение за грешка.
- Обратно съвместим с инициализация на SysV. SystemD напълно поддържа скриптове за инициализиране на SysV, както е описано в спецификацията на Linux Standard Base (LSB), което улеснява мигрирането към systemd.
Управление на услуги
Предишните версии на CentOS използваха SysV или Upstart. Скриптовете за инициализация се намират в директорията /etc/rc.d/init.d/. Такива скриптове обикновено се пишат на Bash и позволяват на администратора да управлява състоянието на услугите и демоните. В CentOS 7 скриптовете за начало са заменени със сервизни единици.
Разширението на файла не е задължително, когато използвате systemctl.
По-долу са основните команди systemctl:
- начално име на systemctl.service стартиране на услуга -.
- systemctl спирка име.сервиз - сервизна спирка
- systemctl рестартиране name.service - рестартиране на услугата
- systemctl опитайте да рестартирате name.service - рестартиране на услугата само ако тя работи
- systemctl reload name.service презареди конфигурацията на услугата -
- име на статус на systemctl.service - проверка дали услугата работи с подробно извеждане на състоянието на услугата
- systemctl is-active name.service - проверка дали услугата работи с прост отговор: активен или неактивен
- systemctl list-units --type service --all - показване на състоянието на всички услуги
- systemctl активира name.service - активира услугата (позволява ви да стартирате по време на стартиране на системата)
- systemctl деактивира name.service - деактивира услугата
- systemctl reenable name.service - деактивира услугата и незабавно я активира
- systemctl е - активирано name.service - проверява дали услугата е активирана
- systemctl list-unit-files --type услуга - показва всички услуги и проверява кои от тях са активирани
- име на системна маска.service - замества файла на услугата със символна връзка към/dev/null, правейки устройството недостъпно за systemd
- systemctl демаскирайте name.service - връща сервизен файл, правейки устройството достъпно за systemd
Работа с Systemd цели
Предишните версии на CentOS със SysV init или Upstart включват предварително зададен набор от нива на изпълнение, които представляват специфични режими за операции, номерирани от 0 до 6. В CentOS 7 концепцията за нивата на изпълнение е заменена от systemd цели.
Системни целеви файлове .цел са предназначени да групират други системни единици заедно чрез верига на зависимост. Например единица графичен.цел, използва се за стартиране на графична сесия, стартира системните услуги на GNOME Display Manager (gdm.service) и услуга за сметки (акаунти - daemon.service) и се активира многопотребителска цел. На свой ред многопотребителска цел стартира други системни услуги като Network Manager (NetworkManager.service) или D-Bus (dbus.service) и активира други целеви единици basic.target.
CentOS 7 има предварително определени цели, подобни на стандартния набор от нива на изпълнение. От съображения за съвместимост те също имат псевдоними за тези цели, които се показват директно в нивата на изпълнение на SysV.
- poweroff.target (runlevel0.target) - изключване и изключване на системата
- rescue.target (runlevel1.target) персонализирате черупката за възстановяване -
- multi–user.target (runlevel2.target, runlevel3.target, runlevel4.target) - създаване на неграфична система за много потребители
- graphical.target (runlevel5.target) - създаване на графична система за много потребители
- reboot.target (runlevel6.target) - изключване и рестартиране на системата
Командите runlevel и telinit все още са налични, но са оставени в системата поради причини за съвместимост. Препоръчително е да използвате systemctl за промяна или персонализиране на системните цели.
За да определите коя целева единица е по подразбиране, е полезна следната команда: systemctl get - по подразбиране.
За да промените целта по подразбиране, командата ще ви помогне systemctl set-default name.target.
За да промените текущата си цел: systemctl изолира име.цел. Командата ще стартира целевата единица и всички нейни зависимости и незабавно ще спре всички останали.
Изключване и рестартиране на системата
В CentOS 7 systemctl замества значителен брой команди за управление на захранването. Предишните команди са запазени за съвместимост, но се препоръчва да се използва systemctl:
спиране на systemctl - спира системата
powerctl мощност - изключва системата
рестартиране на systemctl - рестартира системата
Управление на systemd на отдалечена машина
Systemd ви позволява да управлявате отдалечена машина през SSH. За да управлявате, използвайте командата:
systemctl --host user_name @ host_name команда, където user_name е потребителското име, host_name е името на хоста, който се управлява дистанционно, а командата е systemd командата за изпълнение.
Типичен systemd .service
Този раздел ще ви помогне, ако трябва бързо да поддържате управление на услуги от systemd. Подробна информация за всички параметри на .service файла е в съответния раздел на системната документация.
Нека да разгледаме раздела [Мерна единица]. Той съдържа обща информация за услугата. Този раздел е достъпен не само в сервизни единици, но и в други единици (например при управление на устройства, точки за монтиране и т.н.). В нашия пример даваме описание на услугата и посочваме, че демонът трябва да бъде стартиран след Syslog.
В следващия раздел [Обслужване] директно съдържа информация за нашата услуга. Използван параметър ExecStart сочи към изпълнимия файл на нашата услуга. IN Тип ние уточняваме как услугата уведомява systemd да завърши стартирането.
Финален раздел [Инсталирай] съдържа информация за целта, за която услугата трябва да започне. В този случай казваме, че услугата трябва да бъде стартирана, когато целта е активирана. многопотребителска цел.
Това е минимален работещ системен файл за услуги. След като напишете своя, копирайте я в /etc/systemd/system/service_name.service за тестване. Изпълнете командите systemctl daemon-reload. Systemd научава за услугата и можете да я стартирате.
Допълнителна информация
Заключение
В тази статия научихме как да управляваме услугите на CentOS 7. Разбира се, това не е единствената функция на systemd и други аспекти от нея ще бъдат обсъдени в бъдеще. Самата операционна система се предлага на класически VPS и облачни VPS от Infobox почти от пускането. Опитайте systemd сега. Тези знания ще бъдат полезни във връзка с прехода на много дистрибуции към systemd.