Если выключить avahi в системе, то в таблице его невозможно найти #77

Closed
opened 1 year ago by anshn · 27 comments
anshn commented 1 year ago
Collaborator

image

Если включить, то он находится:
image

![image](/attachments/61620296-5c40-432a-8df4-4d9509754d7c) Если включить, то он находится: ![image](/attachments/07272a03-a8e9-4788-9e8d-852585f37d36)
152 KiB
170 KiB
anshn added the ошибка label 1 year ago
user-166 was assigned by anshn 1 year ago
YanTheKaller was assigned by anshn 1 year ago
Collaborator

Вот все используемые команды для получения:

#define load_services_command "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/'"

#define load_user_services_command yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ list-units --no-pager --all --plain --no-legend |sed -E 's/(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(.*)/\\1;\\2;\\3;\\4;\\5/'",NULL)

#define load_system_services_command "systemctl --system list-units --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/   */;/g' -e 's/^;//g' |cut -f1 -d';'"

#define load_enabled_command "systemctl list-unit-files --no-pager --state=enabled --all |sed -e 's/  */:/g' -e 's/ *: */:/g'|cut -f1 -d:"

#define load_launched_command "systemctl list-units --no-pager --state=active --all --no-legend|sed -e 's/^  //g' -e 's/  */:/g' |cut -f1 -d:"
Вот все используемые команды для получения: ``` #define load_services_command "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/'" #define load_user_services_command yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ list-units --no-pager --all --plain --no-legend |sed -E 's/(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(.*)/\\1;\\2;\\3;\\4;\\5/'",NULL) #define load_system_services_command "systemctl --system list-units --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/ */;/g' -e 's/^;//g' |cut -f1 -d';'" #define load_enabled_command "systemctl list-unit-files --no-pager --state=enabled --all |sed -e 's/ */:/g' -e 's/ *: */:/g'|cut -f1 -d:" #define load_launched_command "systemctl list-units --no-pager --state=active --all --no-legend|sed -e 's/^ //g' -e 's/ */:/g' |cut -f1 -d:" ```
Poster
Collaborator

После последнего применения изменений avahi не пропадает после выключения (решено):

image

Но проблема отсутствующих сервисов никуда не делась и смею предположить, что для требования "Все, Неактивные, Незагруженные" команда составляется с "list-units", когда в свою очередь она показывает только загруженные. В любом случае сейчас должны отсутствовать сервисы например:

  • mariadb.service
  • postgresql.service
  • cronie.service
  • ufw.service

Для получения (как мне кажется) достоверного списка "Все, Неактивные, Незагруженные" я использую команду:

systemctl list-unit-files --no-pager
После последнего применения изменений avahi не пропадает после выключения (решено): ![image](/attachments/88de86e9-6971-4573-a4f9-2c648114dc04) Но проблема отсутствующих сервисов никуда не делась и смею предположить, что для требования "Все, Неактивные, Незагруженные" команда составляется с "list-units", когда в свою очередь она показывает только загруженные. В любом случае сейчас должны отсутствовать сервисы например: - mariadb.service - postgresql.service - cronie.service - ufw.service Для получения (как мне кажется) достоверного списка "Все, Неактивные, Незагруженные" я использую команду: ``` systemctl list-unit-files --no-pager ```
Collaborator

По мне так сейчас всё верно работает:

Вот, avahi-dnscond выключен и его в списке действительно нет:

image

Но если нажать чекбокс "Показать неактивные", то его становится видно:

image

Но вот такой же фокус не прокатывает с крони и ufw. Это конечно нужно фиксить.

По мне так сейчас всё верно работает: Вот, avahi-dnscond выключен и его в списке действительно нет: ![image](/attachments/125db9ae-28e0-41a4-a97e-df0994e6da1a) Но если нажать чекбокс "Показать неактивные", то его становится видно: ![image](/attachments/de462f9c-710f-482a-8097-a248b03c3452) Но вот такой же фокус не прокатывает с крони и ufw. Это конечно нужно фиксить.
Collaborator

948213947c
на вкладке сервисов переделал получение данных, в первую очередь для оптимизации, но, так как я использовал иной способ получения данных для заполнения таблицы, то возможно и эта задача была решена

https://gitea.ublinux.ru/YanTheKaller/ubl-settings-services/commit/948213947c094825ca91c174c22ef754c82e5cef на вкладке сервисов переделал получение данных, в первую очередь для оптимизации, но, так как я использовал иной способ получения данных для заполнения таблицы, то возможно и эта задача была решена
anshn commented 8 months ago
Poster
Collaborator
  1. Все сервисы выводятся с путем, нормально выводятся только запущенные сервисы
    Те что с путем - стартовать не будут, т.к. криво задается имя сервиса

  2. Утилита не обрабатывает эти ошибки и без терминала не понять почему сервис не стартует. Если такой сервис запустить на старт, то:
    2.1. Будет статус "Сервис был успешно перезапущен", хотя в идеале должна быть ошибка. Но даже в таком случае, должен быть текст "Сервис был успешно запущен", т.к. идет запуск, а не перезапуск
    2.2. Галочка установится на "успешно", хотя ей по логике неоткуда брать это состояние, ни один сервис не был запущен

image

1. Все сервисы выводятся с путем, нормально выводятся только запущенные сервисы Те что с путем - стартовать не будут, т.к. криво задается имя сервиса 2. Утилита не обрабатывает эти ошибки и без терминала не понять почему сервис не стартует. Если такой сервис запустить на старт, то: 2.1. Будет статус "Сервис был успешно перезапущен", хотя в идеале должна быть ошибка. Но даже в таком случае, должен быть текст "Сервис был успешно запущен", т.к. идет запуск, а не перезапуск 2.2. Галочка установится на "успешно", хотя ей по логике неоткуда брать это состояние, ни один сервис не был запущен ![image](/attachments/f08cf22a-1690-4487-915a-6de626cb4713)
313 KiB
Collaborator
https://gitea.ublinux.ru/YanTheKaller/ubl-settings-services/commit/d21be8d136d36b5549b49436962bdf2945083c7f
anshn commented 8 months ago
Poster
Collaborator

Вот это еще не решено:

2.1. При запуске юнита будет статус "Сервис был успешно перезапущен", хотя в таком случае, должен быть текст "Сервис был успешно запущен", т.к. идет запуск, а не перезапуск

Вот это еще не решено: 2.1. При запуске юнита будет статус "Сервис был успешно перезапущен", хотя в таком случае, должен быть текст "Сервис был успешно запущен", т.к. идет **запуск**, а не перезапуск
Collaborator
https://gitea.ublinux.ru/YanTheKaller/ubl-settings-services/commit/87d3fcac422214a6043567bb7d45eb896d91ee5b
anshn commented 8 months ago
Poster
Collaborator

Проверила, работает.

Остается открытым вопрос с неправильным отображением галочки "Автостарт". На примере сервиса "veyon" автостарт выключен, однако из-за его "loaded" - в утилите включена галочка на "автостарт".

Необходима доработка/переработка команд получения, чтобы в галку "автостарт" лез enable/disable, а не loaded

# для тех кто enabled
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/'
# для незагруженных
systemctl list-unit-files --no-pager --all --plain --no-legend |sed -E 's/(\S+)\s+(\S+)\s+(\S+)(.*)/\1/'

image

Проверила, работает. Остается открытым вопрос с неправильным отображением галочки "Автостарт". На примере сервиса "veyon" автостарт выключен, однако из-за его "loaded" - в утилите включена галочка на "автостарт". Необходима доработка/переработка команд получения, чтобы в галку "автостарт" лез enable/disable, а не loaded ```bash # для тех кто enabled 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/' # для незагруженных systemctl list-unit-files --no-pager --all --plain --no-legend |sed -E 's/(\S+)\s+(\S+)\s+(\S+)(.*)/\1/' ``` ![image](/attachments/0ced87bd-fbc2-4616-9a08-d7f169f8ebe3)
243 KiB
Owner

Остается открытым вопрос с неправильным отображением галочки "Автостарт". На примере сервиса "veyon" автостарт выключен, однако из-за его "loaded" - в утилите включена галочка на "автостарт".

Необходима доработка/переработка команд получения, чтобы в галку "автостарт" лез enable/disable, а не loaded

# для тех кто enabled
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/'
# для незагруженных
systemctl list-unit-files --no-pager --all --plain --no-legend |sed -E 's/(\S+)\s+(\S+)\s+(\S+)(.*)/\1/'

systemctl list-unit-files - Это команда вывести список всех юнит файлов в системе

> Остается открытым вопрос с неправильным отображением галочки "Автостарт". На примере сервиса "veyon" автостарт выключен, однако из-за его "loaded" - в утилите включена галочка на "автостарт". > > Необходима доработка/переработка команд получения, чтобы в галку "автостарт" лез enable/disable, а не loaded > ```bash > # для тех кто enabled > 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/' > # для незагруженных > systemctl list-unit-files --no-pager --all --plain --no-legend |sed -E 's/(\S+)\s+(\S+)\s+(\S+)(.*)/\1/' > ``` systemctl list-unit-files - Это команда вывести список всех юнит файлов в системе
Owner
1 ✗ amid@amid-pc:~$ systemctl stop veyon
0 ✓ amid@amid-pc:~$ 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/' | grep veyon
1 ✗ amid@amid-pc:~$ 
1 ✗ amid@amid-pc:~$ systemctl start veyon
0 ✓ amid@amid-pc:~$ 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/' | grep veyon
veyon.service;loaded;active;running;Veyon Service
0 ✓ amid@amid-pc:~$ 

Вроде всё верно работает, не понял, что не работает ?

```bash 1 ✗ amid@amid-pc:~$ systemctl stop veyon 0 ✓ amid@amid-pc:~$ 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/' | grep veyon 1 ✗ amid@amid-pc:~$ ``` ```bash 1 ✗ amid@amid-pc:~$ systemctl start veyon 0 ✓ amid@amid-pc:~$ 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/' | grep veyon veyon.service;loaded;active;running;Veyon Service 0 ✓ amid@amid-pc:~$ ``` Вроде всё верно работает, не понял, что не работает ?
Owner

может быть вы не верно понимаете работу команд:

Команда:

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/'

Выводит все сервисы которые enabled и статусы запущены или остановлены.

может быть вы не верно понимаете работу команд: Команда: ```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/' ``` Выводит все сервисы которые `enabled` и статусы запущены или остановлены.
anshn commented 8 months ago
Poster
Collaborator

Непонятно почему с самого начала непонятно.

  1. Вот я через утилиту поставила "автостарт" и "запуск"
  2. Потом убрала галку с "автостарт", перезагрузила список нажатием кнопки "обновить"
  3. Все равно вижу галку "автостарт", понять ничего не могу, убирала же галку
  4. Лезу в вывод systemctl и вижу что "disabled", но галка в утилите стоит

image

Непонятно почему с самого начала непонятно. 1. Вот я через утилиту поставила "автостарт" и "запуск" 2. Потом убрала галку с "автостарт", перезагрузила список нажатием кнопки "обновить" 3. Все равно вижу галку "автостарт", понять ничего не могу, убирала же галку 4. Лезу в вывод systemctl и вижу что "disabled", но галка в утилите стоит ![image](/attachments/bf36579e-5699-4f78-a2f4-eece6a770a58)
Owner

Косяк в утилите значит

Косяк в утилите значит
Collaborator

может быть вы не верно понимаете работу команд:

Команда:

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/'

Выводит все сервисы которые enabled и статусы запущены или остановлены.

image

Убрал галку автостарта, из вывода команды veyon никуда не делся

> может быть вы не верно понимаете работу команд: > > Команда: > ```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/' > ``` > Выводит все сервисы которые `enabled` и статусы запущены или остановлены. > > ![image](/attachments/69c92318-d5a6-4805-ba0f-2a6035e19f25) Убрал галку автостарта, из вывода команды veyon никуда не делся
Collaborator

может быть вы не верно понимаете работу команд:

Команда:

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/'

Выводит все сервисы которые enabled и статусы запущены или остановлены.

image

Убрал галку автостарта, из вывода команды veyon никуда не делся

> может быть вы не верно понимаете работу команд: > > Команда: > ```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/' > ``` > Выводит все сервисы которые `enabled` и статусы запущены или остановлены. > > ![image](/attachments/69c92318-d5a6-4805-ba0f-2a6035e19f25) Убрал галку автостарта, из вывода команды veyon никуда не делся
Owner

Всё верно выводит, что не так???
Команда:

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/'

Вывод:

  1. Вывод всех юнитов которые включены, т.е. имеют статус is-enabled
  2. Вывод всех юнитов которые запущены, т.е. имеют статус is-active
  3. Вывод всех юнитов которые включены и запущены, т.е. имеют статус is-enabled и is-active
  4. При других условиях в выводе не будет юнита

Напиши конкретно, что ты ожидаешь от команды ?
Напиши конкретно, что ты хочешь получить ?

Всё верно выводит, что не так??? Команда: ```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/' ``` Вывод: 1. Вывод всех юнитов которые включены, т.е. имеют статус `is-enabled` 2. Вывод всех юнитов которые запущены, т.е. имеют статус `is-active` 3. Вывод всех юнитов которые включены и запущены, т.е. имеют статус `is-enabled` и `is-active` 3. При других условиях в выводе не будет юнита Напиши конкретно, что ты ожидаешь от команды ? Напиши конкретно, что ты хочешь получить ?
Owner
Решение в https://gitea.ublinux.ru/Artwork_Applications/design-ubl-settings-services/issues/32
Collaborator
https://gitea.ublinux.ru/YanTheKaller/ubl-settings-services/commit/63c3eadac36f541e839c1ff305dbf9e745f09383
anshn commented 7 months ago
Poster
Collaborator

Ничего не поменялось, все еще галка "Автостарт", когда автостарт выключен:

image

Ничего не поменялось, все еще галка "Автостарт", когда автостарт выключен: ![image](/attachments/05ab927f-474c-4020-9d9b-efa6a1b7c3eb)
555 KiB
Collaborator

список сервисов сколько загружался?

список сервисов сколько загружался?
Collaborator

Потому что я подозреваю что он не был обновлён. Или команда неправильно считывает

Потому что я подозреваю что он не был обновлён. Или команда неправильно считывает
anshn commented 7 months ago
Poster
Collaborator

В целом проблема неправильного считывания галочки с автостарта решена, но теперь, если автостарт включен у service, то он задваивается в выводе команды

Names=avahi-daemon.service dbus-org.freedesktop.Avahi.service
FragmentPath=/usr/lib/systemd/system/avahi-daemon.service
Names=avahi-daemon.service dbus-org.freedesktop.Avahi.service
FragmentPath=/usr/lib/systemd/system/avahi-daemon.service

image

В целом проблема неправильного считывания галочки с автостарта решена, но теперь, если автостарт включен у service, то он задваивается в выводе команды ``` Names=avahi-daemon.service dbus-org.freedesktop.Avahi.service FragmentPath=/usr/lib/systemd/system/avahi-daemon.service Names=avahi-daemon.service dbus-org.freedesktop.Avahi.service FragmentPath=/usr/lib/systemd/system/avahi-daemon.service ``` ![image](/attachments/fb72eb3f-3d54-44aa-8310-e25294f458e4)
106 KiB
Owner

Дополнительно работу провести во фронте по заполнению массивы юнитов полученных по команде из задачи:

  1. Из полученного списка заполняем массив внутренний
  2. Если имя NAME, разделённое пробелом, существует во внутреннем массиве, то блок пропускаем,
  3. Если имя NAME, разделённое пробелом, существует во внутреннем массиве, то проверяем второе и последующее имя

т.е. не в слепую всё добавлять, а проверять на наличие, если более одного имени в NAME

Дополнительно работу провести во фронте по заполнению массивы юнитов полученных по команде из задачи: 1. Из полученного списка заполняем массив внутренний 2. Если имя NAME, разделённое пробелом, существует во внутреннем массиве, то блок пропускаем, 3. Если имя NAME, разделённое пробелом, существует во внутреннем массиве, то проверяем второе и последующее имя т.е. не в слепую всё добавлять, а проверять на наличие, если более одного имени в NAME
Collaborator

Когда я спрашивал что с этим делать мне было сказано что их нужно просто тоже добавлять, вот я и добавлял

Когда я спрашивал что с этим делать мне было сказано что их нужно просто тоже добавлять, вот я и добавлял
Collaborator
https://gitea.ublinux.ru/YanTheKaller/ubl-settings-services/commit/ef1241feb49dacbf1e8a0ffb6867172b5d8c7995
anshn commented 7 months ago
Poster
Collaborator

Теперь все в порядке закрываю

Теперь все в порядке закрываю
anshn closed this issue 7 months ago
Sign in to join this conversation.
No Milestone
No project
4 Participants
Notifications
Due Date

No due date set.

Dependencies

No dependencies set.

Reference: Applications/ubl-settings-services#77
Loading…
There is no content yet.