Перейти до змісту
View in the app

A better way to browse. Learn more.

Файна Україна

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Основи OpenRC команди та рівні запуску

Рекомендовані відповіді

Опубліковано
  • Адміністратор

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 # запускати або НЕ запускати зламаний процес

Для публікації повідомлень створіть обліковий запис або авторизуйтесь

Акаунт

Навігація

Пошук

Пошук

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.