Февруари 24, 2026

Command-line tools (CLI)

 

Работа с 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 основни точки:

  1. Монтирани точки – дали директориите от cagefs.mp реално съществуват

  2. users.enabled е директория – проверява дали /etc/cagefs/users.enabled не е грешно създаден файл

  3. users.disabled е директория – същото, но за /etc/cagefs/users.disabled

  4. disable.etcfs съществува – проверява ключов файл в конфигурацията

  5. Двама потребители могат да влязат в CageFS – тества се логване с whoami

  6. Файловете с proxy команди са валидни – проверява се синтаксисът им

  7. Пер-потребителски точки за монтиране са правилни – чете се съдържанието на 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

}

 

📌 Примери за използване:

  1. Покажи топ 100 потребители по CPU натоварване:

 

cloudlinux-top –json –order-by cpu –max=100

 

  1. Покажи текущото натоварване само на потребител ivan:

 

cloudlinux-top –json -u ivan

 

  1. Покажи ресурсите на реселър hostingbg и неговите клиенти:

 

cloudlinux-top –json –for-reseller=hostingbg

 

  1. Покажи само информация за дисково 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 доклад и го праща на админ имейл

Много удобно за регулярни проверки. За целта:

  1. Увери се, че EMAIL= в /etc/sysconfig/cloudlinux е настроен.

  2. Или, че контролният панел връща имейл на админа.

 

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 email notifyCharset utf-8/null Set charset used in email
faultsNotification email 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