Количество юнитов полученное через systemctl list-units будет всегда меньше полученного через systemctl list-unit-files
Команда для получения всех юнитов с параметрами для приложения:
systemctl --property=Names,Description,LoadState,ActiveState,SubState,UnitFileState,FragmentPath,ActiveEnterTimestampMonotonic,InactiveEnterTimestampMonotonic --no-pager --all --no-legend show -- $(echo"$(systemctl list-units --no-pager --all --plain --no-legend | sed -E 's/(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(.*)/\1/')$(systemctl list-unit-files --no-pager --no-legend | sed -E 's/(\S+)\s+(\S+)\s+(.*)/\1/')"| sed "/\@\./d"| sort -u)
Замечания:
Сейчас указан перечнь получаемых значений:
Names - Имя
Description - Описание
LoadState - Статус загрузки (not-found/loaded)
ActiveState - Статус активности (inactive/active)
SubState - Статус работы (running/active/plugged/waiting/ded/abandoned/failed/exited)
UnitFileState - Автостарт (enable/disable)
FragmentPath - Файл
ActiveEnterTimestampMonotonic - Время активации
InactiveEnterTimestampMonotonic - Время деактивации
Пустая строка разделитель между Юнитами
Алгоритм работы приложения по заполнению таблицы юнитов Слайд 01:
Первое заполнение таблицы, выполняем команду 4.
Парсим результат и заполняем внутреннюю таблицу
Каждое изменение любого юнита выполняем запрос на изменяемый юнит: systemctl --property=Names,Description,LoadState,ActiveState,SubState,UnitFileState,FragmentPath,ActiveEnterTimestampMonotonic,InactiveEnterTimestampMonotonic --no-pager --all --no-legend show -- veyon.service
Для заполнения таблицы юнитов необходимы:
1. Перечень всех юнитов - команда получения списка
2. Фильтр по типу модуля: - фильтр юнитов по имени юнита
Все описаны в https://gitea.ublinux.ru/Artwork_Applications/design-ubl-settings-services/issues/5
- service
- mount
- swap
- socket
- target
- device
- automount
- timer
- path
- slice
- scope
3. Фильтр "Неактивный/Активный" - фильтр юнитов со статусом `inactive/active`
4. Фильтр "Не загружен/Загружен" - фильтр юнитов со статусом `not-found/loaded`
5. Фильтр "Настройка в системе" : "Автостарт" - фильтр юнитов со статусом `enabled`
6. Фильтр "Настройка в системе" : "Запущен" - фильтр юнитов со статусом ACTIVE `active/inactive/failed`
7. Фильтр "Настройка в системе" : "Юнит" - фильтр юнитов со статусом SUB `running/active/plugged/waiting/ded/abandoned/failed/exited`
8. Фильтр "Юнит" - Имя юнита
Команды:
1. Получить список юнитов с колонками:
- UNIT (Имя юнита)
- LOAD (Правильность загрузки юнита. Статус `loaded/not-found`)
- ACTIVE (Состояние загрузки юнита, обобщённый статус `active/inactive/failed`)
- SUB (Состояние загрузки юнита, подробный статус `running/active/plugged/waiting/ded/abandoned/failed/exited`)
- DESCRIPTION (Описание юнита)
```bash
$ systemctl list-units --no-pager --all --plain --no-legend |sed -E 's/(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(.*)/\1;\2;\3;\4;\5/'
```
2. Получить список файлов юнитов с колонками:
- UNIT FILE (Имя файла юнита)
- STATE (Состояние `enabled/disabled/static/transient/alias/indirect/masked/много других`)
- PRESET (Поставляется в конфигурации системы)
```bash
$ systemctl list-unit-files --no-pager --all --no-legend |sed -E 's/(\S+)\s+(\S+)\s+(.*)/\1;\2;\3/'
```
3. Замечания к командам 1. 2.:
- Количество юнитов полученное через `systemctl list-units` будет всегда меньше полученного через `systemctl list-unit-files`
4. Команда для получения всех юнитов с параметрами для приложения:
```bash
systemctl --property=Names,Description,LoadState,ActiveState,SubState,UnitFileState,FragmentPath,ActiveEnterTimestampMonotonic,InactiveEnterTimestampMonotonic --no-pager --all --no-legend show -- $(echo "$(systemctl list-units --no-pager --all --plain --no-legend | sed -E 's/(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(.*)/\1/')$(systemctl list-unit-files --no-pager --no-legend | sed -E 's/(\S+)\s+(\S+)\s+(.*)/\1/')" | sed "/\@\./d" | sort -u)
```
5. Замечания:
- Сейчас указан перечнь получаемых значений:
Names - Имя
Description - Описание
LoadState - Статус загрузки `(not-found/loaded)`
ActiveState - Статус активности `(inactive/active)`
SubState - Статус работы `(running/active/plugged/waiting/ded/abandoned/failed/exited)`
UnitFileState - Автостарт `(enable/disable)`
FragmentPath - Файл
ActiveEnterTimestampMonotonic - Время активации
InactiveEnterTimestampMonotonic - Время деактивации
- Пустая строка разделитель между Юнитами
6. Алгоритм работы приложения по заполнению таблицы юнитов Слайд 01:
- Первое заполнение таблицы, выполняем команду 4.
- Парсим результат и заполняем внутреннюю таблицу
- Каждое изменение любого юнита выполняем запрос на изменяемый юнит: `systemctl --property=Names,Description,LoadState,ActiveState,SubState,UnitFileState,FragmentPath,ActiveEnterTimestampMonotonic,InactiveEnterTimestampMonotonic --no-pager --all --no-legend show -- veyon.service`
- Изменение полученные вносим во внутреннюю таблицу
7. Описание соответствий графических элементов:
- https://gitea.ublinux.ru/Artwork_Applications/design-ubl-settings-services/issues/33
Для заполнения таблицы юнитов необходимы:
Все описаны в #5
inactive/activenot-found/loadedenabledactive/inactive/failedrunning/active/plugged/waiting/ded/abandoned/failed/exitedКоманды:
loaded/not-found)active/inactive/failed)running/active/plugged/waiting/ded/abandoned/failed/exited)enabled/disabled/static/transient/alias/indirect/masked/много других)Замечания к командам 1. 2.:
systemctl list-unitsбудет всегда меньше полученного черезsystemctl list-unit-filesКоманда для получения всех юнитов с параметрами для приложения:
Замечания:
Names - Имя
Description - Описание
LoadState - Статус загрузки
(not-found/loaded)ActiveState - Статус активности
(inactive/active)SubState - Статус работы
(running/active/plugged/waiting/ded/abandoned/failed/exited)UnitFileState - Автостарт
(enable/disable)FragmentPath - Файл
ActiveEnterTimestampMonotonic - Время активации
InactiveEnterTimestampMonotonic - Время деактивации
Алгоритм работы приложения по заполнению таблицы юнитов Слайд 01:
systemctl --property=Names,Description,LoadState,ActiveState,SubState,UnitFileState,FragmentPath,ActiveEnterTimestampMonotonic,InactiveEnterTimestampMonotonic --no-pager --all --no-legend show -- veyon.serviceОписание соответствий графических элементов: