Опубліковано 19 липня19 лип Адміністратор Runlevel або "Рівні запуску"Думаю, назва говорить сама за себе: Рівень виконання (Runlevel) є рівнем запуску процесів при ініціалізації системи. Усього існує 7 стандартних рівнів, проте швидше за все ви використовуватимете лише 3: sysinit, boot, default.Чим відрізняються ці "runlevels"?sysinit - ініціалізує систему та базові компоненти. Наприклад: cgroups, devfs, sysfs, udev.boot - запускає всі процеси, необхідних роботи операційної системи чи інших процесів. Наприклад: bootmisc, hwclock, modules, swap, root.default – запускає вже "кастомні" процеси користувача. Наприклад: dbus, cupsd, elogind, ntpd та інші.У більшості випадків вам вистачить використання рівня "default", тому подивимося, як додати потрібний демон в автозавантаження:# rc-update add имясервиса defaultЩоб видалити сервіс, напишемо таке:# rc-update del имясервиса defaultУправління станом сервісуДля старту демона напишемо:# rc-service имясервиса startЩоб перезавантажити:# rc-service имясервиса restartДля завершення процесу використовуємо:# rc-service имясервиса stopЛістинг доступних сервісів та їх рівень запуску# rc-update show -vВаші власні "демони", або скрипти запуску команд під час стартуВсі послуги розміщуються в директорії /etc/init.d. Відповідно, перейдемо туди:cd /etc/init.dПрипустимо, ми хочемо завантажувати головну сторінку pingvinus.ru на наш комп'ютер локально до директорії /home/user/webpages. Для цього створимо файл (назва може бути будь-яким) і напишемо туди такий зміст:#!/sbin/openrc-run depend () { need networking after bootmisc } start() { wget -P /home/user/webpages pingvinus.ru }Поясню за змістом файлу. Функція depend відповідає за вимоги, які мають бути виконані перед запуском нашої команди. В даному випадку ми вимагаємо наявність виходу в Інтернет та запуску процесу після старту bootmisc (повна базова ініціалізація). Якщо вашому софту, наприклад, потрібен D-Bus для роботи, обов'язково вкажіть його після after, а інакше процес може не запуститися або працювати некоректно.Після всіх змін ми зберігаємо файл і даємо йому дозвіл на запуск за допомогою наступної команди:# chmod +x pingvinusДалі додамо його до автозавантаження:# rc-update add pingvinus defaultБраво! Ми написали найпростіший сервіс OpenRC!Відстеження стану сервісівСтан усіх сервісів:# rc-status --servicelistСтан одного конкретного демона:# rc-service имясервиса statusСвої рівні запуску та як це може допомогтиЗмоделюємо ситуацію: ви хочете проксирувати ваш трафік до якоїсь країни N. І ви хочете, щоб це було на найнижчому рівні. Для цього ви можете створити новий рівень запуску та створити там кастомні скрипти для проксіювання. Такий підхід виключає можливість конфлікту сервісів і робить управління цією системою зручнішим і логічним.Для того щоб створити новий runlevel напишемо наступне:# install -d /etc/runlevels/названиеДалі просто додайте потрібні послуги через rc-update та насолоджуйтесь життям.Контроль над сервісами, що впалиЗа промовчанням OpenRC намагатиметься запустити їх знову, однак у деяких випадках це може призвести до ще більш небажаних наслідків.Тому ви можете налаштувати правило поведінки при збої сервісу /etc/rc.conf:.... rc_crashed_stop=YES/NO # зупиняти або НЕ зупиняти сервіс, що впав rc_crashed_start=YES/NO # запускати або НЕ запускати зламаний процес
Для публікації повідомлень створіть обліковий запис або авторизуйтесь