Работа с CageFS през команден ред (CLI)
CageFS е защитена среда, която дава на всеки хостинг потребител свое “затворено пространство”, без да може да вижда или достъпва файловете на други потребители на сървъра. Това е особено важно при споделен хостинг.
За да работиш с CageFS през терминал, се използва командата:
/usr/sbin/cagefsctl [опции]
🧰 Основни команди за управление на CageFS
| Опция | Какво прави |
| –init или -i | Инициализира CageFS (ако още не е създаден) |
| –reinit или -r | Преинициализира CageFS – прави резервно копие и го създава наново |
| –update или -u | Обновява CageFS – добавя нови/редактирани файлове, премахва ненужни |
| –force или -f | Принудително обновява – без резервно копие |
| –dont-clean | Не трие файлове при обновяване (ползва се с –update) |
| –hardlink | Използва “твърди връзки”, ако е възможно – пести място |
| –sanity-check | Проверява за потенциални проблеми с CageFS |
| –remove-all | Изключва CageFS и изтрива всички негови данни от сървъра |
| –enter -e | Влиза в CageFS среда на потребител като root – полезно за диагностика |
| –addrpm / –delrpm | Добавя или премахва RPM пакети от CageFS (изисква –update) |
👤 Управление на потребители в CageFS
За да активираш или изключиш CageFS за конкретни потребители:
/usr/sbin/cagefsctl [опции] username
| Опция | Какво прави |
| –enable | Включва CageFS за този потребител |
| –disable | Изключва CageFS за този потребител |
| –enable-all | Включва за всички, с изключение на тези в users.disabled |
| –disable-all | Изключва за всички, освен тези в users.enabled |
| –list | Показва кои потребители са влезли в CageFS |
| –user-status | Проверява дали потребителят има активиран CageFS |
| –remount / –unmount | Повторно монтира или отмонтира CageFS за конкретни потребители |
| –remount-all | Повторно монтира за всички |
| –unmount-all | Отмонтира за всички потребители |
🐘 PHP Selector – работа с различни PHP версии
Ако използваш PHP Selector (например за да позволиш на потребителите да избират PHP 7.4, 8.0 и т.н.):
| Опция | Какво прави |
| –setup-cl-selector | Настройва PHP Selector и регистрира наличните PHP версии |
| –remove-cls-selector | Премахва регистрираните PHP версии и връща всички към системната версия |
| –rebuild-alt-php-ini | Преизгражда конфигурационния файл alt_php.ini |
| –validate-alt-php-ini | Същото като горното, но и проверява за грешки |
| –cl-selector-reset-versions | Връща потребителите към стандартната PHP версия |
| –cl-selector-reset-modules | Връща PHP разширенията към стандартните стойности |
| –apply-global-php-ini | Прилага глобални настройки като error_log, date.timezone и др. |
🔗 Монтиране на виртуални точки (mount points)
| Опция | Какво прави |
| –create-virt-mp | Създава виртуална точка за даден потребител |
| –create-virt-mp-all | Създава такива точки за всички потребители |
| –remount-virtmp | Създава и монтира отново тези точки |
🧠 Примерни сценарии
🔧 Да обновиш всички потребители след като си добавил нов пакет:
cagefsctl –update
🔍 Да провериш дали потребител има активиран CageFS:
cagefsctl –user-status username
📦 Да влезеш в CageFS средата на потребител (като root):
cagefsctl –enter username
🚪 Да включиш CageFS за всички потребители:
cagefsctl –enable-all
Допълнителни общи опции за CageFS
| Опция | Какво прави |
| –disable-cagefs | Изключва напълно CageFS |
| –cagefs-status | Показва дали CageFS е активен или не |
| –set-min-uid | Задава минимален UID (потребителски ID), който може да използва CageFS |
| –get-min-uid | Показва текущия минимален UID |
| –print-suids | Извежда списък с програми в CageFS с повишени права (SUID/SGID) |
| –do-not-ask | Автоматично отговаря “да” при въпроси – използва се най-отпред в командата |
| –clean-var-cagefs | Почиства директорията /var/cagefs от вече несъществуващи потребители |
| –set-tmpwatch | Настройва как и кога да се чистят временни файлове в CageFS |
| –tmpwatch | Стартира ръчно почистването на временни файлове |
| –toggle-plugin | Активира/деактивира CageFS плъгина |
| –verbose | Показва повече информация при изпълнение на командите |
| –wait-lock | Изчаква да приключат други cagefsctl процеси, преди да започне |
| –help | Показва помощта с всички опции |
🔄 Изпълнение на команда вътре в CageFS (като потребител)
Ако искаш да стартираш команда “вътре” в CageFS, можеш да използваш:
✔️ Ако потребителят има активиран shell:
su – username -c “команда”
❌ Ако потребителят няма shell:
Използвай:
/sbin/cagefs_enter_user username команда
Допълнителни опции:
- –root – изпълнява като root (⚠️ Опасно – използвай само с доверени команди)
- –no-fork – не създава допълнителен процес (замества процеса директно)
- –no-cpu-limit – премахва CPU ограниченията (изисква kmod-lve >= 2.0.36)
- –no-io-and-memory-limit – премахва лимитите за дисков достъп и памет
⚙️ По подразбиране cagefs_enter се стартира чрез proxyexec, за да може потребителите да получават системни известия. Можеш да го изключиш глобално с:
echo “cagefs_enter_proxied=0” >> /etc/sysconfig/cloudlinux
🧪 Проверка на конфигурацията – –sanity-check
Ако нещо с CageFS не работи както трябва, можеш да стартираш автоматична проверка:
cagefsctl –sanity-check
Проверката минава през 7 основни точки:
- Монтирани точки – дали директориите от cagefs.mp реално съществуват
- users.enabled е директория – проверява дали /etc/cagefs/users.enabled не е грешно създаден файл
- users.disabled е директория – същото, но за /etc/cagefs/users.disabled
- disable.etcfs съществува – проверява ключов файл в конфигурацията
- Двама потребители могат да влязат в CageFS – тества се логване с whoami
- Файловете с proxy команди са валидни – проверява се синтаксисът им
- Пер-потребителски точки за монтиране са правилни – чете се съдържанието на virt.mp файловете
📌 Допълнителна проверка:
- Проверява дали по подразбиране се използва подходяща PHP версия, за да работи PHP Selector. Ако Alt-PHP е зададен като системен PHP – това е проблем.
🔚 Резултатите от проверката може да бъдат:
- OK – всичко е наред
- FAILED – открит е проблем
- SKIPPED – проверката не важи за текущата конфигурация (напр. без control panel)
- INTERNAL_TEST_ERROR – грешка в самия инструмент (трябва да се докладва)
Ако дори една проверка не е “OK” или “SKIPPED”, ще видиш грешка и командата ще завърши с код различен от 0.
Какво прави lveinfo?
Инструментът lveinfo показва историческа статистика за използване на ресурси от потребители (LVE) на сървъра – като CPU, RAM, брой процеси, IO и т.н. Това е особено полезно, ако искаш да разбереш:
- кой потребител натоварва сървъра;
- какви грешки (фолтове) е имал;
- какво е средното му използване за даден период.
🔧 Основна употреба
lveinfo [опции]
Примери:
lveinfo -u user123 –period 1d
→ Показва статистика за потребител user123 за последните 24 часа.
lveinfo –by-fault cpu mem –threshold 5
→ Показва потребители, които са имали над 5 фолта от CPU или памет.
🧰 Най-полезни опции (обяснение на разбираем език)
| Опция | Какво прави |
| -u user | Филтрира по потребителско име |
| –id ID | Филтрира по LVE ID (вместо име) |
| -f 2025-04-01 | Начална дата за справка |
| -t 2025-04-07 | Крайна дата |
| –period 3d | Алтернатива на -f и -t: последните 3 дни |
| –by-fault cpu mem | Показва само потребители с фолтове от CPU или памет |
| -r 10 | Минимум 10 фолта за да се покаже в резултатите |
| –csv output.csv | Записва резултата във файл |
| –json | Покажи резултатите във формат JSON |
| –show-columns all | Показва всички налични колони |
| –limit 0 | Показва всички резултати без ограничение |
| -o cpu_avg | Сортира по средно използване на CPU |
📈 Какво точно показва lveinfo?
Примерни стойности:
| Колона | Какво показва |
| aCPU | Средно използване на CPU |
| lCPU | Лимит на CPU |
| CPUf | Брой фолтове (надвишаване на CPU лимита) |
| aPMem | Средна физическа памет |
| PMemF | Брой фолтове при физическа памет |
| aIO | Средно използване на дискова операция |
| IOf | Брой IO фолтове |
| aEP | Среден брой “Entry Processes” (входни връзки) |
| EPf | Брой фолтове при EP |
🔍 Филтриране по натоварване
Можеш да покажеш само потребители, които използват 90% или повече от лимита:
lveinfo –by-usage cpu pmem –percentage 90
🛠 Допълнителни полезни опции
- –display-username – Показва потребителското име вместо ID
- –time-unit 1h – Сгрупира резултатите на всеки 1 час
- –compat v2 – Използва нов стил на изхода (по-прегледен)
📋 Примерна команда за отчет на CPU фолтове през последните 7 дни
lveinfo –by-fault cpu –threshold 3 –period 7d –show-columns ID aCPU lCPU CPUf
➤ Това ще ти даде списък с потребители, които:
- са имали поне 3 фолта по CPU,
- показва колко CPU са използвали и какъв им е лимитът.
lvechart – графика на ресурсното използване на потребител
Какво прави:
Създава визуална графика, показваща използването на ресурси (CPU, RAM и др.) от конкретен потребител.
Примерна команда:
lvechart –user=username –period=1d –output=graph.png –format=png
Полезни опции:
- –from, –to – задава начален и краен час на отчет
- –period=2h – показва натоварването за последните 2 часа
- –user= – задава потребител
- –output= – записва графиката във файл
- –format=png/svg – избира формат на графиката
- –style=user/admin – дали графиката е за клиент или за админ
🐬 dbgovchart – графика на използването на MySQL
Какво прави:
Създава графика с натоварването на базата данни (MySQL) за даден потребител.
Примерна команда:
dbgovchart –user=mysqluser –period=1d –format=svg –output=mysql-usage.svg
Важно: Работи само за MySQL потребители, не за cPanel username.
🕵️♂️ lve-read-snapshot – преглед на моментни снимки на системата
Какво прави:
Показва моментни снимки (snapshots) на системното състояние за потребител или LVE ID – идеално при анализ на временни натоварвания.
Пример:
lve-read-snapshot -u username –period=30m –json
Допълнителни възможности:
- –stats – показва статистика, вместо сурови снимки
- –list – списък с налични снимки
- –output=report.txt – запис в файл
- –unit=1h – групиране на данните по часове
🛠️ lve-create-db – създава или пресъздава базата данни на LVE-stats
Използване:
lve-create-db –recreate
Полезно, когато:
- LVE статистиката не се събира;
- трябва да валидираш структурата на базата (–validate);
- искаш просто да видиш SQL заявките (–print-sql).
📊 cloudlinux-top – „top“ за CloudLinux, показващ натоварването на живо
Какво прави:
Показва текуща информация за натоварване от потребители и бази данни – като top, но за LVE и MySQL.
Пример:
cloudlinux-top -j –max 10 –order-by=cpu
Полезни филтри:
- -u username – само за конкретен потребител
- -d domain.com – само за определен домейн
- -r reseller – само за потребители под конкретен реселър
- –max 10 – показва само топ 10 потребители по натоварване
- –order-by=cpu|io|mysql_io|ep|pmem – подрежда по натоварване
Какво връща cloudlinux-top –json?
Тази команда показва моментно (почти в реално време) използване на ресурси от всички потребители, а ако е активиран MySQL Governor – и от самите MySQL заявки. Информацията идва във вид на JSON обект.
🧱 Структура на JSON изхода
{
“mySqlGov”: “enabled”, // “enabled” или “error” – дали MySQL Governor работи
“mySqlGovMode”: “abusers”, // Режим на работа на MySQL Governor (ако е активен)
“resellers”: [
{
“id”: 1000020005, // вътрешен ID на реселъра
“name”: “reseller_name”, // потребителско име
“limit”: {…}, // лимити за последните 5 секунди
“usage”: {…} // реално използване за последните 5 секунди
}
],
“users”: [
{
“username”: “user”, // потребителско име
“domain”: “domain.com”, // основен домейн на потребителя
“id”: 20005, // LVE ID (същото като UID в /etc/passwd)
“reseller”: “reseller1”, // реселър на този потребител
“limit”: {…}, // лимити за последните 5 секунди
“usage”: {…} // реална консумация
}
],
“result”: “success”, // или съобщение за грешка
“timestamp”: 1234567890.123 // UNIX време на изпълнението
}
🔎 Как изглежда секцията limit или usage?
“limit”: {
“cpu”: {
“all”: 50.0, // CPU лимит (в проценти от едно ядро)
“mysql”: 0.0 // CPU лимит за MySQL (ако има)
},
“ep”: 1.0, // брой входни процеси (конкурентни заявки)
“io”: {
“all”: 0.0, // лимит за дисков I/O (в байтове/секунда)
“mysql”: 0.0 // също за MySQL
},
“iops”: 0.0, // IO операции в секунда
“mem”: 258048, // RAM (в байтове)
“pno”: 1.0 // брой процеси
}
📐 Единици на измерване:
| Поле | Единица |
| cpu | Процент от 1 CPU ядро |
| io | Байтове/секунда |
| iops | Операции в секунда |
| mem | Байтове |
| ep | Брой входни процеси |
| pno | Брой процеси |
⚠️ Обработка на грешки:
Ако има грешка, резултатът ще изглежда така:
{
“context”: {
“error_text”: “Много лоша грешка”
},
“result”: “An error occured: \”Много лоша грешка\””,
“timestamp”: 1523871939.639394
}
📌 Примери за използване:
- Покажи топ 100 потребители по CPU натоварване:
cloudlinux-top –json –order-by cpu –max=100
- Покажи текущото натоварване само на потребител ivan:
cloudlinux-top –json -u ivan
- Покажи ресурсите на реселър hostingbg и неговите клиенти:
cloudlinux-top –json –for-reseller=hostingbg
- Покажи само информация за дисково I/O:
cloudlinux-top –json –show=io
Ето опростено обяснение за CLI инструмента cloudlinux-statistics, който ти позволява да получиш исторически статистики за натоварване на системата – идеално за анализ на потребление от потребители, реселъри и процеси.
🧰 Какво прави cloudlinux-statistics?
Това е инструмент за команден ред, с който можеш да видиш натоварване на ресурси (CPU, RAM, IO и др.) назад във времето – за конкретен потребител, реселър, или за всички.
📌 Основен синтаксис:
cloudlinux-statistics [опции]
🗂️ Най-често използвани опции (на разбираем език):
| Опция | Какво прави |
| -j | Показва резултата във формат JSON – удобно за автоматизация или визуализиране |
| –limit 10 | Показва до 10 резултата (или повече, по твой избор) |
| –period 2d | Данни за последните 2 дни |
| –from и –to | Времеви интервал – ако не ползваш –period |
| –by-usage cpu | Показва само потребители, които ползват CPU близо до лимита си |
| –percentage 90 | Над колко % от лимита да търси (–by-usage) |
| –by-fault io | Филтрира по потребители, които са надвишили лимита за IO |
| –threshold 3 | Показва само тези с повече от 3 грешки/ограничения |
| –show cpu io | Показва само колоните CPU и IO |
| –order-by cpu | Сортира по най-високо CPU потребление |
| –for-reseller reseller1 | Показва само данни за реселър и неговите потребители |
| –id 12345 | Подробна информация за конкретен запис (рядко се ползва) |
| –time-unit 1h | Групира данните на всеки 1 час |
🔧 Примери
🔍 Преглед на топ 5 потребители по CPU за последните 2 дни:
cloudlinux-statistics –json –period 2d –order-by cpu –limit 5
🚨 Потребители, които са надвишили лимита за RAM поне 3 пъти:
cloudlinux-statistics –json –by-fault pmem –threshold 3
⚙️ Реселър hostingbg – най-натоварените клиенти по IO:
cloudlinux-statistics –json –for-reseller hostingbg –order-by io –limit 10
📉 Само потребители, които ползват над 90% от CPU лимита си:
cloudlinux-statistics –json –by-usage cpu –percentage 90
📈 Какво измерва инструментът?
| Поле | Означава |
| cpu | Средно CPU използване |
| mysql_cpu | CPU използване от MySQL (ако е активен gov) |
| io | Средно използване на I/O |
| iops | Операции в секунда (дискови) |
| ep | Входни процеси (конкурентни връзки) |
| nproc | Брой процеси |
| pmem | Физическа памет |
| vmem | Виртуална памет |
| *_faults | Брой нарушения/грешки спрямо лимити |
Формат на изхода (Output format)
Инструментът cloudlinux-statistics може да показва информация в два вида JSON формати:
🔹 1. Обобщена статистика (Summary statistics)
Това е преглед на реселъри и потребители с тяхното натоварване, лимити и грешки (faults):
{
“resellers”: [
{
“id”: 1000020005,
“name”: “reseller”,
“usage”: <ресурси>,
“faults”: <грешки>,
“limits”: <лимити>
}
],
“users”: [
{
“id”: 20005,
“username”: “username”,
“domain”: “example.com”,
“reseller”: “reseller”,
“usage”: <ресурси>,
“faults”: <грешки>,
“limits”: <лимити>
}
],
“mySqlGov”: “enabled”,
“result”: “success”,
“timestamp”: 1522920637
}
🔹 2. Подробна статистика (Detailed statistics)
Ако искаш да видиш по-детайлна статистика във времето за конкретен потребител, използваш –id=<ID>.
{
“user”: [
{
“from”: 1523011144,
“to”: 1523011143,
“usage”: <ресурси>,
“faults”: <грешки>,
“limits”: <лимити>
},
…
],
“mySqlGov”: “enabled”,
“result”: “success”,
“timestamp”: 1523011550
}
🔧 Как изглежда един <lve_section>?
{
“cpu”: {
“lve”: 25.6, // Процент от едно CPU ядро
“mysql”: 0.0 // Ако имаш MySQL Governor
},
“io”: {
“lve”: 0.0, // IO натоварване (в байтове/сек)
“mysql”: 0.0 // IO от MySQL
},
“iops”: {
“lve”: 0 // IO операции в секунда
},
“pmem”: {
“lve”: 360448 // RAM (в байтове)
},
“vmem”: {
“lve”: 2428928 // Виртуална памет (deprecated)
},
“ep”: {
“lve”: 1 // Входни процеси
},
“nproc”: {
“lve”: 1 // Общо процеси
}
}
🧮 Мерни единици:
| Поле | Единица |
| cpu | % от едно ядро |
| io | байта/секунда |
| iops | операции/секунда |
| pmem/vmem | байтове |
| ep | брой входни процеси |
| nproc | брой процеси |
❗ Грешки (Errors)
Ако всичко е наред:
“result”: “success”
Ако има грешка:
{
“context”: {
“error_text”: “Very bad error”
},
“result”: “An error occurred: \”Very bad error\””,
“timestamp”: 1523871939.639394
}
Примери с cloudlinux-statistics
🥇 Вземи топ 10 потребители по CPU натоварване за днес:
cloudlinux-statistics –json –order-by=cpu –period=today –limit=10
➡️ Показва най-натоварените 10 акаунта по CPU от началото на днешния ден.
⚠️ Вземи потребители, ударили IO лимита повече от 10 пъти днес:
cloudlinux-statistics –json –period=today –by-fault=io –threshold=10
➡️ Търси потребители, които са превишили лимита за IO поне 10 пъти.
🔥 Потребители, които са ползвали над 80% CPU в последните 24 часа:
cloudlinux-statistics –json –by-usage=cpu –percentage=80 –period=24h
➡️ Много полезно, за да хванеш акаунти, които редовно натоварват сървъра.
👥 Информация само за конкретен реселър и неговите потребители:
cloudlinux-statistics –json –for-reseller=reseller_name
➡️ Покажи статистики само за клиенти на даден реселър.
🧮 Покажи само CPU и IO ползване:
cloudlinux-statistics –json –show=cpu,io
➡️ Полезно, ако искаш да филтрираш данните само по определени ресурси.
🐬 MySQL Governor
Инструменти за следене и контролиране на MySQL натоварване по потребител:
| Команда | Какво прави |
| dbtop | Показва текущо MySQL натоварване в реално време |
| dbctl | Управлява настройките на MySQL Governor |
| lveinfo –dbgov | Историческа информация за потребление и рестрикции |
| dbgovchart | Създава графики за използването на MySQL |
📊 dbtop — Монитор в реално време за MySQL:
Интерактивен режим по подразбиране, можеш да го пуснеш с:
dbtop
🔁 Автоматично опресняване (пример на всеки 12 секунди):
dbtop -r 12
🔂 Еднократно извеждане на таблица (без интерактивен режим):
dbtop -c
⌨️ Контролни клавиши в dbtop:
| Клавиш | Какво прави |
| q, Ctrl+C | Изход от програмата |
| u | Сортира по потребител |
| c | Сортира по CPU |
| r | Сортира по Read (четене) |
| w | Сортира по Write (писане) |
| l | Сортира по ниво на ограничение |
| t | Сортира по оставащо време до отключване |
🧠 Индикации в колоната “CAUSE” (Причина за ограничение):
- OK – няма ограничение
- 1/s:busy_time/12 – ниво 1 ограничение по “busy_time”, оставащи 12 сек.
- m, l, s, c – тип на усреднената стойност (middle, long, short, current)
🔴 Червено – акаунтът е ограничен
🔵 Синьо – акаунтът е в “cooldown” (изчаквателен) режим
dbctl – Управление на MySQL Governor
Командата dbctl се използва за задаване на лимити и контрол върху потребители, които натоварват MySQL прекалено.
🔧 Основна структура:
dbctl <команда> <потребител> [опции]
🛠️ Основни команди:
| Команда | Какво прави |
| set | Задава лимити за CPU, read/write и т.н. |
| list | Показва активни потребители и техните лимити |
| list-restricted | Показва потребители, които в момента са ограничени |
| restrict | Ограничава потребител до най-ниско ниво (или друго с –level) |
| unrestrict | Премахва ограничението за потребител |
| unrestrict-all | Премахва ограничения за всички потребители |
| ignore | Игнорира потребител, няма да бъде ограничаван |
| watch | Започва отново да наблюдава игнориран потребител |
| delete | Изтрива ръчно зададени лимити – потребителят ще ползва дефолтни |
| –lve-mode | Задава режим на работа (monitor only, restrict all, и т.н.) |
📊 Примери:
🔧 Задаване на индивидуални лимити:
dbctl set testuser –cpu=150,100,70,50 –read=2048,1500,1000,800
📉 Ограничаване на потребител до ниво 2:
dbctl restrict testuser –level=2
✅ Премахване на ограничение:
dbctl unrestrict testuser
❌ Игнориране на потребител:
dbctl ignore testuser
🧹 Изтриване на зададени лимити:
dbctl delete testuser
📃 Лист с потребители и лимити:
dbctl list
📈 lveinfo –dbgov – История на MySQL натоварване
Тази команда показва статистики за MySQL натоварване на потребители в минал период.
🔧 Пример:
lveinfo –dbgov -u testuser –period=2d –order-by=cpu –json
➡️ Показва информация за testuser за последните 2 дни, сортирана по CPU, във формат JSON.
🖼️ dbgovchart – Генерира графика за MySQL натоварване
Аналог на lvechart, но за MySQL.
🔧 Пример:
dbgovchart –user=testuser –period=4h –output=/root/mysql-usage.svg –format=svg
➡️ Генерира SVG графика за последните 4 часа за потребителя testuser и я записва във файл.
📝 Съвети за работа
- Ползвай –period=today, –period=2d, –from=2024-04-01 10:00 и –to=2024-04-01 14:00 за времеви филтри.
- За визуализация на данни използвай –json или –csv.
- Ако искаш да автоматизираш следене, можеш да вкараш dbctl в скрипт с cron за ежедневно ограничаване на най-натоварените акаунти.
Какво е selectorctl?
selectorctl е инструмент за управление на PHP Selector в CloudLinux. Използва се за:
- Задаване на PHP версия по подразбиране (глобално или за отделен потребител)
- Активиране/деактивиране на PHP разширения (модули)
- Настройване на PHP опции като display_errors, memory_limit и други
⚠️ Старият инструмент cl-selector е вече остарял. Използвайте selectorctl.
📌 Основни команди за администратори
🔍 Виж всички налични PHP версии:
selectorctl –list
🧠 Покажи коя е текущата глобална PHP версия:
selectorctl –current
🎯 Задай глобална PHP версия:
selectorctl –set-current=5.4
🚫 Деактивирай определена версия:
selectorctl –disable-alternative=5.2
✅ Активирай отново версия:
selectorctl –enable-alternative=5.2
📦 Активирай разширения (модули) глобално:
selectorctl –enable-extensions=pdo,phar –version=5.4
🧼 Изтрий глобално активирани разширения:
selectorctl –disable-extensions=pdo,phar –version=5.4
👤 Команди за конкретен потребител
👁 Виж текущата потребителска версия:
selectorctl –user-current –user=ivan
🖋 Задай PHP версия на потребител:
selectorctl –set-user-current=5.3 –user=ivan
✅ Активирай разширения за потребител:
selectorctl –enable-user-extensions=gd,curl –version=5.3 –user=ivan
❌ Деактивирай разширения:
selectorctl –disable-user-extensions=curl –version=5.3 –user=ivan
🔁 Замени всички разширения с нов списък:
selectorctl –replace-user-extensions=gd,soap –version=5.3 –user=ivan
🔄 Върни потребителските разширения към настройките по подразбиране:
selectorctl –reset-user-extensions –version=5.3 –user=ivan
🧾 Списък с активни разширения на потребител:
selectorctl –list-user-extensions –version=5.3 –user=ivan
🧩 Добави PHP конфигурации за потребителя (пример display_errors=on):
selectorctl –add-options=display_errors:on –version=5.3 –user=ivan
🗑 Изтрий конкретни PHP опции:
selectorctl –delete-options=display_errors –version=5.3 –user=ivan
🛠 Допълнителни примери
🔄 Промени PHP версия за всички потребители от 5.3 към 5.4:
selectorctl –change-to-version=5.4 –version=5.3
👥 Списък с потребители, използващи дадена PHP версия:
selectorctl –list-users –version=5.3
📑 Върни всички потребителски PHP опции към фабричните:
selectorctl –reset-options
📦 Алтернатива за Python Selector
За Python Selector се използва друг инструмент:
cloudlinux-selector
Какво е Python Selector?
Python Selector е инструмент, който позволява на потребителите на сървъра да създават и управляват свои Python уеб приложения с избрана версия на Python.
🧑💼 Команди за администратор (hoster)
🔍 Покажи пълна информация за Python Selector
cloudlinux-selector get –interpreter python –json
Това ще покаже:
- Дали е включен Python Selector
- Коя версия е по подразбиране
- Списък с поддържани версии
- Потребители и приложения
⚙️ Управление на глобални настройки
✅ Включи Python Selector:
cloudlinux-selector set –interpreter python –selector-status enabled –json
❌ Изключи Python Selector:
cloudlinux-selector set –interpreter python –selector-status disabled –json
🎯 Задай версия по подразбиране (например 3.3):
cloudlinux-selector set –interpreter python –default-version 3.3 –json
🧩 Настрой поддържани версии:
cloudlinux-selector set –interpreter python –supported-versions='{“2.7”: false, “3.3”: true}’ –json
📦 Инсталиране и деинсталиране на версии
🔽 Инсталирай Python 2.7:
cloudlinux-selector install-version –interpreter python –version 2.7 –json
🔼 Премахни Python 2.7:
cloudlinux-selector uninstall-version –interpreter python –version 2.7 –json
✅ Активирай версия:
cloudlinux-selector enable-version –interpreter python –version 2.7 –json
❌ Деактивирай версия:
cloudlinux-selector disable-version –interpreter python –version 2.7 –json
📁 Управление на приложения
✏️ Смени версията за конкретно приложение:
cloudlinux-selector set –interpreter python –user user1 –app-root apps_dir/app1 –new-version 3.3 –json
🔄 Смени версията за всички приложения, използващи конкретна версия:
cloudlinux-selector change-version-multiple –interpreter python –from-version 2.7 –new-version 3.3 –json
👥 Смени версията на много приложения и потребители:
cloudlinux-selector change-version-multiple –interpreter python –data ‘[{“user”: “user1”, “app_root”: “apps/app1”}, {“user”: “user2”, “app_root”: “apps/app2”}]’ –new-version 3.3 –json
📤 Примерен JSON изход при успех:
{
“result”: “success”,
“timestamp”: 1680000000.000000
}
⚠️ Пример при грешка:
{
“result”: “Some error message”,
“details”: “Traceback: …”,
“context”: {},
“timestamp”: 1680000000.000000
}
Как потребител може да използва Python Selector?
🔸 Важно: Всички команди трябва да се стартират чрез cagefs_enter, за да работят правилно в потребителската среда.
/bin/cagefs_enter.proxied /usr/sbin/cloudlinux-selector –json <други параметри>
📂 Четене на конфигурационен файл на приложение
cloudlinux-selector read-config –json –interpreter python –user <потребител> –app-root <папка> –config-file requirements.txt
👉 Това ще покаже съдържанието на файла, кодирано в Base64.
💾 Запис на конфигурационен файл
cloudlinux-selector save-config –json –interpreter python –user <потребител> –app-root <папка> –config-file requirements.txt –content <Base64 кодирано съдържание>
📜 Списък с приложения на потребител
cloudlinux-selector get –json –interpreter python –user <потребител>
🆕 Създаване на Python приложение
cloudlinux-selector create –json –interpreter python –user <потребител> –app-root <папка> –domain <домен> –app-uri <URI> –version <версия> –startup-file <файл> –entry-point <точка>
Пример:
cloudlinux-selector create –json –interpreter python –user user1 –app-root myapps/app1 –domain example.com –app-uri apps/app1 –version 3.9 –startup-file app.py –entry-point app
▶️ Управление на приложението
cloudlinux-selector start|stop|restart|destroy –json –interpreter python –user <потребител> –app-root <папка>
📝 Промяна на конфигурацията на приложение
cloudlinux-selector set –json –interpreter python –user <потребител> –app-root <папка> –new-version <версия> –startup-file <файл> –env-vars ‘{“KEY”:”value”}’
📦 Инсталиране на Python модули (с pip)
📁 По requirements.txt файл:
cloudlinux-selector install-modules –json –interpreter python –user <потребител> –app-root <папка> –requirements-file requirements.txt
📦 Или конкретни модули:
cloudlinux-selector install-modules –json –interpreter python –user <потребител> –app-root <папка> –modules flask,requests
🗑️ Деинсталиране:
cloudlinux-selector uninstall-modules –json –interpreter python –user <потребител> –app-root <папка> –modules flask
🧪 Стартиране на Python скрипт във виртуалната среда на приложението
cloudlinux-selector run-script –json –interpreter python –user <потребител> –app-root <папка> –script-name <име на скрипта> — <опции/аргументи>
Пример:
cloudlinux-selector run-script –json –interpreter python –user user1 –app-root myapps/app –script-name test.py — –debug true
📋 Примерен JSON отговор при успех:
{
“result”: “success”,
“timestamp”: 1680000000.000000,
“data”: “U2NyaXB0IG91dHB1dCBjb2Rl…”
}
Ruby Selector
▶️ Създаване на Ruby приложение
/usr/bin/selectorctl –interpreter=ruby –version=2.7 –user=потребител –create-webapp ПАПКА URI
🔸 Папката и URI-то трябва да бъдат в UTF-8 формат.
❌ Изтриване на Ruby приложение
/usr/bin/selectorctl –interpreter=ruby –user=потребител –destroy-webapp ПАПКА
🔁 Преименуване на папката на приложението
/usr/bin/selectorctl –interpreter=ruby –user=потребител –relocate-webapp СТАРА_ПАПКА НОВА_ПАПКА
🔗 Смяна на URI на приложението
/usr/bin/selectorctl –interpreter=ruby –user=потребител –transit-webapp ПАПКА НОВО_URI
🔄 Смяна на Ruby версия за приложението
/usr/bin/selectorctl –interpreter=ruby –user=потребител –set-user-current –version=2.7 ПАПКА
♻️ Рестартиране на приложение
selectorctl –interpreter=ruby –user=потребител –domain=домейн –restart-webapp име_на_приложение
🟢 Node.js Selector (за хостинг доставчици)
📋 Получаване на пълна информация за Node.js Selector
cloudlinux-selector get –json –interpreter=nodejs
Ще покаже:
- Дали Node.js Selector е активен
- Коя е текущата по подразбиране версия
- Какви версии са налични и кои потребители ги използват
⚙️ Промяна на настройки
Активиране на Node.js Selector:
cloudlinux-selector set –json –interpreter=nodejs –selector-status enabled
Задаване на версия по подразбиране:
cloudlinux-selector set –json –interpreter=nodejs –default-version 14.17.0
Избор на поддържани версии:
cloudlinux-selector set –json –interpreter=nodejs –supported-versions='{“12.22.0”: true, “14.17.0”: true}’
💡 Бележки
- Node.js Selector по подразбиране е изключен.
- Ако версията не е инсталирана, не може да се включи Selector докато не се инсталира подходящата Node.js версия.
Node.js Selector – Команден ред (CLI)
🔧 Как да зададете Node.js версия по подразбиране
За да зададете версия по подразбиране за Node.js, използвайте следната команда (важно: версията трябва вече да е активирана):
cloudlinux-selector set –json –interpreter=nodejs –default-version=<версия>
📌 Примери:
✅ Активиране на Node.js Selector:
cloudlinux-selector set –json –interpreter nodejs –selector-status enabled
📌 Задаване на версия 6 като версия по подразбиране:
cloudlinux-selector set –json –interpreter nodejs –default-version 6
📌 Определяне на поддържаните версии – само версия 8 е разрешена:
cloudlinux-selector set –json –interpreter nodejs –supported-versions='{“6”: false, “8”: true}’
🧩 Управление на Node.js версии
📥 Инсталиране на необходима версия (примерно v8):
cloudlinux-selector install-version –json –interpreter nodejs –version 8
🗑️ Деинсталиране на версия (примерно v8):
cloudlinux-selector uninstall-version –json –interpreter nodejs –version 8
✅ Активиране на версия:
cloudlinux-selector enable-version –json –interpreter nodejs –version 8
🚫 Деактивиране на версия
❗ Забележка: Не може да деактивирате версия, която е по подразбиране!
cloudlinux-selector disable-version –json –interpreter nodejs –version 8
🔄 Смяна на версията на Node.js за приложение
Сменя се чрез:
cloudlinux-selector set –json –interpreter nodejs –user user1 –app-root apps_dir/app1 –new-version 8
Или за всички приложения, които използват дадена версия:
cloudlinux-selector set –json –interpreter nodejs –from-version 6 –new-version 8
📤 Примерен изход от команди:
✅ При успех:
{
“result”: “success”,
“timestamp”: 1508666792.863358
}
❌ При грешка:
{
“result”: “Some error message”,
“details”: “Traceback: …”,
“context”: {},
“timestamp”: 1508666792.863358
}
⚠️ При предупреждение:
{
“result”: “success”,
“warning”: “Some warning message”,
“context”: {},
“timestamp”: 1508666792.863358
}
🧪 Как да проверите за проблеми при инсталация/деинсталация
Тъй като командите install-version и uninstall-version се изпълняват на заден фон, можете да проверите логовете тук:
/var/log/cl-nodejs-last-yum.log
Този файл съдържа пълния изход от последната операция и ще се презаписва при всяка нова такава.
Node.js Selector за крайни потребители
⚠️ Забележка: Параметрите –user и –domain не могат да се използват едновременно. Изберете само един от тях.
📄 Прочитане на конфигурационен файл на приложение
cloudlinux-selector read-config –json –interpreter nodejs –user ИМЕ_НА_ПОТРЕБИТЕЛ –app-root ПЪТ_ДО_ПРИЛОЖЕНИЕТО –config-file ИМЕ_ФАЙЛ
📦 Пример:
cloudlinux-selector read-config –json –interpreter nodejs –user user1 –app-root app_dir/app1 –config-file package.json
💾 Записване на конфигурационен файл
cloudlinux-selector save-config –json –interpreter nodejs –user user1 –app-root app_dir/app1 –config-file package.json –content <съдържание в Base64>
📦 Пример:
cloudlinux-selector save-config –json –interpreter nodejs –user user1 –app-root app_dir/app1 –config-file package.json –content VGh1ICAyIE5vdiAxMDo0MzoxMiBFRFQgMjAxNwo=
📋 Списък с приложения на потребител
cloudlinux-selector get –json –interpreter nodejs –user user1
➕ Създаване на приложение
cloudlinux-selector create –json –interpreter nodejs –user user1 –app-root my_apps/app1 –app-uri apps/app1
Или по домейн:
cloudlinux-selector create –json –interpreter nodejs –domain xyz.com –app-root my_apps/app1 –app-uri apps/app1
▶️ Управление на приложение (старт, стоп, рестарт, изтриване)
cloudlinux-selector start –json –interpreter nodejs –user user1 –app-root my_apps/app1
cloudlinux-selector stop –json –interpreter nodejs –user user1 –app-root my_apps/app1
cloudlinux-selector restart –json –interpreter nodejs –user user1 –app-root my_apps/app1
cloudlinux-selector destroy –json –interpreter nodejs –user user1 –app-root my_apps/app1
🛠️ Промяна на свойства на приложение
cloudlinux-selector set –json –interpreter nodejs –user user1 –app-root my_apps/app1 –mode production –new-app-root new_apps/new_app1 –new-domain new.xyz.com –new-app-uri new_apps/app1 –new-version 8 –startup-file new_app.js –env-vars ‘{ “var1”: “value1”, “var2”: “value2” }’
📁 За лог файл на Passenger:
cloudlinux-selector –json create –interpreter=nodejs –user=cltest1 –app-root=p_app2 –app-uri=p_app2_uri –passenger-log-file=/home/cltest1/passenger.log
🗑️ Премахване на custom лог файл:
cloudlinux-selector –json set –interpreter=nodejs –user=cltest1 –app-root=p_app1 –passenger-log-file=””
📦 Инсталиране на npm модули
cloudlinux-selector install-modules –json –interpreter nodejs –user user1 –app-root my_apps/app
🚀 Изпълнение на скрипт от package.json
cloudlinux-selector run-script –json –interpreter nodejs –user user1 –app-root my_apps/app –script-name test_script — –script_opt1 –script_opt2 script_arg1 script_arg2
Изход (Base64 кодиран резултат):
{
“result”: “success”,
“timestamp”: 1508666792.863358,
“data”: “Base64 encoded output”
}
🧪 Активиране на виртуална среда за Node.js
source /home/ПОТРЕБИТЕЛ/nodevenv/ПЪТ_ДО_ПРИЛОЖЕНИЕ/ВЕРСИЯ/bin/activate
📌 Пример:
source /home/newusr/nodevenv/newapp4/newapp3/8/bin/activate
След активация ще можеш директно да ползваш npm и node, без да посочваш пълни пътища.
Apache mod_lsapi PRO – Инструмент за управление: switch_mod_lsapi
Това е команден инструмент, с който можеш да управляваш mod_lsapi на Apache сървъра.
📌 Основен синтаксис:
/usr/bin/switch_mod_lsapi [ОПЦИИ]
🧩 Основни опции
| Опция | Какво прави |
| –setup | Настройва mod_lsapi и PHP handler-и. Копира и native lsphp. |
| –setup-light | Настройва само PHP handler-и (само за cPanel EA4). |
| –uninstall | Премахва mod_lsapi от Apache. |
| –enable-domain / –disable-domain | Активира/деактивира mod_lsapi само за конкретен домейн (cPanel EA3). |
| –enable-global | Включва mod_lsapi глобално за всички домейни. |
| –disable-global | Изключва mod_lsapi глобално за всички домейни. |
| –build-native-lsphp | Генерира native lsphp (за EA3). |
| –check-php | Проверява PHP конфигурацията. |
| –stat | Показва статистика в JSON формат. |
🛠 Допълнителни опции
| Опция | Описание |
| –verbose | Включва по-подробен изход. |
| –force | Принуждава изпълнение, дори при грешки. |
📋 Съвместимост с контролни панели
| Панел | Поддържа ли setup? | Поддържа ли uninstall? | Поддържа ли stat? |
| Без панел | ✅ | ✅ | ✅ |
| cPanel EA3 | ✅ | ✅ | ✅ |
| cPanel EA4 | ✅ | ✅ | ✅ |
| DirectAdmin | ✅ (custombuild) | ✅ | ✅ |
| Plesk | ✅ | ✅ | ✅ |
🐌 Slow Site Analyzer (SSA)
📌 Команден инструмент:
/usr/sbin/cloudlinux-ssa-manager [команда]
Команди:
| Команда | Какво прави |
| enable-ssa / disable-ssa | Включва/изключва SSA |
| get-config / set-config | Взима или задава настройките |
| get-report | Взима последния отчет |
| get-ssa-status | Проверява текущия статус на SSA |
Пример:
/usr/sbin/cloudlinux-ssa-manager set-config –domains-number 10 –urls-number 15
🌐 Website Monitoring Tool (WMT)
📌 Команден инструмент:
/usr/share/web-monitoring-tool/wmtbin/wmt-api [команда]
Основни команди:
| Команда | Какво прави |
| start / stop / status | Стартира, спира или проверява състоянието на WMT |
| config-change | Задава конфигурация (в JSON формат) |
| config-get | Взима текущата конфигурация |
| email-get | Взима зададения имейл |
| report-generate | Генерира JSON отчет |
| send-clickhouse | Изпраща обобщен отчет към ClickHouse |
Пример за настройка:
/usr/share/web-monitoring-tool/wmtbin/wmt-api -config-change ‘{“ping_connections”:8,”report_top”:5,”report_email”:”user@example.com”}’
X-Ray Autotracing (Автоматично проследяване на заявки)
🛠️ Инструмент: /usr/sbin/cloudlinux-autotracing
Позволява да активираш/деактивираш автоматичното проследяване на заявки за X-Ray.
📌 Основни команди:
| Команда | Описание |
| enable | Включва X-Ray автопроследяване |
| disable | Изключва автопроследяването |
| status | Показва дали е включено/изключено |
| –all | Прилага командата за всички потребители |
| –list-disabled | Показва кои потребители са с изключено проследяване |
✅ Примери:
/usr/sbin/cloudlinux-autotracing disable user1
/usr/sbin/cloudlinux-autotracing status –list-disabled
/usr/sbin/cloudlinux-autotracing enable –all
🔧 Други полезни CLI инструменти
☁️ cldeploy – Инсталира CloudLinux
Позволява да конвертираш CentOS или RHEL към CloudLinux.
Примерна команда:
cldeploy –key XX-XXXXXXX # активация с ключ
| Опция | Действие |
| –conversion-only | Само преобразуване, без да инсталира панели |
| –components-only | Само инсталира компоненти за панела |
| –hostinglimits | Инсталира mod_hostinglimits |
| –force-hybridize | Превръща системата в CloudLinux Hybrid |
⚙️ lvectl – Мениджмънт на LVE лимити
Основният инструмент за управление на ресурси на потребители.
Примери:
lvectl list # Покажи всички LVE
lvectl set-user user1 –speed=50% –pmem=256M
lvectl destroy all # Изтрий всички LVE и рестартирай лимитите
| Команда | Описание |
| set-user | Настрой лимити за потребител по име |
| apply all | Прилага всички конфигурации от файла |
| destroy | Убива всички процеси в даден LVE |
| limits | Показва лимитите на текущите LVE |
LVE мониторинг & анализ на процеси
🔍 lveps – показва информация за процеси в LVE
lveps [-p] [-n] [-o <формат>] [-d] [-c <време>] [-s <стил>] [-t]
Какво прави:
Показва активните LVE (потребители), техните процеси, консумация на ресурси и какво точно върви вътре във всяко LVE (CPU, RAM, IO).
| Опция | Описание |
| -p | Показва всички процеси/нишки вътре в LVE |
| -n | Показва ID вместо потребителско име |
| -o | Форматирано изходно съдържание (например: id,cpu,mem) |
| -d | Показва динамично натоварване на CPU |
| -c | Изчислява средна CPU употреба за период (в сек.) |
| -t | Топ режим, като top, само за LVE |
| -s cpu | Сортира по CPU, или mem, io, thread и т.н. |
🔧 Пример:
lveps -p -d -s cpu
Показва процесите, използване в реално време, сортирано по CPU.
📈 lvetop – жив монитор за LVE в реално време
Изглежда като top, но за LVE:
ID EP PNO TNO CPU MEM IO IOPS
user1 1 3 3 12% 102 8 1
user2 0 0 0 0% 0 0 0
| Поле | Описание |
| EP | Entry процеси (заявки към уеб сървър) |
| PNO | Брой процеси |
| TNO | Брой нишки |
| CPU | Употреба на CPU |
| MEM | RAM в KB |
| IO | I/O скорост |
| IOPS | I/O операции в секунда |
🧪 Диагностика и проверка на сървър
🛠 cldetect – открива инсталиран софтуер
/usr/bin/cldetect –detect-cp
| Опция | Какво прави |
| –detect-edition | Показва изданието на CloudLinux OS (Solo, Admin, Shared) |
| –detect-cp | Засича контролен панел и версията му |
| –get-admin-email | Показва email на администратора |
| –setup-supergids | Автоматично настройва групи за сигурност, напр. за nagios |
🧪 cldiag – проверява за често срещани проблеми
cldiag –symlinksifowner –json
📌 Примерен резултат:
{
“total_errors”: 0,
“Check fs.enforce_symlinksifowner is correctly enabled in /etc/sysctl.conf”: {
“res”: “OK”,
“msg”: “fs.enforce_symlinksifowner = 1”
}
}
| Статус | Значение |
| OK | Всичко е наред |
| FAILED | Открит е проблем |
| SKIPPED | Проверката не е приложима |
| INTERNAL_TEST_ERROR | Грешка в самата проверка |
Допълнителни проверки с cldiag (CloudLinux диагностика)
✅ check-suphp – Проверява дали SuPHP използва CageFS
- Ако CageFS е инсталиран и SuPHP е активен, тази проверка се уверява, че SuPHP работи вътре в CageFS.
- ❌ Провал, ако SuPHP не е в клетката на CageFS.
✅ check-usepam – Проверява UsePAM настройката за SSH
- Извежда конфигурацията на sshd и търси usepam yes.
- Това е важно за правилното функциониране на pam_lve (ресурсните лимити през SSH).
🔧 Ако видиш usepam no, просто добави това в /etc/ssh/sshd_config:
UsePAM yes
✅ check-symlinkowngid – Проверява защита срещу symlink атаки
- Уверява се, че потребителят на уеб сървъра (apache, nobody или httpd) е в правилната група за защита срещу символични линкове (symlink).
- ❌ Провал, ако този потребител не е в групата, която е указана в fs.symlinkown_gid.
✅ check-cpanel-packages – Проверява дали всички потребителски планове (packages) съществуват (само за cPanel)
- Гледа кой потребител е на кой план (package) в /var/cpanel/users/, и дали планът съществува в /var/cpanel/packages/.
- ❌ Провал, ако планът липсва. (Изключения: default и undefined)
✅ check-defaults-cfg – Проверява default.cfg на PHP Selector
Проверява:
- Дали по подразбиране избраната PHP версия не е изключена
- Дали настройките за PHP модули имат правилен синтаксис
❌ Провал при:
- Липса на дефинирана версия
- Дефинирана, но деактивирана версия
- Грешен синтаксис
✅ check-cagefs – Пълна проверка на CageFS
Това е група от проверки за CageFS – еквивалентна на cagefsctl –sanity-check. Включва:
- Проверка на mount точки
- Списъци с активирани потребители
- Проверки дали su работи правилно вътре в клетката
- …и още.
❌ Провал дори при само една грешка.
✅ check-php-conf – Проверка на php.conf на PHP Selector
Проверява синтаксиса и валидността на:
- Параметри като: Directive, Default, Type, Comment
- Типове: value, list, bool
❌ Провал ако има грешки в синтаксиса или липсват важни секции.
✅ check-phpselector – Съвместимост на PHP Selector
Проверява дали уеб сървърът (Apache, LiteSpeed) е съвместим с CloudLinux PHP Selector.
❌ Провал при:
- Инсталиран mod_ruid (несъвместим)
- Липсва mod_suexec или mod_suphp
- При LiteSpeed – липсва httpd_config.xml
📎 Не се проверява на EasyApache 3.
✅ check-lve-limits – Проверява дали LVE лимитите са правилни
- Проверява дали стойностите на лимитите не са грешни/липсват.
- Уверява се, че потребителите имат зададени лимити, както трябва.
⚠️ check-rpmdb – ❌ Премахнат от cldiag
- Беше премахнат, защото при някои системи замръзваше и блокираше работата с yum и rpm.
💡 Финални думи
Тези проверки с cldiag са супер полезни за бърз одит на сървъра – особено при проблеми с PHP, CageFS или LVE. Всичко можеш да стартираш с:
cldiag –json
Или конкретна проверка:
cldiag –check-suexec
cldiag –check-defaults-cfg –json
Допълнителни проверки и инструменти в cldiag
✅ check-hidepid – Проверява дали е активирана защита на /proc
- Ако CageFS е инсталиран, проверява дали /proc е монтиран с параметър hidepid=2.
- Това е важна защита за предотвратяване на достъп до процеси на други потребители.
- 📌 Препоръчва се винаги да е включено: mount -o remount,hidepid=2 /proc
🟢 Пример за успешна проверка:
OK: hidepid protection enabled
🔴 Пример за неуспешна проверка:
FAILED: hidepid protection disabled. Please, mount system with hidepid=2
✅ check-jwt-token – Проверка на JWT токен за Централизиран мониторинг
- Проверява дали токенът в /etc/sysconfig/rhn/jwt.token е:
- Наличен
- Валиден (не е изтекъл, правилен издател, и правилен формат)
🔧 Ако има проблем, пусни:
rhn_check
… за презареждане на токена.
✅ check-cm-all – Централна проверка за мониторинг услугите
Проверява дали всичко необходимо за Centralized Monitoring е налично и работи:
- JWT токен – валиден
- Услуги: cl_plus_sender, node_exporter, lvestats – активни
- Инсталирани пакети: cl-end-server-tools, cl-node-exporter
✅ all – Стартира всички основни диагностики с една команда:
cldiag –all
Проверява:
- Контролен панел
- CageFS
- LVE лимити
- PHP Selector конфигурация
- hidepid защита
- и други
✉️ generate-email – Генерира HTML доклад и го праща на админ имейл
Много удобно за регулярни проверки. За целта:
- Увери се, че EMAIL= в /etc/sysconfig/cloudlinux е настроен.
- Или, че контролният панел връща имейл на админа.
⏰ cron-check – Автоматичен скрипт за проверки (съвместим с cron)
Същите проверки като generate-email, но отчита дали са разрешени от ENABLE_CLDIAG=true в /etc/sysconfig/cloudlinux.
🩺 doctor – Стартира пълна диагностика и автоматично изпраща доклада до съпорта
Команда:
cldiag –doctor
Зад нея стои скриптът:
wget -qq -O – https://repo.cloudlinux.com/cloudlinux/cldoctor/cldoctor.sh | bash
Не е нужно да го пишеш ръчно – –doctor го прави вместо теб.
⚙️ cloudlinux-config – Управление на UI и лимити от CLI
Този инструмент ти позволява да преглеждаш и променяш настройки на:
- LVE Manager UI
- MySQL Governor
- LVE-Stats 2 уведомления
Примери:
📌 Вземи текущите настройки:
cloudlinux-config get –json
📌 Промени нещо (примерно inodes лимита):
cloudlinux-config set –json –reset-inodes-limit
📌 Промени с JSON структура:
cloudlinux-config set –json –data ‘{“options”:{“faults_notify”:true,”show_graphs”:true}}’
Можеш също да насочиш промените към конкретен реселър:
cloudlinux-config get –for-reseller=myreseller
Настройки на MySQL Governor
| Level1 | Level2 | Level3 | Level4 | Possible values | Description |
| faultsNotification | faultsToInclude | concurrentConnections | true/false | Include concurrent connection value in notification emails | |
| faultsNotification | faultsToInclude | cpu | true/false | Include CPU consumption value in notification emails | |
| faultsNotification | faultsToInclude | io | true/false | Include IO value in notification emails | |
| faultsNotification | faultsToInclude | iops | true/false | Include IOPS value in notification emails | |
| faultsNotification | faultsToInclude | mem | true/false | Include RAM consumption value in notification emails | |
| faultsNotification | faultsToInclude | nproc | true/false | Include number of processes value in notification emails | |
| faultsNotification | fminimumNumberOfFaultsToNotify | admin | N | The minimum number of faults to notify for admin | |
| faultsNotification | fminimumNumberOfFaultsToNotify | user | N | The minimum number of faults to notify for users | |
| faultsNotification | fminimumNumberOfFaultsToNotify | reseller | N | The minimum number of faults to notify for reseller | |
| faultsNotification | fminimumNumberOfFaultsToNotify | customer | N | The minimum number of faults to notify for reseller’s customers | |
| faultsNotification | notify | admin | period | N | The period of faults notifications for admin |
| faultsNotification | notify | admin | unitOfTime | minutes/hours/days | Time units of period of faults notifications for admin |
| faultsNotification | notify | user | period | N | The period of faults notifications for users |
| faultsNotification | notify | user | unitOfTime | minutes/hours/days | Time units of period of faults notifications for users |
| faultsNotification | notify | reseller | period | N | The period of faults notifications for resellers |
| faultsNotification | notify | reseller | unitOfTime | minutes/hours/days | Time units of period of faults notifications for resellers |
| faultsNotification | notify | customer | period | N | The period of faults notifications for reseller’s customers |
| faultsNotification | notify | customer | unitOfTime | minutes/hours/days | Time units of period of faults notifications for reseller’s customers |
| faultsNotification | notifyAdmin | true/false | Send faults notifications to admin | ||
| faultsNotification | notifyResellerCustomers | true/false | Send faults notification to reseller users | ||
| faultsNotification | notifyResellerOnCustomers | true/false | Send users’ faults notifications to the respective reseller | ||
| faultsNotification | notifyReseller | true/false | Send faults notification to reseller | ||
| faultsNotification | notifyCustomers | true/false | Send faults notifications to users | ||
| faultsNotification | notifyResellers | true/false | Send faults notification to resellers | ||
| faultsNotification | notifyCharset | utf-8/null | Set charset used in email | ||
| faultsNotification | notifyFromEmail | admin@email.com/null | Set email to notify from |
Настройки на LVE Manager UI
| Ниво 1 | Ниво 2 | Възможни стойности | Описание |
| inodeLimits | showUserInodesUsage | true / false | Показва използването на inodes от потребителя. |
| uiSettings | hideLVEUserStat | true / false | Скрива статистиката за използване на ресурси от крайния потребител. |
| uiSettings | hidePHPextensions | true / false | Скрива секцията за избор на PHP разширения. |
| uiSettings | hidePythonApp | true / false | Скрива Python приложенията от уеб интерфейса. |
| uiSettings | hideRubyApp | true / false | Скрива Ruby приложенията от уеб интерфейса. |
🧪 Примери
👉 Показване на Python и Ruby приложения в потребителския интерфейс (напр. cPanel):
cloudlinux-config set –json –data ‘{“options”:{“uiSettings”:{“hideRubyApp”:false, “hidePythonApp”:false}}}’
💡 Забележка: Ако искаш да скриеш дадена функция, използвай true вместо false.
cl-quota – Управление на квоти за inodes
📌 Общи положения
- cl-quota е CLI инструмент за управление на inode квоти на потребители и пакети в хостинг среда.
- Работи чрез стандартните setquota/repquota от пакета quota.
- Не работи с квоти за блокове (дисково пространство) – само inode лимити (файлове).
❌ Кога не работи:
- Ако липсват setquota/repquota.
- Ако квотите не са активирани.
- cl-quota не активира квоти сам – трябва да се конфигурира ръчно.
⚙️ Задаване на лимити и интеграция с контролни панели
- Позволява настройка на inode лимити за потребители на панели (напр. cPanel, DirectAdmin).
- Поддържа индивидуални и пакетни лимити.
- За root (uid=0) лимити не се прилагат, но се ползват за наследяване.
✅ Позволени стойности:
- Цели положителни числа
- 0 – означава „наследи от пакета“ (или от uid=0)
- -1 – означава „без лимит“ (unlimited)
- “default” = 0, “unlimited” = -1
🔁 Наследяване на лимити
- Ако потребител няма индивидуални лимити → наследява от пакета
- Ако пакет няма лимити → потребителят наследява от uid=0
🔄 Кеширане и синхронизация на лимити
- Нов потребител започва с лимити 0
cl-quota автоматично синхронизира лимитите на всеки 5 минути чрез cron:
cl-quota -YC
- Данните се записват в /etc/container/cl-quotas.cache
- Може да се деактивира с:
echo “cl_quota_limits_autosync=no” >> /etc/sysconfig/cloudlinux
📁 Файл с квоти: /etc/container/cl-quotas.dat
Пример:
[users]
0 = 1000:2000
500 = -1:-1
958 = 0:20000
[packages]
pack1 = 5000:-1
Обяснение:
- uid=0 има лимит 1000:2000 → това се наследява по подразбиране
- uid=500 има безлимитни стойности (-1:-1)
- uid=958 наследява soft, но има зададен hard лимит 20000
- Пакет pack1 има 5000:unlimited → всичките му потребители получават тези стойности
🖥️ CLI опции – Основни примери
| Команда | Описание |
| cl-quota -S | Извежда текущи лимити |
| cl-quota -U user1 1000 2000 | Задава soft/hard лимити на user1 |
| cl-quota -P pack1 5000 unlimited | Задава лимити за всички потребители в пакет pack1 |
| cl-quota -Y | Синхронизира лимитите от DB файла |
| cl-quota -C | Кешира текущите лимити в .cache файл |
| cl-quota -L | Показва активни потребители и пакети |
| cl-quota –help | Показва пълния списък с команди |
cl-quota: CLI опции и примери
🧩 Основни опции
| Опция | Значение |
| -u, –user | Задава потребител (по име) |
| -U, –user-id | Задава потребител (по UID) |
| -S, –soft-limit | Задава soft лимит (използвай 0/default за наследен лимит, -1/unlimited за неограничен) |
| -H, –hard-limit | Задава hard лимит (също с 0/-1/думи) |
| -V, –csv | Извежда данни във CSV формат |
| -p, –package | Задава име на пакет |
| -P, –package-limits | Показва лимити на администраторски пакети |
| -a, –all-package-limits | Показва всички пакети (вкл. такива без лимити) |
| -Y, –sync | Синхронизира потребители и пакети с базата |
| -C, –cache-content | Кешира текущите квоти |
| -F, –force | Принудително записване дори при съвпадение със стойности по подразбиране |
| –check | Проверка дали квотите са активирани за потребител |
📌 Допълнителна информация
- Можеш да използваш –user или –user-id, не е задължително да зададеш и двете.
- Поддържат се думи: default (наследен лимит) и unlimited (неограничен).
- Кешът на лимити се намира в: /etc/container/cl-quotas.cache
- Файл с лимити: /etc/container/cl-quotas.dat
🧪 Примери за употреба
📖 Прочитане на текущи лимити:
cl-quota
cl-quota –csv
📖 Прочитане на лимити по пакети:
cl-quota –package-limits
cl-quota –all-package-limits
cl-quota –package-limits –csv
cl-quota –all-package-limits –csv
✏️ Задаване на лимити на потребител:
cl-quota –user-id=500 –soft-limit=0 –hard-limit=0
cl-quota –user-id=500 –soft-limit=unlimited
cl-quota –user-id=500 –soft-limit=0 –hard-limit=-1
cl-quota –user-id=958 –soft-limit=0 –hard-limit=20000 –force
✏️ Задаване на лимити на пакет:
cl-quota –package pack1 –soft-limit=5000 –hard-limit=-1
cl-quota –package pack1 –hard-limit=10000
cl-quota –package pack1 –soft-limit=default
🩺 Диагностика на потребител:
cl-quota –user-id=500 –check
# Изход:
# Quota disabled for user id 500 (home directory /home/cltest1); quotaon: Mountpoint (or device) / not found or has no quota enabled.
🔄 Синхронизация + кеш (обичайно в cron):
cl-quota -YC
Опции на cloudlinux-limits
| Опция | Описание |
| –json | Извежда данни във формат JSON |
| –lve-id <int> | Показва данни само за LVE ID |
| –username <име> | Извършва командата само за конкретен потребител |
| –reseller-name <име> | Извършва командата само за конкретен реселър |
| –reseller-id <int> | Същото като горното, но по ID |
| –all | Извършва командата за всички реселъри |
| –for-reseller <име> | Използва зададен реселър за get/set операции |
| –domain <име> | Показва данни само за конкретен домейн |
| –limits <ключове> | Определяне на конкретни лимити, напр. speed, pmem, iops и др. |
| –human-readable-numbers | Форматира PMEM и VMEM в KB/MB/GB |
| –unlimited | Задава всички лимити на неограничени |
| –default [лимити] | Нулира лимитите към стойности по подразбиране |
| `–mysql-gov <ignored | watched>` |
| `–cagefs <enabled | disabled>` |
| `–mysql-restrict <restricted | unrestricted>` |
| –mysql-unrestrict-all | Премахва ограниченията за всички потребители |
| –speed <стойност> | CPU лимит (напр. 78%) |
| –pmem <стойност> | Физическа памет (PMEM) |
| –vmem <стойност> | Виртуална памет (VMEM) |
| –nproc <стойност> | Лимит на процесите |
| –io <стойност> | I/O лимит (KB/s) |
| –iops <стойност> | Лимит на операции в секунда |
| –maxEntryProcs <стойност> | Лимит на входните процеси |
| –mysql-cpu <int> | CPU лимит за MySQL Governor |
| –mysql-io <int> | I/O лимит за MySQL Governor (MB/s) |
| –inodes <N,M> | INODE лимити: soft и hard |
| –save-all-parameters | Запазва всички параметри, дори ако са по подразбиране |
| -h, –help | Показва помощ |
🧪 Примери
🔍 Извличане на лимити
cloudlinux-limits get –json
cloudlinux-limits get –username user1 –json
cloudlinux-limits get –reseller-name res1 –json
cloudlinux-limits get –domain myapp.com –json
cloudlinux-limits get –username myapp –limits=maxEntryProcs,vmem –json
🔐 CageFS
cloudlinux-limits set –username user1 –cagefs enable –json
🛡️ MySQL Governor
cloudlinux-limits set –username user1 –mysql-gov ignored –json
cloudlinux-limits set –username user1 –mysql-restrict restricted –json
✏️ Промяна на лимити на потребител
cloudlinux-limits set –lve-id 1000 –speed 78% –io 8090 –nproc 900 –pmem 300 –vmem 800 –iops 900 –inodes 9090,8989 –maxEntryProcs 90 –mysql-cpu 30 –mysql-io 500 –json
✏️ Промяна на лимити на реселър
cloudlinux-limits set –reseller-name res1 –speed 78% –io 8090 –nproc 900 –pmem 300 –vmem 800 –iops 900 –maxEntryProcs 90 –json
🔁 Настройка на лимити за “DEFAULT” потребител
cloudlinux-limits set –lve-id DEFAULT –speed 78% –io 8090 –nproc 900 –pmem 300 –vmem 800 –iops 900 –inodes 9090,8989 –maxEntryProcs 90 –mysql-cpu 30 –mysql-io 500 –json
cloudlinux-limits set –lve-id DEFAULT –speed 48% –io 8990 –nproc 900 –pmem 300 –vmem 800 –iops 900 –maxEntryProcs 90 –for-reseller res1 –json
🔃 Нулиране на лимити към пакета по подразбиране
cloudlinux-limits set –username user1 –default all –json
cloudlinux-limits set –username r1user1 –default all –for-reseller res1 –json
🚫 Нулиране на лимити към “неограничени”
cloudlinux-limits set –username user1 –unlimited –json
cloudlinux-limits set –username r1user1 –unlimited –for-reseller res1 –json
🧩 Активиране/деактивиране на лимити за реселър
cloudlinux-limits enable-reseller-limits –reseller-name res1 –json
cloudlinux-limits disable-reseller-limits –reseller-name res1 –json