Сайт | Скачать | Видео | Wiki

Автор Тема: pfsunload - вывод занятых файлов при невозможности отмонтировать  (Прочитано 15906 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
https://ru.m.wikipedia.org/wiki/Fuser
То есть типа fuser -m $bundle это список, а -km это грохнуть все процессы использующие fs. Это в теории. На практике у нас aufs и фиг знает как это будет работать.
« Последнее редактирование: 26 Декабрь 2017, 12:36:47 от betcher »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Разобрался с fuser. Понял почему не получалось :) Указывать нужно не бандл, а сам файл модуля. Он показывает не файлы открытые из модуля, а процессы которые эти файлы пользуют. Проверил с палемуном из росы, у меня отмонтировался после выключения. На всякий случай вот как все выглядит.
Код
MagOS user # pfsunload palemoon.xzm   
rmdir: не удалось удалить «/memory/bundles/palemoon.xzm»: Устройство или ресурс занято
Unmount "palemoon.xzm" failed!

Files opened from palemoon.xzm:
/usr/lib64/newmoon-27.6.2/browser/components/libbrowsercomps.so
/usr/lib64/newmoon-27.6.2/browser/omni.ja
/usr/lib64/newmoon-27.6.2/components/libdbusservice.so
/usr/lib64/newmoon-27.6.2/components/libmozgnome.so
/usr/lib64/newmoon-27.6.2/libfreeblpriv3.so
/usr/lib64/newmoon-27.6.2/libmozalloc.so
/usr/lib64/newmoon-27.6.2/libnss3.so
/usr/lib64/newmoon-27.6.2/libnssckbi.so
/usr/lib64/newmoon-27.6.2/libnssdbm3.so
/usr/lib64/newmoon-27.6.2/libnssutil3.so
/usr/lib64/newmoon-27.6.2/libsmime3.so
/usr/lib64/newmoon-27.6.2/libsoftokn3.so
/usr/lib64/newmoon-27.6.2/libssl3.so
/usr/lib64/newmoon-27.6.2/libxul.so
/usr/lib64/newmoon-27.6.2/omni.ja
/usr/lib64/newmoon-27.6.2/palemoon
MagOS user # fuser -mv ./palemoon.xzm
                     ПОЛЬЗ-ЛЬ    PID ДОСТУП КОМАНДА
/home/user/palemoon.xzm:
                     root     kernel mount /memory/data/from/1
                     user      15201 F.... startkde
                     user      15330 F.... start_kdeinit
                     user      15331 F.... kdeinit5
                     user      15332 F.... klauncher
                     user      15335 F.... kded5
                     user      15355 F.... kwrapper5
                     user      15357 F.... ksmserver
                     user      15359 F.... kaccess
                     user      15373 F.... kwin_x11
                     user      15375 F.... krunner
                     user      15377 F.... plasmashell
                     user      15378 F.... polkit-kde-auth
                     user      15379 F.... xembedsniproxy
                     user      15380 F.... kwrited
                     user      15394 F.... org_kde_powerde
                     user      15396 F.... applet.py
                     user      15406 F.... yakuake
                     user      15408 F.... yakuake
                     user      15481 F.... kactivitymanage
                     user      15604 F.... pulseaudio
                     user      15616 F.... file.so
                     user      19714 F.... firefox
                     user      21655 F.... dolphin
                     user      21660 F.... trash.so
                     user      21662 F.... file.so
                     user      21663 F.... file.so
                     user      21665 F.... thumbnail.so
                     user      21671 F.... newmoon
MagOS user # pfsunload palemoon.xzm
MagOS user #


Теперь вопрос, что нам полезнее файлы или процессы? Или все показать?

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Чет не то :(
С отключенным модулем списки такие же у fuser. Фигня какая то :(
« Последнее редактирование: 26 Декабрь 2017, 17:36:41 от betcher »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
В пакете aufs-util есть такой скрипт /usr/bin/aubusy.

aubusy -v / /memory/bundles/amarok.xzm/
22114   i15155  b8      hi3045
22147   i15155  b8      hi3045
22149   i15155  b8      hi3045
22177   i15155  b8      hi3045
22589   i15155  b8      hi3045

Можно как-то так:
for a in $(aubusy -v / /memory/bundles/amarok.xzm |awk '{print $1}' ) ; do ps $a | tail -n1; done |awk '{print $NF}' |sort -u
[kdeinit5]
/usr/bin/firefox
/usr/bin/krunner
/usr/bin/plasmashell
yakuake


Или уже успокоится на списке открытых файлов?

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
что нам полезнее файлы или процессы? Или все показать?
Был бы интересен функционал:
при невозможности отключения - выдать список процессов (только которые можно осмысленно убить)
и гуй (готов написать) для убивания этих процессов
Т.к. либы сами по себе не убить - смысла их выводить наверное нет
Простые случае - когда прогу надо закрыть и модуль отключится - не интересны
Или уже успокоится на списке открытых файлов?
Давайте попробуем поюзать то что есть и потом вернемся к вопросу

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
В пакете aufs-util есть такой скрипт /usr/bin/aubusy.
В арче нет. Нашел здесь
В пра задумавается и ничего в консоль не выдает

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Нужен весь пакет. Не только aubusy.

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Вчера немного поменял в гит, теперь в списке выводятся и те файлы, что есть в модуле и в ченджез (с пометкой changed). Как оказалось, не смотря на то что файл в ченджез и даже с изменениями он всеравно блокирует ращмонтирование. Странно, но похоже так.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Вчера немного поменял в гит
Теперь в простых случаях нормально показывает
Выводить либы нет смысла - предлагаю убрать
Код
 |egrep -v '(\.so(\.[0-9]+)*|\.mo)$'
« Последнее редактирование: 27 Декабрь 2017, 11:09:16 от sfs »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Либы можно и так lsof / | grep -v " mem " |…
Вот только не знаю правильно ли. Они тоже блокируют.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Блокирует либа, но убивать то надо исполняемый файл, который юзает эту либу
В чем полезность для отключения знать какая либа держит...

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Это всех открытых файлов касается.
Lsof /путь/файл
Покажет кто его открыл, с какими правами, дескриптор и проч.
Можно выводить не список файлов, а
For a in список ; do lsof $a ; done | sort -u
Получим процессы, которые блокируют, но инфы выведет много больше. Стоит ли?

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Пример: lxpanel
killall  lxpanel - не отключится. Если вывести что держит menu-cached и вывести в гуе предложение убить с выбором - было бы интересно
Надо поюзать как есть на реальных задачах

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
for a in $(aubusy -v / /memory/bundles/amarok.xzm |awk '{print $1}' ) ; do ps $a | tail -n1; done |awk '{print $NF}' |sort -u
Скомпилил ausf-tools. Теперь работает, но с непобедимым palemoon - не помогло

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Уже можно подвести итоги
Работает. Полезно
Инфа про либы: т.к. если они не связаны с бинарниками этого же модуля - не знаю как освободить...
Развитие - не помешал бы гуй выбора занятых бинарников для убийства. Может сделаю позже
Спасибо+