Система долго выключается или перезагружается (почти минуту). Анализ логов показывает: ноя 04 20:38:21 Desktop-Home systemd[1333]: Stopping localsearch-3.service - Tracker file system data miner... ноя 04 20:39:06 Desktop-Home systemd[1333]: localsearch-3.service: State 'stop-sigterm' timed out. Killing. ноя 04 20:39:06 Desktop-Home systemd[1333]: localsearch-3.service: Killing process 2499 (localsearch-3) with signal SIGKILL. ноя 04 20:39:06 Desktop-Home systemd[1333]: localsearch-3.service: Killing process 2510 (n/a) with signal SIGKILL. ноя 04 20:39:06 Desktop-Home systemd[1333]: localsearch-3.service: Killing process 2543 (Monitor thread) with signal SIGKILL. ноя 04 20:39:06 Desktop-Home systemd[1333]: localsearch-3.service: Main process exited, code=killed, status=9/KILL ноя 04 20:39:06 Desktop-Home systemd[1333]: localsearch-3.service: Failed with result 'timeout'. ноя 04 20:39:06 Desktop-Home systemd[1333]: Stopped localsearch-3.service - Tracker file system data miner. ноя 04 20:39:06 Desktop-Home systemd[1333]: localsearch-3.service: Consumed 50.519s CPU time, 2.1G memory peak. Видно, что процесс, отвечающий за индексацию/поиск не может корректно завершиться и принудительно убивается через 45 секунд. Проблему выявил в конфликте зависимостей: systemctl --user list-dependencies localsearch-3.service localsearch-3.service ● ├─background.slice ● ├─dbus.socket ● └─basic.target ● ├─systemd-tmpfiles-setup.service ● ├─paths.target ● ├─sockets.target ● │ ├─dbus.socket ● │ ├─pipewire-pulse.socket ● │ └─pipewire.socket ● └─timers.target ● └─systemd-tmpfiles-clean.timer systemctl --user show localsearch-3.service -p Requires,After,Before,Wants Requires=basic.target dbus.socket background.slice Wants= Before=shutdown.target After=home.mount -.mount basic.target gnome-session.target dbus.socket background.slice systemctl --user show localsearch-3.service -p Conflicts Conflicts=shutdown.target Что изменил: systemctl --user edit localsearch-3.service [Unit] # Убираем конфликт с shutdown.target Conflicts= # Указываем явные зависимости для корректной остановки Before=gnome-session-shutdown.target After=dbus.socket Wants=dbus.socket [Service] # Гарантируем корректную обработку сигналов KillMode=process TimeoutStopSec=30 SendSIGKILL=no А было так: ### /usr/lib/systemd/user/localsearch-3.service # [Unit] # Description=Tracker file system data miner # ConditionUser=!root # ConditionUser=!gnome-initial-setup # After=gnome-session.target # # [Service] # Type=dbus # BusName=org.freedesktop.LocalSearch3 # ExecStart=/usr/libexec/localsearch-3 # Restart=on-failure # # Don't restart after tracker daemon -k (aka tracker-control -k) # RestartPreventExitStatus=SIGKILL # Slice=background.slice # # [Install] # WantedBy=gnome-session.target Проблема: Systemd пытался остановить службы в порядке, обратном запуску. Но localsearch-3 зависела от gnome-session.target, который уже был остановлен к моменту остановки localsearch-3. Получается, что были неправильно настроены зависимости. После внесения мной исправлений (см. выше), все стало работать быстро и корректно, служба localsearch-3 теперь завершается менее, чем за 1 секунду. Прокомментируйте, пожалуйста, данную ситуацию и мое решение, а также на что еще обратить внимание в настройках дистрибутива?
(Ответ для Михаил на комментарий #0) > # Убираем конфликт с shutdown.target > Conflicts= Это ни на что не влияет. > > # Указываем явные зависимости для корректной остановки > Before=gnome-session-shutdown.target Вероятно, помогло это. Сделайте только это изменение и проверьте. > After=dbus.socket > Wants=dbus.socket Сервис нужно выключать при завершении сеанса gnome. А вот это происходит сильно позже.