Управління службами linux
В операційній системі linux, так само як і в Windows, крім звичайних програм, які можуть взаємодіяти з користувачем є ще один вид програм. Це що працюють у фоновому режимі служби. Важливість служб важко переоцінити, вони стежать за станом системи, забезпечують автоматичне підключення зовнішніх пристроїв і мережі, дозволяють процесам взаємодіяти з обладнанням (dbus), а також у вигляді служб реалізовані різні веб-сервери і сервери баз даних. На відміну від призначених для користувача програм, служби виконуються у фоновому режимі, і користувач не має до них прямого доступу. Користувач ще не увійшов в систему, тільки почалося завантаження а основні служби вже запущені і працюють.
Відео: LPIC 110.2 частина друга. Управління мережевими демонами
У цій статті ми розглянемо управління службами Linux. Ми не будемо чіпати вже застарілі системи, такі як SysVinit, зосередимося тільки на Systemd. Ви дізнаєтеся, як подивитися запущені служби linux, а також зупиняти і запускати їх самому.
трохи теорії
Щоб всім цим керувати потрібна основна служба - система ініціалізації, яка буде запускати служби linux в потрібний момент, стежити щоб вони нормально працювали, записувати повідомлення логів, і найголовніше дозволяти зупиняти служби. Раніше, для управління службами використовувалися скрипти. Я вже говорив, що можна запустити службу з терміналу, так ось, кожна служба запускалася у фоновому режимі одна за одною, без можливості паралельного запуску і повертала свій PID процесу скрипту ініціалізації, він зберігався і потім за допомогою цього PID можна було перевірити чи працює служба і зупинити службу linux якщо це потрібно. Все це можна зробити і вручну.
Але потім на зміну цьому методу прийшла нова модель і система ініціалізації systemd. Система ініціалізації запускається відразу після завантаження ядра і починає форматувати служби, тепер з`явилася можливість паралельної ініціалізації, а також залежностей між службами. Таким чином, тепер можна визначити складне дерево порядку запуску служб. Але ми не будемо вникати в подробиці створення служб, нас цікавить тільки сам процес запуску. Після запуску systemd збирає весь висновок служби в лог, і стежить за її роботою, якщо служба аварійно завершилася, то автоматично її перезапускає.
Служба в Systemd описується файлом юніта, в ньому описано що з нею потрібно робити і як себе вести. Існують такі типи служб:
- service - звичайна служба, програма
- target - група служб
- automount - точка автоматичного монтування
- device - файл пристрою, генерується на етапі завантаження
- mount - точка монтування
- path - файл або папка
- scope - процес
- slice - група системних служб systemd
- snapshot - збережений стан запущених служб
- socket - сокет для взаємодії між процесами.
Нас будуть цікавити тільки service, і зовсім небагато target, але ми розглянули всі інші, щоб ви змогли поглянути на картину трохи ширше. Основи розглянули, тепер буде настройка служб LInux.
Відео: Управління ІТ-службою компанії і організація роботи Service Desk
утиліта systemctl
У Systemd є спеціальний інструмент для управління службами в Linux - systemctl. Ця утиліта дозволяє робити дуже багато речей, починаючи від перезапуску служби linux і перевірки її стану, до аналізу ефективності завантаження служби. Синтаксис у утиліти такої:
Відео: Написання демона, частина перша. Створення скрипта для демонізації
$ systemctl опції команда служба служба ...
Опції налаштовують поведінка програми, подробиця виведення, команда - вказує що потрібно зробити зі службою, а служба, це та сама служба, якій ми збираємося керувати. У деяких випадках утиліта може використовуватися без вказівки команди і служби.
Розглянемо все по порядку. Опції дуже сильно залежать від команд, тому розглянемо їх пізніше, а поки пройдемося по командах:
- list-units - подивитися всі служби (юніти), аналог опції -t
- list-sockets - подивитися всі служби сокетов
- start - запустити службу linux
- stop - зупинити службу linux
- reload - оновити конфігурацію служби з файлу юніта
- restart - перезапустити службу
- try-restart - перезапустити службу, тільки якщо вона запущена
- reload-or-restart - оновити конфігурацію потім виконати перезапуск служби linux, якщо не підтримується - тільки перезапустити
- isolate - запустити тільки одну службу разом з її залежностями, всі інші зупинити
- kill - відправити сигнал завершення процесу використовується разом з опціями --signal і --kill-who
- is-active - перевірити чи запущена служба linux
- is-failed - перевірити не завершилася служба з помилкою
- status - подивитися стан і висновок служби
- show - подивитися параметри управління службою в Linux
- reset-failed - перезапустити служби linux, що завершилися з помилкою
- list-dependencies - подивитися залежності служби linux
- list-unit-files - вивести всі встановлені файли служб
- enable - позначити послугу як автозагрузку
- disable - видалити службу з автозавантаження
- is-enabled - перевірити чи є вже служба в автозавантаженні
- reenable - спочатку виконати disable потім enable для служби
- list-jobs - всі запущені служби linux незалежно від типу
- snapsot - зберегти стан служб, щоб потім відновити
- daemon-reload - оновити конфігурацію всіх служб
- mask - зробити юніт недоступним
- unmask - повернути файл служби linux
А тепер основні опції:
- -t, --type - тип служб для виведення
- -a, --all - показати всі відомі служби, навіть не запущені
- -q - мінімальний висновок
- --version - версія програми
- --no-pager - не використовувати посторінкову навігацію
- --no-legend - не виводити докладний опис
- -f - примусове виконання команди
- --runtime - Ніколи не зберігати внесені зміни після перезавантаження
- -n - кількість рядків виводу балки для команди status
- --plain - використовувати звичайний текстовий режим замість дерев
- --kill-who - задати процес, якому потрібно відправити сигнал
- --signal - сигнал, який потрібно відправити.
- --state - відфільтрувати список служб станом.
Як бачите, опції будуть мало корисні і краще звернути більше уваги на команди, за допомогою них виконуються всі дії.
Управління службами Linux
Тепер, коли ви вже знаєте все основи, команди і параметри можна переходити до справи. З усіма іншими тонкощами розберемося по шляху. Спочатку давайте подивимося запущені служби linux. Нас будуть цікавити тільки програми, а не всі ці додаткові компоненти, тому скористаємося опцією type:
$ Systemctl list-units --type service -allДальше більше. Ви можете відсортувати список служб systemctl станом. Наприклад, тільки виконуються:
$ Systemctl list-units --type service --state failedДля фільтрації можна брати будь-який показник стану з будь-якої колонки. Інший командою ми можемо подивитися всі файли конфігурації служб на диску. Тут не будемо фільтрувати по типу, нехай програма покаже всі:
$ Systemctl list-unit-files --type serviceТут ви можете використовувати фільтри станом. Тепер ви знаєте як подивитися запущені служби linux, йдемо далі.
Щоб запустити службу використовується команда start, наприклад:
$ Sudo systemctl stop applicationПодивитися стан служби дозволяє команда status:
$ Systemctl list-unit-files --state enabledВсі служби, що запускаються за замовчуванням. Можете також подивитися служби static. Щоб додати службу в автозавантаження linux використовуйте команду enable:
$ Sudo systemctl disable applciationТакож, ви можете подивитися чи дозволено зараз автозагрзука для служби:
- Sclist - відобразити відомості про системні службах windows 2000.
- Звільняємо windows 10 від зайвих служб
- 10 Фактів, які потрібно знати про механізм посилення служб системи windows vista
- Служби в windows xp. Відключаємо невикористовувані служби
- Служби windows 7. Відключаємо невикористовувані служби
- Служби в windows xp. Відключаємо невикористовувані служби
- Як підвищити захищеність комп`ютера, відключивши 10 служб windows xp
- Продуктивність ігор linux vs wine vs windows
- Мтчелл м. - програмування для linux. Професійний підхід
- Редагуємо автозагрузку в windows 7
- Служби windows. Які служби можна відключити для прискорення роботи системи?
- Служби windows vista. Опис і настройка
- Що таке dbus
- 5 Міфів про контейнерах linux
- Команда sc - управління службами.
- Налаштування selinux
- Системи ініціалізації linux
- Групи користувачів linux
- Адміністрування linux
- Автозавантаження в linux mint 17
- Контейнери linux - установка і настройка lxc