Форум проекта PuppyRus Linux

Разработки проекта PuppyRus => Разработка PFS и Initrd => Разработка PFS-utils v.3 => Тема начата: betcher от 22 Декабрь 2017, 21:12:35

Название: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 22 Декабрь 2017, 21:12:35
Вообще идея интересная. Решил посмотреть какие же файлы открыты в момент выполнения этого скрипта.
Список внушительный. Но. Если отсортировать /proc, /sys и проч. Остается:
Код
/bin/bash
/bin/grep
/etc/udev/hwdb.bin
/lib64/ld-2.19.so
/lib64/libacl.so.1.1.0
/lib64/libattr.so.1.1.0
/lib64/libaudit.so.1.0.0
/lib64/libblkid.so.1.1.0
/lib64/libc-2.19.so
/lib64/libcap.so.2.22
/lib64/libcom_err.so.2.1
/lib64/libdl-2.19.so
/lib64/libgpg-error.so.0.10.0
/lib64/libkmod.so.2.2.10
/lib64/liblzma.so.5.2.2
/lib64/libmount.so.1.1.0
/lib64/libncursesw.so.5.9
/lib64/libnsl-2.19.so
/lib64/libnss_compat-2.19.so
/lib64/libnss_files-2.19.so
/lib64/libnss_nis-2.19.so
/lib64/libpam.so.0.83.1
/lib64/libpcre.so.1.2.3
/lib64/libpthread-2.19.so
/lib64/libresolv-2.19.so
/lib64/librt-2.19.so
/lib64/libuuid.so.1.3.0
/lib64/libz.so.1.2.8
/lib/modules/4.9.60-nrj-desktop-1rosa-x86_64/modules.alias.bin
/lib/modules/4.9.60-nrj-desktop-1rosa-x86_64/modules.builtin.bin
/lib/modules/4.9.60-nrj-desktop-1rosa-x86_64/modules.dep.bin
/lib/modules/4.9.60-nrj-desktop-1rosa-x86_64/modules.symbols.bin
/sbin/dhclient
/usr/lib64/libgcrypt.so.20.0.6
/usr/lib64/libgssapi_krb5.so.2.2
/usr/lib64/libk5crypto.so.3.1
/usr/lib64/libkeyutils.so.1.5
/usr/lib64/libkrb5.so.3.3
/usr/lib64/libkrb5support.so.0.1
/usr/lib64/libtirpc.so.1.0.10
/usr/lib/locale/locale-archive
/usr/lib/magos/rc.halt/90-umountmodules
/usr/sbin/lsof
/var/lib/NetworkManager/dhclient-a0d6c4fc-b45f-3773-a6d2-6d497dc3348d-enp4s0.lease

Если отсортировать то, что загружено в память (помечено как mem в lsof):
Код
/bin/bash
/bin/grep
/etc/udev/hwdb.bin
/sbin/dhclient
/usr/lib/magos/rc.halt/90-umountmodules
/usr/sbin/lsof
/var/lib/NetworkManager/dhclient-a0d6c4fc-b45f-3773-a6d2-6d497dc3348d-enp4s0.lease


При чем здесь lsof и grep это тот кусочек, что создал этот список. А последний скорее всего в ченджез. То есть модули практически ничего не держит. И теоретически сделать мини модуль с необходимыми для отключения утилитами и грузить его в copy2ram - возможно. Вот только после системд еще что-то делает и не понятно что ему может понадобиться. И второй момент если какая-то софтинка добавит в этот списочек хоть один файл все снова перестанет отмонтироваться.
Название: Re: Re: После выключения FRUGAL без copy2ram с FAT32 Windows проверяет FAT32 на ошибки
Отправлено: betcher от 24 Декабрь 2017, 09:48:06
Надо нам в pfsutils что то подобное?
Код
#!/bin/bash
lsblocked () {
LSOF=$( lsof  |grep -v " mem " | awk '{print $9}' |grep "\/..*" | egrep -v "/proc|/sys|/run|/tmp|/dev|/home" | sort -u)
for a in $LSOF ; do
[ -f $a ] || continue
[ -f /memory/changes/$a ] && continue
for bundle in $(ls /memory/bundles) ; do
[ -f /memory/bundles/$bundle/$a ] && BLOCKED="$BLOCKED $bundle"
done
done
for m in $BLOCKED ; do
echo $m
done | sort -u
}

ls_files () {
LSOF=$( lsof  |grep -v " mem " |awk '{print $9}' |grep "\/..*" | egrep -v "/proc|/sys|/run|/tmp|/dev|/home" | sort -u)
for a in $LSOF ; do
[ -f $a ] || continue
[ -f /memory/changes/$a ] && continue
[ -f /memory/bundles/$1/$a ] && FILES="$FILES $a"
done
for f in $FILES ; do echo $f ; done

}

if [ $1 ]; then
ls_files $1
else
lsblocked
fi


Без параметров покажет заблокированные модули, если передать имя модуля то список открытых файлов из него. Все сыро и под магос заточено, чисто показать.
Назвать можно pfsblocked

А в этом форуме потому, что
Код
./pfsblocked 10-core.xzm
/bin/bash
/bin/dbus-daemon
/bin/gawk
/bin/grep
/bin/sort
/bin/su
/sbin/dhclient
/usr/bin/python2.7
/usr/lib64/accounts-daemon
/usr/lib64/gam_server
/usr/lib/polkit-1/polkitd
/usr/sbin/acpid
/usr/sbin/gpm
/usr/sbin/lsof
/usr/sbin/ModemManager
/usr/sbin/NetworkManager

MagOS Programming # for f in $(./pfsblocked 10-core.xzm) ; do touch $f ; done

MagOS Programming # ./pfsblocked 10-core.xzm
Пусто...
Похоже трюк с touch работает :)
Название: Re: Re: После выключения FRUGAL без copy2ram с FAT32 Windows проверяет FAT32 на ошибки
Отправлено: betcher от 24 Декабрь 2017, 10:56:10
Так я даже пример привел. Похоже для разблокирования модуля достаточно сделать touch для блокирующих файлов. А вывод pfsblocked module.xzm можно добавить в выхлоп pfsunload если отключить не получается. Не обязательно делать отдельным файлом  можно в либу добавить. Если с тачем работает можно сделать pfsunload --force.
Но все это конечно сперва проверить нужно.
Чтоб в пра заработало нужно пути поменять только, универсальностью не запаривался пока.
Название: Re: Re: После выключения FRUGAL без copy2ram с FAT32 Windows проверяет FAT32 на ошибки
Отправлено: sfs от 24 Декабрь 2017, 11:14:34
pfsunload --force.
Хорошо ли это вообще....
Получается мы оставляем в системе некоторые файлы модуля, которые еще и запущены
При выключении уже не важно, но похоже, можно проще
Название: Re: Re: После выключения FRUGAL без copy2ram с FAT32 Windows проверяет FAT32 на ошибки
Отправлено: betcher от 24 Декабрь 2017, 22:32:01
Хак с touch не работает. Файлы в ченджез переносятся, но модуль остается заблокированным.
Прикрутил к pfsunload вывод списка блокирующих файлов в случае если отключить не получается. Посмотрите в гит. Если это лишнее можно откатить. Но мне показалось  полезно понимать из-за кого не отключается модуль.
З.Ы. Забыл пути поправить. Минут пять надо.
P.P.S готово.
Название: Re: Re: После выключения FRUGAL без copy2ram с FAT32 Windows проверяет FAT32 на ошибки
Отправлено: betcher от 25 Декабрь 2017, 07:48:19
Я однако все сломал :( Получилась мешанина из коммитов. Сейчас с телефона смотрю и не вижу Ваших правок с COL () { например. Гит не должен допускать такого. Как вышло не пойму. Починить смогу только поздно вечером. Можете просто откатить пока.
Но pfsunload работать должен. Если интересно, посмотреть можно.
Название: Re: Re: После выключения FRUGAL без copy2ram с FAT32 Windows проверяет FAT32 на ошибки
Отправлено: sfs от 25 Декабрь 2017, 09:22:28
Прикрутил к pfsunload вывод списка блокирующих файлов в случае если отключить не получается.
Вот это интереснее. Может и ключ "освободить" не помешал бы
Можете просто откатить пока.
Я гит юзаю только на правку через ввв. Лучше руку не менять. Чините когда сможете
Если что - в пра рабочая версия есть
Название: Re: Re: После выключения FRUGAL без copy2ram с FAT32 Windows проверяет FAT32 на ошибки
Отправлено: betcher от 25 Декабрь 2017, 09:47:34
С --force ничего не выходит. После touch file файл попадает в ченджез, но та софтина, которая его держала открытым похоже продолжает читать из модуля пока ее не остановить, если зппустить снова, то будет читать из ченджез. По крайней мере так все выглядит. То есть после touch становится только хуже и не работает, и не понятно из-за кого, так как файлы уже в ченджез :)
Название: Re: Re: После выключения FRUGAL без copy2ram с FAT32 Windows проверяет FAT32 на ошибки
Отправлено: sfs от 25 Декабрь 2017, 09:55:17
touch - вообще плохая идея. Надо kill
Название: Re: Re: После выключения FRUGAL без copy2ram с FAT32 Windows проверяет FAT32 на ошибки
Отправлено: betcher от 25 Декабрь 2017, 10:12:49
Убивать это только при выключении можно, на живую опасненько :) А при выключении подозреваю, что все что можно было системд уже прибил.
Название: Re: Re: После выключения FRUGAL без copy2ram с FAT32 Windows проверяет FAT32 на ошибки
Отправлено: sfs от 25 Декабрь 2017, 10:58:44
Убивать это только при выключении можно, на живую опасненько
Ну так я ж предлагаю не по дефолту, а отдельным ключом для тех, кто понимает что делает
Проверил новый (первый вариант на скрине). У меня не показало, что держит
Название: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 25 Декабрь 2017, 12:04:31
У нас вроде норм работало. Вечером перепроверю. Надо будет видимо в пра смотреть последние два блока if из pfsunload. Может в lsof отличия или еще где.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 25 Декабрь 2017, 12:28:08
Возможно дело в том что я взял сложный модуль, где не просто какой-то бинарник запущен, а сложное взаимодействие либ
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 25 Декабрь 2017, 12:49:16
Я проверял со всеми овер 30 модулей в магос. Список модулей в которых обнаружились открытые файлы ровно совпал с теми, что не удалось отмонтировать.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 25 Декабрь 2017, 13:08:30
Заглянул во внутрь:
1. changes bungles - взяты не через переменные из pfs
2. Не учтено, что модуль мог быть монтирован не pfsload, а инитрд. Где-то я уже правил такое - т.е.определял через /sys/fs/aufs
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 25 Декабрь 2017, 13:10:59
А в чем разница с монтированием? Uird и  pfsload одинаково подключают.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 25 Декабрь 2017, 13:17:36
портеус и raufs2 - нет
Надо везде брать из /sys/fs/aufs - это универсально
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 25 Декабрь 2017, 13:30:49
Я не понял. Эти негодяи до сих пор наш стандарт не читали? :)
П вы у них инитрд как есть берете? Не меняя даже путей под себя.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 25 Декабрь 2017, 13:35:02
Эти негодяи до сих пор наш стандарт не читали?
Они появились задолго до Вашего стандарта
вы у них инитрд как есть берете?
Нет, но зачем изобретать изобретенное и менять устоявшиеся стандарты

Надо везде брать из /sys/fs/aufs - это универсально
Только так. Иначе не будет универсально
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: DdShurick от 25 Декабрь 2017, 14:57:59
Иначе не будет универсально
Код
ls -a /sys/fs/aufs
.   ..
Пусто...:( Ну и где универсальность?
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 25 Декабрь 2017, 15:32:07
Смысл в стандарте если ему не следуют даже создатели :) Стандарт, на минуточку, наш с вами. И смысл его в том, что задал в инитрд расположение  точек монтирования и pfs-utils работают. Хоть магос у тебя, хоть пра, хоть  бубунта с uird загруженная.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 25 Декабрь 2017, 16:14:36
где универсальность?
см. aufs-n - там все нормально определяет. Так и надо делать
Смысл в стандарте если ему не следуют даже создатели
Если про этот (http://forum.puppyrus.org/index.php?topic=18733.0) стандарт - я не при делах
Стандарт, на минуточку, наш с вами.
Именно я с Вами определился при pfs-util3 что все задается в файле pfs. Мы придерживались этого и все работало у всех
В последних правках pfsunload Вы нарушили стандарт и у меня не сработало
Если сделать определение пути к модулю как в aufs-n - будет вообще универсально. Т.е. для всего AUFS. Чем плохо то?
Не понимаю что мы обсуждаем... Чем плохо как в aufs-n ?
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: DdShurick от 25 Декабрь 2017, 16:58:57
см. aufs-n - там все нормально определяет.
Своё есть, тоже нормально, но неактуально в связи с переходом на overlayfs.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 25 Декабрь 2017, 19:22:52
см. aufs-n - там все нормально определяет. Так и надо делать
Я не против сделать как в aufs-n, это как минимум не хуже. Я к тому, что правила обговорили, а вы делаете не обращая внимания на эти в общем не сложные вещи. А потом нужно будет выпиливать костыли чтоб работало и так и сяк и об косяк.
 
Именно я с Вами определился при pfs-util3 что все задается в файле pfs. Мы придерживались этого и все работало у всех. В последних правках pfsunload Вы нарушили стандарт и у меня не сработало
Пока это просто идея, естественно нужно делать как и все остальное - универсально. Сейчас исправлю чего вчера поналомал и займусь :)
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 25 Декабрь 2017, 19:40:47
правила обговорили, а вы делаете не обращая внимания на эти в общем не сложные вещи.
В последних правках pfsunload Вы нарушили стандарт и у меня не сработало
Про подгон под pfs-util инитрд разговора не было и как видно из этой темы - смысла в этом нет
нужно делать как и все остальное - универсально.
да!
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 26 Декабрь 2017, 09:00:58
Гит вернул на место. Надеюсь не потерял ничего :)
Pfsunload поправил с учетом пожеланий, но в пра не проверял.
Мы оставляли жестко прописанные пути в pfs, для того, чтоб утилиты работали в текущих на тот момент сборках ПРА. Но сейчас то вы новое пилите, с новыми инитрд. Почему бы не делать как в стандарте, чтоб не подгонять pfsutils под все возможные варианты. Да и заменять инитрд проще будет.
З.Ы. Еще pfs lsblocked добавил.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 26 Декабрь 2017, 10:09:14
в пра не проверял.
Все ок - т.е.
selftest -ok
отключение незанятого модуля , подключенного пфс и инитрд - ок
отключение занятого модуля - правильное сообщение

Только огорчил такой эксперимент:
запускаю palemoon - правильное сообщение при откл
закрываю palemoon - не отключается и что именно держит не пишет
Т.е. практическое применение пока не получилось
Естественно это проблема не пфс, а палемуна или еще чего-то
Спасибо+

Инитрд - склонен придерживаться:
1. не сочинять стандартов где они уже есть
2. работает - не трогай
В новом инитрд стараюсь придерживаться п.1. Старый тоже не брошен
До UIRD никак не доберусь. Пока ни разу не потребовалось то, что может только он
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 26 Декабрь 2017, 11:05:49
А у вас файлы в /home или /tmp внутри модуля бывают? А то я их фильтрую из lsof. Может по этому  не пишет какие файлы блокируют отключение палемуна. Попробуйте фильтр убрать.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 26 Декабрь 2017, 11:20:56
А у вас файлы в /home или /tmp внутри модуля бывают?
/home бывают
Попробуйте фильтр убрать.
убрал весь grep - без изменений
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 26 Декабрь 2017, 11:33:23
Надо искать что держит.
Можно еще fuser. Надо попробовать.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 26 Декабрь 2017, 12:24:18
https://ru.m.wikipedia.org/wiki/Fuser
То есть типа fuser -m $bundle это список, а -km это грохнуть все процессы использующие fs. Это в теории. На практике у нас aufs и фиг знает как это будет работать.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 26 Декабрь 2017, 17:21:47
Разобрался с 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 #


Теперь вопрос, что нам полезнее файлы или процессы? Или все показать?
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 26 Декабрь 2017, 17:28:01
Чет не то :(
С отключенным модулем списки такие же у fuser. Фигня какая то :(
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 26 Декабрь 2017, 18:13:06
В пакете 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


Или уже успокоится на списке открытых файлов?
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 27 Декабрь 2017, 09:00:21
что нам полезнее файлы или процессы? Или все показать?
Был бы интересен функционал:
при невозможности отключения - выдать список процессов (только которые можно осмысленно убить)
и гуй (готов написать) для убивания этих процессов
Т.к. либы сами по себе не убить - смысла их выводить наверное нет
Простые случае - когда прогу надо закрыть и модуль отключится - не интересны
Или уже успокоится на списке открытых файлов?
Давайте попробуем поюзать то что есть и потом вернемся к вопросу
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 27 Декабрь 2017, 09:14:16
В пакете aufs-util есть такой скрипт /usr/bin/aubusy.
В арче нет. Нашел здесь (https://openmandriva.pkgs.org/3.0/openmandriva-main-release-x86_64/aufs-util-4.0-0.20160216.1-omv2015.0.x86_64.rpm.html)
В пра задумавается и ничего в консоль не выдает
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 27 Декабрь 2017, 09:54:59
Нужен весь пакет. Не только aubusy.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 27 Декабрь 2017, 10:01:29
Вчера немного поменял в гит, теперь в списке выводятся и те файлы, что есть в модуле и в ченджез (с пометкой changed). Как оказалось, не смотря на то что файл в ченджез и даже с изменениями он всеравно блокирует ращмонтирование. Странно, но похоже так.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 27 Декабрь 2017, 10:35:19
Вчера немного поменял в гит
Теперь в простых случаях нормально показывает
Выводить либы нет смысла - предлагаю убрать
Код
 |egrep -v '(\.so(\.[0-9]+)*|\.mo)$'
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 27 Декабрь 2017, 10:59:27
Либы можно и так lsof / | grep -v " mem " |…
Вот только не знаю правильно ли. Они тоже блокируют.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 27 Декабрь 2017, 11:08:54
Блокирует либа, но убивать то надо исполняемый файл, который юзает эту либу
В чем полезность для отключения знать какая либа держит...
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 27 Декабрь 2017, 11:12:40
Это всех открытых файлов касается.
Lsof /путь/файл
Покажет кто его открыл, с какими правами, дескриптор и проч.
Можно выводить не список файлов, а
For a in список ; do lsof $a ; done | sort -u
Получим процессы, которые блокируют, но инфы выведет много больше. Стоит ли?
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 27 Декабрь 2017, 11:25:43
Пример: lxpanel
killall  lxpanel - не отключится. Если вывести что держит menu-cached и вывести в гуе предложение убить с выбором - было бы интересно
Надо поюзать как есть на реальных задачах
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 27 Декабрь 2017, 11:45:56
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 - не помогло
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 06 Январь 2018, 07:32:22
Уже можно подвести итоги
Работает. Полезно
Инфа про либы: т.к. если они не связаны с бинарниками этого же модуля - не знаю как освободить...
Развитие - не помешал бы гуй выбора занятых бинарников для убийства. Может сделаю позже
Спасибо+
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 23 Февраль 2018, 11:53:35
Инфа про либы: т.к. если они не связаны с бинарниками этого же модуля - не знаю как освободить...
Поэтому предлагаю инфу про них не выводить и f поменять на х:
Код
|.so.|.so$
[ -x
или есть идеи лучше?
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 23 Февраль 2018, 12:31:29
не помешал бы гуй выбора занятых бинарников для убийства. Может сделаю позже
Код
[ ! -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 (http://forum.puppyrus.org/index.php/topic,11768.0.html) - это мои скрипты из ПРА. Если у Вас такого нет - рекомендую. Можно тоже вместе доработать
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 27 Февраль 2018, 11:19:12
Не могу понять почему Вы считаете, что либы не надо выводить. По ним если очень надо можно вычислить какие бинарники их используют. Если прятать либы можно получить ситуацию, что в списке ничего нет, а отмонтировать нельзя. Тоже как-то не айс.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 27 Февраль 2018, 11:30:27
почему Вы считаете, что либы не надо выводить
Потому что если они не связаны с бинарниками модуля - определить с чем связаны будет не просто
C либами вылезают портянки больше экрана
Пока не сталкивался с такой ситуацией
В сложных случаях по любому - 100% решение - reboot
Чтобы не спорить - можно добавить ключ
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 27 Февраль 2018, 11:50:53
Может либы вывести списком через пробел. А бинарники отдельно в столбик. Ключ в данном случае перебор, скорее соглашусь на "без либ" :)
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 27 Февраль 2018, 11:58:38
либы вывести списком через пробел
тоже не читаемо + не часто + 100 бед 1 ресет
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 28 Февраль 2018, 09:32:39
если они не связаны с бинарниками модуля - определить с чем связаны будет не просто
Пример : не отключить ffmpeg при при запущенном браузере
Я догадался, что дело в этом, но список либ мне никак не помог бы
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 22 Апрель 2018, 08:17:51
Надо добавить к
Код
[ -x "$a" ] || continue
проверку - что не дир
Код
[ -d "$a" ] && continue
иначе выводит /usr/bin

Кстати в гит не поправлено убирание либ
Или сделать ключ - с либами - без
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 22 Апрель 2018, 10:48:06
По /usr/bin не понял как это проявляется? У меня в списках нет.
По либам все же считаю, что прятать либы из вывода не правильно. Ситуация, когда согласно списку модуль ничто не блокирует, но при этом он не отключается не есть гуд. По имени либы легко узнать кто ее открыл:  lsof | grep имя_либы   и смотри первый столбик.  По идее можно это тоже в pfsunload запихать, но если список большой можно выхватить нехилые тормоза при разборе и второе получим в выхлопе список бинарников, которые модулю не принадлежат. Тоже странно. Мне кажется, что как сейчас самое то. Если смущает размер списка может просто сделать head -n 10 если без параметров и в последней строке написать с каким параметром запустить чтоб получить полный список блокирующих файлов. Отделять же именно либы смысла не вижу, там могут быть и /usr/share/locale да и вообще что угодно.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 22 Апрель 2018, 11:01:34
По /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
Плохая идея. Может получиться что либы показаны, а бинарники не влезли
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 22 Апрель 2018, 11:13:17
Без моих правок
Гм. У меня не проявляется, может быть что у тебя терминал в /usr/bin открыт напрмер? Хотя такая правка мешать наверное не будет.
А по либам давай еще подумаем.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 22 Апрель 2018, 11:19:47
такая правка мешать наверное не будет.
Да и время выполнения не увеличит
по либам давай еще подумаем.
У меня еще идей нет
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 22 Апрель 2018, 11:28:18
/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
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 22 Апрель 2018, 11:49:16
Если  lsof | grep либа в гуе не реализовано - смысла либы их выводить нет
Все равно придется лезть в консоль
Не хотелось бы усложнять
С только бинарниками - средний вариант + ключ показывать с либами

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

Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 22 Апрель 2018, 12:37:55
pfs lsblocked - не догоняю практического применения
Не  особо полезная штука, по тому и не  отдельной утилиткой. Как например без нее узнать заблокирован модуль или нет не отключая его?
Если  lsof | grep либа в гуе не реализовано - смысла либы их выводить нет
Все равно придется лезть в консоль
Не хотелось бы усложнять
С только бинарниками - средний вариант + ключ показывать с либами
Давайте с начала. Задача: если модуль не отключается нужно показать почему. Причина не отключения всегда открытые из модуля файлы. Это могут быть совершенно любые файлы хоть либы хоть конфиги хоть бинари. То есть вообще все что угодно.
Показывать только бинарники это подгонять функционал под ваш гуй.  Почему бы не фильтровать уже в нем? Или сделать ключик с форматированием выхлопа под гуй (как -raw в других наших утилитках). А для стандартного вывода вижу два варианта либо оставлять как есть (длинно), либо сокращать вывод до определенного количества строк и делать способ получить полный список, может даже  с циклом lsof  по каждой строке (нужно ли так усложнять?) Сокращать вывод  по принципу "только бинари" не правильно потому что возможна ситуация, что модуль не отключается, а список пуст так как открыты не бинари.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 22 Апрель 2018, 12:50:06
Как например без нее узнать заблокирован модуль или нет не отключая его?
Зачем это знать?
Если хочешь отключить - сразу пробуй - все и узнаешь
под ваш гуй.  Почему бы не фильтровать уже в нем?
для стандартного вывода вижу два варианта либо оставлять как есть (длинно)
Давайте так. Т.е. в консоле как сейчас. В гуе как кто хочет
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 22 Апрель 2018, 12:54:30
Давайте так. Т.е. в консоле как сейчас. В гуе как кто хочет
Ну да. Либо спец ключиком для гуя особый выхлоп сделать. Мне пока не надо, не знаю как тут гуй прикрутить, в половине случаев все одно не поможет.
 
Зачем это знать?
Показалось полезным, сделал. Можно выкинуть не расстроюсь :)
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 22 Апрель 2018, 13:10:25
Можно выкинуть
Раз работает - пусть живет
Либо спец ключиком для гуя особый выхлоп сделать
Да Всетаки надо ключ. : по дефолту не выводить зависимости
С ключом - все
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 22 Апрель 2018, 13:21:49
Правильно понял?
По дефолту как сейчас, а с ключем все бинарники открытые из модуля, плюс все бинарники открывшие все остальные блокированные файлы.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 22 Апрель 2018, 15:05:39
Нет. По дефолту - вообще ничего
Кто не знает что есть такой ключ вряд ли знает, что делать с выводом
с ключем все бинарники открытые из модуля, плюс все бинарники открывшие все остальные блокированные файлы.
Так бы хорошо, но сложновато
Поэтому и ключом
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 22 Апрель 2018, 16:15:17
Обычно делают -q --quiet чтоб совсем молчал, и -v --verbose чтоб ругался  подробнее. А по умолчанию надо выводить хотя бы причину почему не отключается.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 23 Апрель 2018, 10:19:43
по умолчанию надо выводить хотя бы причину почему не отключается.
Да.
А lsof по -v
Сделаете в гит или я?
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 23 Апрель 2018, 14:59:34
Сделаете в гит или я?
Если торопитесь лучше сами.
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 23 Апрель 2018, 15:56:38
сделал (https://github.com/pfs-utils/pfs-utils-cli/commit/7d471a439819e151c59218e2114fa9d4097d372a)
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 23 Апрель 2018, 16:36:48
Посмотрел код, не понял что будет в выхлопе без -v ?
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 23 Апрель 2018, 16:41:41
Сообщение , что нельзя отмонтировать , т.к. занято (от mount в локале системы) без перечисления занятых файлов
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: betcher от 23 Апрель 2018, 16:54:49
А, то что сам mount пишет. Может тогда вывод с lsof запихать в pfs lsblocked?
pfs lsblocked - список неотключаемых модулей
pfs lsblocked modname - список файлов блокирующих отключение modname
А в выхлоп pfsunload добавить: use: pfs lsblocked $1 to get list files opened from $1. Или -v оставить? Как лучше?
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 23 Апрель 2018, 17:06:55
Думаю -v (как сейчас) лучше
pfsunload --help все догадаются
pfs lsblocked modname - вряд ли кто
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 20 Август 2018, 09:27:01
грохнуть бинарник модуля (я и гуй klsof прикрутил - удобно)
Прилетело обновление
В апреле
при отключении модуля, если есть файлы мешающие отключению то предлагает их отключить, если согласиться то не отключает, видимо прав не хватает. От root из консоли killall убивает мешающий процесс
Выводится же сообшение , что там sudo
Поправил. Почему-то в Ролл без правки работало...
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: Pro от 20 Август 2018, 09:46:32
Выводится не сообшение , что там sudo
фразу не понял, я отключал из mc, сообщения видел о том что не удалось отключить модуль
Название: Re: pfsunload - вывод занятых файлов при невозможности отмонтировать
Отправлено: sfs от 20 Август 2018, 09:49:19
Цитата
Выводится же сообщение , что там sudo
Опечатки
Короче - пробуй fix