Справочник команд утилиты lsctl

lsctl apply-all

  • Описание

    Передать и применить значения всех лимитов из базы данных утилиты lsctl службе управления лимитами klsd.

  • Обязательные параметры

    Нет.

  • Дополнительные параметры

    • --json — сформировать вывод утилиты о результате исполнения в json-формате;

    • --nowait — не ждать снятия блокировки файла базы данных, если файл заблокирован, то завершить работу lsctl немедленно.

  • Вывод на консоль

    Пусто или сообщение об ошибке.

  • Результат

    0 — в случае успеха, не 0 — в случае ошибки.

  • Примеры использования команды

    $ sudo lsctl apply-all
    
    $ sudo lsctl apply-all --json
    
  • Результат работы в случае ошибки

    $ sudo lsctl apply-all
    init error: -111
    
    $ sudo lsctl apply-all --json
    {
      "err": "init error: -111",
      "data": null
    }
    

lsctl apply и lsctl apply-user

  • Описание

    Передать и применить значения указанного в параметре --lsid LS-контейнера из базы данных утилиты lsctl службе управления лимитами klsd.

  • Обязательные параметры

    • --lsid — номер LS-контейнера больше 0 `` (для команды ``lsctl apply);

    • --username — имя пользователя в системе, uid которого будет использован в качестве номера LS-контейнера, кроме root (для команды lsctl apply-user).

  • Дополнительные параметры

    • --json — сформировать вывод утилиты о результате исполнения в json-формате;

    • --nowait — не ждать снятия блокировки файла базы данных, если файл заблокирован, то завершить работу lsctl немедленно.

  • Вывод на консоль

    Пусто или сообщение об ошибке.

  • Результат

    0 — в случае успеха, не 0 — в случае ошибки.

  • Примеры использования команды

    $ sudo lsctl apply --lsid=1000
    
    $ sudo lsctl apply --lsid=1000 --json
    
    $ sudo lsctl apply-user --username=test1
    
  • Результат работы в случае ошибки

    $ sudo lsctl apply --lsid=1000
    init error: -111
    
    $ sudo lsctl apply --lsid=1000 --json
    {
      "err": "init error: -111",
      "data": null
    }
    

lsctl set и lsctl set-user

  • Описание

    Сохранить в базу данных lsctl, а также передать службе klsd значения лимитов для указанного LS-контейнера.

  • Обязательные параметры

    • --lsid — номер LS-контейнера больше или равный 0 (для команды lsctl set)

    • --username — имя пользователя в системе, uid которого будет использован в качестве номера LS-контейнера, кроме root (для команды lsctl set-user)

  • Дополнительные параметры

    • --cpu — значение лимита для процессора, 100% — одно ядро, 200% — два ядра и т.д., если задано unlimited, то не лимитировать данный параметр;

    • --pmem — значение лимита памяти для контейнера, в Байтах, Килобайтах или Гигабайтах (1G, 5000K, 200M, 1024000000), если задано unlimited, то не лимитировать данный параметр;

    • --smem — значение лимита файла подкачки для контейнера, в Байтах, Килобайтах или Гигабайтах (1G, 5000K, 200M, 1024000000), если задано unlimited, то не лимитировать данный параметр;

    • --nproc — разрешённое число процессов одновременно существующих в LS, если задано unlimited, то не лимитировать данный параметр;

    • --json — сформировать вывод утилиты о результате исполнения в json-формате;

    • --nowait — не ждать снятия блокировки файла базы данных, если файл заблокирован, то завершить работу lsctl немедленно;

    • --unlimited — отключить лимитирование по всем параметрам для LS;

    • --force-save — запретить изменение унаследованных от default значений при изменении значений default.

  • Вывод на консоль

    Пусто или сообщение об ошибке.

  • Результат

    0 — в случае успеха, не 0 — в случае ошибки.

  • Примеры использования команды

    $ sudo lsctl set --lsid=1020 --cpu=unlimited --pmem=4G
    
    $ sudo lsctl set --lsid=0 --cpu=200% --pmem=4G --smem=2G --nproc=48
    
    $ sudo lsctl set-user --username=test1 --cpu=25% --force-save
    
    $ sudo lsctl set --lsid=1020 --unlimited
    
  • Результат работы в случае ошибки

    $ sudo lsctl set --lsid=1020 --cpu=unlimited --pmem=4G
    init error: -111
    
    $ sudo lsctl set --lsid=1020 --cpu=unlimited --pmem=4G --json
    {
      "err": "init error: -111",
      "data": null
    }
    

lsctl list и lsctl list-user

  • Описание

    Отобразить список установленных лимитов в базе данных утилиты lsctl LS-для контейнеров. Для команды lsctl list выводятся номера контейнеров, а для команды lsclt list-user выводятся имена пользователей системы вместо id LS-контейнера.

  • Обязательные параметры

    Нет.

  • Дополнительные параметры

    • --json — сформировать вывод утилиты о результате исполнения в json-формате;

    • --nowait — не ждать снятия блокировки файла базы данных, если файл заблокирован, то завершить работу lsctl немедленно;

    • --human — вывод данных в формате для чтения с форматированием: 0 — отключить, 1 — вывод таблицы без сворачивания больших чисел, 2 — вывод таблицы со сворачиванием больших чисел. Значение по умолчанию — 0.

  • Вывод на консоль

    Сообщение об ошибке или список значений в формате:

    ID      CPU     PMEM            SMEM            NPROC
    0       150     1073741824      2147483648      32
    1000    150     1073741824      2147483648      32
    1003    150     1073741824      2147483648      32
    1004    150     1073741824      2147483648      16
    1005    150     1073741824      2147483648      16
    1006    0       1073741824      2147483648      32
    1007    200     1073741824      1073741824      32
    1009    150     1073741824      2147483648      32
    1020    0       4294967296      2147483648      32
    

    Где:

    • ID — номер LS-контейнера или имя пользователя системы (если такой существует);

    • CPU — лимит cpu в %;

    • PMEM — лимит памяти в Байтах;

    • SMEM — лимит файла подкачки в Байтах;

    • NPROC — лимит процессов в LS-контейнере.

    Вывод lsctl list-user

    ID         CPU     PMEM            SMEM            NPROC
    default    150     1073741824      2147483648      32
    alexey     150     1073741824      2147483648      32
    test3      150     1073741824      2147483648      32
    user1      150     1073741824      2147483648      16
    user2      150     1073741824      2147483648      16
    testuser1  0       1073741824      2147483648      32
    1007       200     1073741824      1073741824      32
    1009       150     1073741824      2147483648      32
    1020       0       4294967296      2147483648      32
    

    Вывод json:

    {
      "err": "",
      "data": [
        {
          "Id": 0,
          "Cpu": 150,
          "Pmem": 1073741824,
          "Smem": 2147483648,
          "Nproc": 32,
          "Uname": "default"
        },
        {
          "Id": 1000,
          "Cpu": 150,
          "Pmem": 1073741824,
          "Smem": 2147483648,
          "Nproc": 32,
          "Uname": "alexey"
        },
       ...
      ]
    }
    

    Важно

    Значение 0 в выводе параметра CPU=0 или PMEM=0 означает, что данный параметр имеет значение unlimited, т.е. не лимитируется.

  • Результат

    0 — в случае успеха, не 0 — в случае ошибки.

  • Примеры использования команды

    $ sudo lsctl list
    
    $ sudo lsctl list-user
    
    $ sudo lsctl list --json
    

    Пример вывода в виде, удобном для чтения (--human=1 или --human=2).

    $ sudo lsctl list --human=1
    ID    | CPU        | PMEM        | SMEM        | NPROC
    ----- | ---------- | ----------- | ----------- | ----------
    0     | 50         | 2147483648  | 1073741824  | 64
    1001  | 80         | 4294967296  | 2147483648  | 24
    1002  | unlimited  | unlimited   | unlimited   | unlimited
    
    $ sudo lsctl list --human=2
    ID    | CPU        | PMEM       | SMEM       | NPROC
    ----- | ---------- | ---------- | ---------- | ----------
    0     | 50%        | 2.0GiB     | 1.0GiB     | 64
    1001  | 80%        | 4.0GiB     | 2.0GiB     | 24
    1002  | unlimited  | unlimited  | unlimited  | unlimited
    
  • Результат работы в случае ошибки

    $ sudo lsctl list
    init error: -111
    
    $ sudo lsctl list --json
    {
      "err": "init error: -111",
      "data": null
    }
    

lsctl delete и lsctl delete-user

  • Описание

    Удалить значения лимитов LS-контейнера, указанного в команде, и удалить сведения о лимитах lsid из базы данных.

  • Обязательные параметры

    • --lsid — номер LS-контейнера больше 0 (для команды lsctl delete);

    • --username — имя пользователя в системе, uid которого будет использован в качестве номера LS-контейнера, кроме root (для команды lsctl delete-user).

  • Дополнительные параметры

    • --json — сформировать вывод утилиты о результате исполнения в json-формате;

    • --nowait — не ждать снятия блокировки файла базы данных, если файл заблокирован, то завершить работу lsctl немедленно.

  • Вывод на консоль

    Cообщение об ошибке или пусто.

  • Результат

    0 — в случае успеха, не 0 — в случае ошибки.

  • Примеры использования команды

    $ sudo lsctl delete --lsid=1006
    
    $ sudo lsctl delete-user --username=test1
    
    $ sudo lsctl delete --lsid=1000 --json
    
  • Результат работы в случае ошибки

    $ sudo lsctl delete --lsid=1006
    init error: -111
    
    $ sudo lsctl delete --lsid=1006 --json
    {
      "err": "init error: -111",
      "data": null
    }
    
  • Дополнительные пояснения о работе команды

    Ниже показан вывод установленных лимитов для default и 1006:

    $ sudo lsctl list
    ID      CPU     PMEM            SMEM            NPROC
    0       150     1073741824      2147483648      32
    1006    0       1073741824      2147483648      32
    
    $ sudo lsctl climits
    ID      CPU     PMEM            SMEM            NPROC
    1006    0       1073741824      2147483648      32
    

    Если вызвать команду delete, то она сбросит лимиты LS-контейнера к default:

    $ sudo lsctl delete --lsid=1006
    
    $ sudo lsctl list
    ID      CPU     PMEM            SMEM            NPROC
    0       150     1073741824      2147483648      32
    
    $ sudo lsctl climits
    ID      CPU     PMEM    SMEM    NPROC
    

lsctl climits и lsctl climits-user

  • Описание

    Отобразить список загруженных на текущий момент и отслеживаемых службой klsd LS-контейнеров. Этот список может отличаться от списка, выводимого командой lsctl list. Для команды lsctl climits выводятся номера контейнеров, а для команды lsclt climits-user выводятся имена пользователей системы вместо id LS-контейнера.

  • Обязательные параметры

    Нет.

  • Дополнительные параметры

    • --json — сформировать вывод утилиты о результате исполнения в json-формате;

    • --nowait — не ждать освобождения блокировки к файлу базы данных, если файл заблокирован, то завершить работу lsctl немедленно;

    • --lsid — задаёт номер LS-контейнера для отображения. Если данный параметр не задан, то отображаются все доступные, если номер задан, то отображается только информация по указанному контейнеру (для команды lsctl climits);

    • --username — задаёт имя пользователя, uid которого соответствуют LS-контейнеру для отображения. Если данный параметр не задан, то отображаются все доступные, если номер задан, то отображается только информация по указанному контейнеру (для команды lsctl climits-user);

    • --human — печать данных в формате, удобном для чтения, с форматированием: 0 — отключить, 1 — печать таблицы без сворачивания больших чисел, 2 — печать таблицы со сворачиванием больших чисел. Значение по умолчанию — 0.

  • Вывод на консоль

    Сообщение об ошибке или список значений в формате:

    ID      CPU     PMEM            SMEM            NPROC
    1000    150     1073741824      2147483648      32
    1003    150     1073741824      2147483648      32
    1004    150     1073741824      2147483648      16
    1005    150     1073741824      2147483648      16
    1006    150     1073741824      2147483648      32
    1007    200     1073741824      1073741824      32
    1009    150     1073741824      2147483648      32
    

    Где:

    • ID — номер LS-контейнера или имя пользователя системы (если такой существует);

    • CPU — лимит cpu в %;

    • PMEM — лимит памяти в Байтах;

    • SMEM — лимит файла подкачки в Байтах;

    • NPROC — лимит процессов в LS-контейнере.

    Вывод lsctl climits-user --username=test3:

    ID      CPU     PMEM            SMEM            NPROC
    test3   150     1073741824      2147483648      32
    

    Вывод json командой lsctl climits-user --username=test3 --json:

    {
      "err": "",
      "data": [
        {
          "Id": 1003,
          "Cpu": 150,
          "Pmem": 1073741824,
          "Smem": 2147483648,
          "Nproc": 32,
          "Uname": "test3"
        }
      ]
    }
    

    Важно

    Значение 0 в выводе параметра CPU=0 или PMEM=0 означает, что данный параметр имеет значение unlimited, т.е. не лимитируется.

  • Результат

    0 — в случае успеха, не 0 — в случае ошибки.

  • Примеры использования команды

    $ sudo lsctl climits-user --username=test3 --json
    
    $ sudo lsctl climits
    
    $ sudo lsctl climits-user
    
    $ sudo lsctl climits --lsid=1000
    

    Пример вывода в виде, удобном для чтения (--human=1 или --human=2):

    $ sudo lsctl climits --human=1
    ID    | CPU        | PMEM        | SMEM        | NPROC
    ----- | ---------- | ----------- | ----------- | ----------
    1001  | 80         | 4294967296  | 2147483648  | 24
    1002  | unlimited  | unlimited   | unlimited   | unlimited
    
    $ sudo lsctl climits --human=2
    ID    | CPU        | PMEM       | SMEM       | NPROC
    ----- | ---------- | ---------- | ---------- | ----------
    1001  | 80%        | 4.0GiB     | 2.0GiB     | 24
    1002  | unlimited  | unlimited  | unlimited  | unlimited
    
  • Результат работы в случае ошибки

    $ sudo lsctl climits
    init error: -111
    
    $ sudo lsctl climits --json
    {
      "err": "init error: -111",
      "data": null
    }
    

lsctl destroy

  • Описание

    Удалить LS-контейнер и завершить все процессы, которые обслуживает данный контейнер, но в базе останутся лимиты данного LS-контейнера. Восстановить контейнер можно командой lsctl apply-all или lsctl apply --lsid=N (где N — номер контейнера).

  • Обязательные параметры

    • --lsid — номер LS-контейнера больше 0.

  • Дополнительные параметры

    • --json — сформировать вывод утилиты о результате исполнения в json-формате;

    • --nowait — не ждать снятия блокировки файла базы данных, если файл заблокирован, то завершить работу lsctl немедленно;

  • Вывод на консоль

    Сообщение об ошибке или пусто.

  • Результат

    0 — в случае успеха, не 0 — в случае ошибки.

  • Примеры использования команды

    $ sudo lsctl destroy --lsid=1006
    
    $ sudo lsctl destroy --lsid=1000 --json
    
  • Результат работы в случае ошибки

    $ sudo lsctl destroy --lsid=1006
    init error: -111
    
    $ sudo lsctl destroy --lsid=1006 --json
    {
      "err": "init error: -111",
      "data": null
    }
    
  • Дополнительные пояснения о работе команды

    Ниже показан вывод установленных лимитов для default и 1009:

    $ sudo lsctl list
    ID      CPU     PMEM            SMEM            NPROC
    0       150     1073741824      2147483648      32
    1009    150     1073741824      2147483648      32
    
    $ sudo lsctl climits
    ID      CPU     PMEM            SMEM            NPROC
    1009    150     1073741824      2147483648      32
    

    Если вызвать команду destroy, то lsctl list не изменится, изменится вывод текущих загруженных LS-контейнеров:

    $ sudo lsctl destroy --lsid=1009
    
    $ sudo lsctl list
    ID      CPU     PMEM            SMEM            NPROC
    0       150     1073741824      2147483648      32
    1009    150     1073741824      2147483648      32
    
    $ sudo lsctl climits
    ID      CPU     PMEM    SMEM    NPROC
    

    LS-контейнер исчез, остались только его настройки в базе lsctl, которые восстановятся либо после перезагрузки службы klsd, либо при вызове команды lsctl apply-all или lsctl apply --lsid=1009.

lsctl destroy-all

  • Описание

    Команда, аналогичная lsctl destroy, но удаляет все загруженные LS-контейнеры. Настройки в базе не удаляются.

  • Обязательные параметры

    Нет.

  • Дополнительные параметры

    • --json — сформировать вывод утилиты о результате исполнения в json-формате;

    • --nowait — не ждать снятия блокировки файла базы данных, если файл заблокирован, то завершить работу lsctl немедленно.

  • Вывод на консоль

    Сообщение об ошибке или пусто.

  • Результат

    0 — в случае успеха, не 0 — в случае ошибки.

  • Примеры использования команды

    $ sudo lsctl destroy-all
    
    $ sudo lsctl destroy-all --json
    
  • Результат работы в случае ошибки

    $ sudo lsctl destroy-all
    init error: -111
    
    $ sudo lsctl destroy-all --json
    {
      "err": "init error: -111",
      "data": null
    }
    

lsctl apply-many

  • Описание

    Команда, аналогичная lsctl apply --lsid=.... Передать и применить значения указанного LS-контейнера из базы данных утилиты lsctl службе управления лимитами klsd. Но вместо --lsid список нужных LS-контейнеров команда принимает через stdin. Список lsid должен разделяться символом переноса строки.

  • Обязательные параметры

    Нет.

  • Дополнительные параметры

    • --json — сформировать вывод утилиты о результате исполнения в json-формате;

    • --nowait — не ждать снятия блокировки файла базы данных, если файл заблокирован, то завершить работу lsctl немедленно.

  • Примеры использования команды

    $ sudo lsctl climits --human=2
    ID  | CPU  | PMEM  | SMEM  | NPROC
    --- | ---- | ----- | ----- | ------
    
    $ sudo echo -e "1001\n1002" | lsctl apply-many
    
    $ sudo lsctl climits --human=2
    ID    | CPU        | PMEM       | SMEM       | NPROC
    ----- | ---------- | ---------- | ---------- | ----------
    1001  | 80%        | 4.0GiB     | 2.0GiB     | 24
    1002  | unlimited  | unlimited  | unlimited  | unlimited
    
  • Результат работы в случае ошибки

    $ sudo echo -e "1001\n1002" | lsctl apply-many
    init error: -111
    
    $ sudo echo -e "1001\n1002" | lsctl apply-many --json
    {
      "err": "init error: -111",
      "data": null
    }
    

lsctl destroy-many

  • Описание

    Команда, аналогичная lsctl destroy --lsid=.... Удалить LS-контейнер и завершить все процессы, которые обслуживает данный контейнер. В базе лимиты данного LS-контейнера не удаляются. Вместо --lsid список нужных LS-контейнеров команда принимает через stdin. Список lsid должен разделяться символом переноса строки.

  • Обязательные параметры

    Нет.

  • Дополнительные параметры

    • --json — сформировать вывод утилиты о результате исполнения в json-формате;

    • --nowait — не ждать снятия блокировки файла базы данных, если файл заблокирован, то завершить работу lsctl немедленно.

  • Примеры использования команды

    $ sudo lsctl climits --human=2
    ID    | CPU        | PMEM       | SMEM       | NPROC
    ----- | ---------- | ---------- | ---------- | ----------
    1001  | 80%        | 4.0GiB     | 2.0GiB     | 24
    1002  | unlimited  | unlimited  | unlimited  | unlimited
    
    $ sudo echo -e "1001\n1002" | lsctl destroy-many
    
    $ sudo lsctl climits --human=2
    ID  | CPU  | PMEM  | SMEM  | NPROC
    --- | ---- | ----- | ----- | ------
    
  • Результат работы в случае ошибки

    $ sudo echo -e "1001\n1002" | lsctl destroy-many
    init error: -111
    
    $ sudo echo -e "1001\n1002" | lsctl destroy-many --json
    {
      "err": "init error: -111",
      "data": null
    }
    

lsctl export-limits

  • Описание

    Сохранить базу данных с лимитами в json-формате в файле.

  • Обязательные параметры

    Путь к файлу. Если путь не задан, то лимиты сохранятся в файле export-database.json в текущем каталоге, в котором вызвана команда.

  • Дополнительные параметры

    • --json — сформировать вывод утилиты о результате исполнения в json-формате;

    • --nowait — не ждать снятия блокировки файла базы данных, если файл заблокирован, то завершить работу lsctl немедленно.

  • Вывод на консоль

    Сообщение об ошибке или пусто.

  • Результат

    0 — в случае успеха, не 0 — в случае ошибки.

  • Примеры использования команды

    $ sudo lsctl export-limits
    
    $ sudo lsctl export-limits dblimit.json
    
  • Результат работы в случае ошибки

    $ sudo lsctl export-limits
    init error: -111
    
    $ sudo lsctl export-limits --json
    {
      "err": "init error: -111",
      "data": null
    }
    

lsctl import-limits

  • Описание

    Восстановить базу данных с лимитами из json-файла, сохранённого командой export-limits. Внимание! Если база данных с лимитами уже существует, то она будет удалена и полностью заменена данными из импортируемого json-файла.

    При импорте лимитов новые значения сразу же применяются к LS-контейнерам.

  • Обязательные параметры

    Путь к файлу. Если путь не задан, то лимиты сохранятся в файле import-database.json в текущем каталоге, в котором вызвана команда.

  • Дополнительные параметры

    • --json — сформировать вывод утилиты о результате исполнения в json-формате;

    • --nowait — не ждать снятия блокировки файла базы данных, если файл заблокирован, то завершить работу lsctl немедленно.

  • Вывод на консоль

    Сообщение об ошибке или пусто.

  • Результат

    0 — в случае успеха, не 0 — в случае ошибки.

  • Примеры использования команды

    $ sudo lsctl import-limits
    
    $ sudo lsctl import-limits dblimit.json
    
  • Результат работы в случае ошибки

    $ sudo lsctl import-limits
    init error: -111
    
    $ sudo lsctl import-limits --json
    {
      "err": "init error: -111",
      "data": null
    }
    

lsctl list-sessions

  • Описание

    Отобразить список активных LS-контейнеров и лидера сессий, т.е. процесс, который инициировал создание LS-контейнера.

  • Обязательные параметры

Нет.

  • Дополнительные параметры

    • --json — сформировать вывод утилиты о результате исполнения в json-формате;

    • --nowait — не ждать снятия блокировки файла базы данных, если файл заблокирован, то завершить работу lsctl немедленно;

    • --human — вывод данных в формате, удобном для чтения с форматированием: 0 — отключить, 1 — вывод таблицы без сворачивания больших чисел, 2 — вывод таблицы со сворачиванием больших чисел. Значение по умолчанию — 0.

  • Вывод на консоль

    Сообщение об ошибке или список значений в формате:

    ID      SID     SFLAGS  SNPROC  PID
    1002    1       5       0       20843
    

    Где:

    • SFLAGS, SNPROC, SID — зарезервированные системные параметры;

    • IDlsid — идентификатор LS-контейнера;

    • PID — идентификатор процесса лидера LS-контейнера, т.е. процесса, который вызвал lfs_enter.

    Примеры вывода:

    $ sudo lsctl list-sessions
    ID      SID     SFLAGS  SNPROC  PID
    1002    1       5       0       20843
    
    $ sudo lsctl list-sessions --human=1
    ID    | SID  | SFLAGS  | SNPROC  | PID
    ----- | ---- | ------- | ------- | ------
    1002  | 1    | 5       | 0       | 20843