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

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

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

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 24038
  • Репутация: +173/-0
    • PuppyRus-A
Инфа про либы: т.к. если они не связаны с бинарниками этого же модуля - не знаю как освободить...
Поэтому предлагаю инфу про них не выводить и f поменять на х:
|.so.|.so$
[ -x
или есть идеи лучше?
« Последнее редактирование: 23 Февраль 2018, 12:01:51 от sfs »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 24038
  • Репутация: +173/-0
    • PuppyRus-A
не помешал бы гуй выбора занятых бинарников для убийства. Может сделаю позже
[ ! -f "$1" ] && ntf -e "$0" "Не указан модуль" && exit 1
fsname="$(basename $(realpath "${1}"))"
mountpoint="$(awk '/'${fsname}'/ {print $2}' /proc/mounts)"

  for a in $( lsof / |awk '{print $9}' |grep "\/..*" | egrep -v "/proc|/sys|/run|/tmp|/dev|/home|.so.|.so$" | sort -u) ; do
    [ -x "$a" ] || continue
    [ -x  "$mountpoint/$a" ] && FILES="$FILES gtk-executable|${a}|${a}="
  done
#echo $FILES
[ "$FILES" ] || exit
ntf -k "`echo "$FILES" | sed 's/=$//'`" "Выберите программы" "которые нужно завершить" |while read b ;do
    wt "sudo killall -9 "$b""
done
ntf и wt - это мои скрипты из ПРА. Если у Вас такого нет - рекомендую. Можно тоже вместе доработать

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1480
  • Репутация: +16/-0
    • Беседка магос
Не могу понять почему Вы считаете, что либы не надо выводить. По ним если очень надо можно вычислить какие бинарники их используют. Если прятать либы можно получить ситуацию, что в списке ничего нет, а отмонтировать нельзя. Тоже как-то не айс.
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 24038
  • Репутация: +173/-0
    • PuppyRus-A
почему Вы считаете, что либы не надо выводить
Потому что если они не связаны с бинарниками модуля - определить с чем связаны будет не просто
C либами вылезают портянки больше экрана
Пока не сталкивался с такой ситуацией
В сложных случаях по любому - 100% решение - reboot
Чтобы не спорить - можно добавить ключ
« Последнее редактирование: 27 Февраль 2018, 11:34:46 от sfs »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1480
  • Репутация: +16/-0
    • Беседка магос
Может либы вывести списком через пробел. А бинарники отдельно в столбик. Ключ в данном случае перебор, скорее соглашусь на "без либ" :)
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 24038
  • Репутация: +173/-0
    • PuppyRus-A
либы вывести списком через пробел
тоже не читаемо + не часто + 100 бед 1 ресет

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 24038
  • Репутация: +173/-0
    • PuppyRus-A
если они не связаны с бинарниками модуля - определить с чем связаны будет не просто
Пример : не отключить ffmpeg при при запущенном браузере
Я догадался, что дело в этом, но список либ мне никак не помог бы

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 24038
  • Репутация: +173/-0
    • PuppyRus-A
Надо добавить к
[ -x "$a" ] || continueпроверку - что не дир
[ -d "$a" ] && continueиначе выводит /usr/bin

Кстати в гит не поправлено убирание либ
Или сделать ключ - с либами - без
« Последнее редактирование: 22 Апрель 2018, 08:21:17 от sfs »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1480
  • Репутация: +16/-0
    • Беседка магос
По /usr/bin не понял как это проявляется? У меня в списках нет.
По либам все же считаю, что прятать либы из вывода не правильно. Ситуация, когда согласно списку модуль ничто не блокирует, но при этом он не отключается не есть гуд. По имени либы легко узнать кто ее открыл:  lsof | grep имя_либы   и смотри первый столбик.  По идее можно это тоже в pfsunload запихать, но если список большой можно выхватить нехилые тормоза при разборе и второе получим в выхлопе список бинарников, которые модулю не принадлежат. Тоже странно. Мне кажется, что как сейчас самое то. Если смущает размер списка может просто сделать head -n 10 если без параметров и в последней строке написать с каким параметром запустить чтоб получить полный список блокирующих файлов. Отделять же именно либы смысла не вижу, там могут быть и /usr/share/locale да и вообще что угодно.
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 24038
  • Репутация: +173/-0
    • PuppyRus-A
По /usr/bin не понял как это проявляется?
Без моих правок
# pfsunload ffmpeg-light-3.4.1-180101-sf01.pfs
rmdir: не удалось удалить '/mnt/live/memory/images/ffmpeg-light-3.4.1-180101-sf01.pfs': Устройство или ресурс занято
Unmount "ffmpeg-light-3.4.1-180101-sf01.pfs" failed!

Files opened from ffmpeg-light-3.4.1-180101-sf01.pfs:
/usr/bin
/usr/lib/libavcodec.so.57.107.100
/usr/lib/libavdevice.so.57.10.100
/usr/lib/libavfilter.so.6.107.100
/usr/lib/libavformat.so.57.83.100
/usr/lib/libavresample.so.3.7.0
/usr/lib/libavutil.so.55.78.100
/usr/lib/libpostproc.so.54.7.100
/usr/lib/libswresample.so.2.9.100
/usr/lib/libswscale.so.4.8.100
/usr/lib/libva-drm.so.2.0.0
/usr/lib/libva-glx.so.2.0.0
/usr/lib/libva-x11.so.2.0.0
/usr/lib/libva.so.2.0.0
/usr/lib/libvdpau.so.1.0.0
По имени либы легко узнать кто ее открыл:  lsof | grep имя_либы
Да, но как это прикрутить в pfsunload... без тормозов и портянок вывода не влезающих на экран...
Это все сложные случаи для опытных
Новичку достаточно предложить грохнуть бинарник модуля (я и гуй klsof прикрутил - удобно)
Если сложнее - некоторым  проще перегрузиться
head -n 10
Плохая идея. Может получиться что либы показаны, а бинарники не влезли

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1480
  • Репутация: +16/-0
    • Беседка магос
Без моих правок
Гм. У меня не проявляется, может быть что у тебя терминал в /usr/bin открыт напрмер? Хотя такая правка мешать наверное не будет.
А по либам давай еще подумаем.
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 24038
  • Репутация: +173/-0
    • PuppyRus-A
такая правка мешать наверное не будет.
Да и время выполнения не увеличит
по либам давай еще подумаем.
У меня еще идей нет

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1480
  • Репутация: +16/-0
    • Беседка магос
/bin  /sbin и /usr/bin ближе к началу алфавита чем /usr/lib и /usr/share может head, a?
Допустим блокируют один бинарник и одна либа, в варианте без либ покажет только бинарник, а с head  покажет все. Если же список огромен то уже не особо важно что именно блокируетв варианте без либ будет список в стопицот бинарников, а с head будет список из десяти строк и предложение  запустить pfs showblock module.xzm для получения полного списка. Кмк гуд.
З.Ы. Сделал давно pfs lsblocked, но не помню писал или нет. Попробуйте у себя и в вики можно дописать.  И посмотрите описание pfs-utils в нашей вики, все ли норм. https://github.com/magos-linux/magos-linux/wiki/Pfs-utils
« Последнее редактирование: 22 Апрель 2018, 11:38:57 от betcher »
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 24038
  • Репутация: +173/-0
    • PuppyRus-A
Если  lsof | grep либа в гуе не реализовано - смысла либы их выводить нет
Все равно придется лезть в консоль
Не хотелось бы усложнять
С только бинарниками - средний вариант + ключ показывать с либами

 pfs lsblocked - не догоняю практического применения


Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1480
  • Репутация: +16/-0
    • Беседка магос
pfs lsblocked - не догоняю практического применения
Не  особо полезная штука, по тому и не  отдельной утилиткой. Как например без нее узнать заблокирован модуль или нет не отключая его?
Если  lsof | grep либа в гуе не реализовано - смысла либы их выводить нет
Все равно придется лезть в консоль
Не хотелось бы усложнять
С только бинарниками - средний вариант + ключ показывать с либами
Давайте с начала. Задача: если модуль не отключается нужно показать почему. Причина не отключения всегда открытые из модуля файлы. Это могут быть совершенно любые файлы хоть либы хоть конфиги хоть бинари. То есть вообще все что угодно.
Показывать только бинарники это подгонять функционал под ваш гуй.  Почему бы не фильтровать уже в нем? Или сделать ключик с форматированием выхлопа под гуй (как -raw в других наших утилитках). А для стандартного вывода вижу два варианта либо оставлять как есть (длинно), либо сокращать вывод до определенного количества строк и делать способ получить полный список, может даже  с циклом lsof  по каждой строке (нужно ли так усложнять?) Сокращать вывод  по принципу "только бинари" не правильно потому что возможна ситуация, что модуль не отключается, а список пуст так как открыты не бинари.
« Последнее редактирование: 22 Апрель 2018, 12:48:54 от betcher »
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)