Мнение Общественности |
Какую файловую систему на флешке вы предпочитаете?
Всего ответов: 4980
|
Статистика |
|
|
Dr.Web Live USB и GRUB
| |
Sh1td0wn | Дата: Четверг, 19.04.2012, 22:00 | Сообщение # 196 |
Программист
Группа: Модераторы
Сообщений: 3829
Статус: Отсутствует
| Это тоже борьба с симптомами, а не с причиной, но раз уж это помогает... в коде и так полно race condition'ов, одним больше, одним меньше... разница небольшая.
Помогло - значит, хорошо.
НАЖМИ МЕНЯ, прежде чем что-либо написать
|
|
| |
b0s | Дата: Четверг, 19.04.2012, 22:24 | Сообщение # 197 |
Ищущий
Группа: Пользователи
Сообщений: 22
Статус: Отсутствует
| К сожалению этой утилиты нет готовой в двоичном виде для Gentoo. Я бы её скачал и распаковал, но её нет. А для того, что бы её скомпилировать, нужна установленная система Gentoo... Блин это же так долго...Добавлено (19.04.2012, 22:10) --------------------------------------------- Что-вы, как вы написали про то что можно было бы просмотреть, если бы была утилита, хотя я в начале и дописал сценарий, и только потом стал искать утилиту, я всё же понимаю, что это важно. Я всё же также как и вы не очень принимаю решение задач путём сжигания учителей и учебников вместе со школами. Я тоже предпочитаю докопаться до сути проблемы, а не пить таблетки, не зная от чего да и зачем и вообще непонятно какие таблетки. Добавлено (19.04.2012, 22:10) --------------------------------------------- Если у вас есть версия утилиты и вы могли бы поделится, с радостью бы воспользовался! Добавлено (19.04.2012, 22:24) --------------------------------------------- Так у вас нет этой утилиты? Если есть то я был вам благодарен за неё.
|
|
| |
Sh1td0wn | Дата: Четверг, 19.04.2012, 22:45 | Сообщение # 198 |
Программист
Группа: Модераторы
Сообщений: 3829
Статус: Отсутствует
| > К сожалению этой утилиты нет готовой в двоичном виде для Gentoo. Gentoo здесь ни при чём. Внутри initramfs располагается очень маленький набор программ, имеющий мало общего с Gentoo.
Можно собрать утилиту самостоятельно. В составе busybox (набор очень маленьких утилит для встраиваемых систем и initramfs) нет lsof, но есть fuser (он тоже умеет показывать список процессов, держащих директорию). Действуем: cd $(mktemp -d) # создаём временную директорию в /tmp и перемещаемся туда apt-get source busybox # берём исходники sudo apt-get build-dep busybox # берём пакеты, которые понадобятся для сборки cd busybox-* # у busybox есть специальная система сборки, позволяющая выбрать, что собирать, а что - нет. она может быть вызвана как интерактивное меню или настроена вручную make allnoconfig # отключаем всё sed -i 's/^# CONFIG_STATIC .*/CONFIG_STATIC=y/' .config # включаем статическую сборку sed -i 's/^# CONFIG_FUSER .*/CONFIG_FUSER=y/' .config # включаем нужную нам утилиту # для редактирования файла с настройками используется неинтерактивный редактор sed make # собираем программу
В результате получается файл busybox размером 544K, который нужно сохранить под именем fuser куда-нибудь в initramfs. Запускается он так: fuser /путь/к/директории/или/файлу. В ответ он пишет список pid процессов, которые держат файл/директорию.
Можно выполнить что-то вроде: for pid in `fuser /dev`; do cat /proc/$pid/comm; done (в файле /proc/$pid/comm хранится имя программы с PID = $pid). Вместо comm можно также смотреть cmdline.
НАЖМИ МЕНЯ, прежде чем что-либо написать
|
|
| |
b0s | Дата: Пятница, 20.04.2012, 00:28 | Сообщение # 199 |
Ищущий
Группа: Пользователи
Сообщений: 22
Статус: Отсутствует
| Sh1td0wn, к великому сожалению, куча потраченного времени не дала результата. Fuser выдаёт ошибку, что при наличии параметров командной строки, что без них:
Code #fuser /bin/fuser: line 1: syntax error: unexpected "("
Сообщение отредактировал b0s - Пятница, 20.04.2012, 00:28 |
|
| |
Sh1td0wn | Дата: Пятница, 20.04.2012, 00:31 | Сообщение # 200 |
Программист
Группа: Модераторы
Сообщений: 3829
Статус: Отсутствует
| Мой файл выглядит так (тип файла: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.26, BuildID[sha1]=0x199538e5f74c4b65168e99a8de4a4aaa67d440f8, stripped), а Ваш?
НАЖМИ МЕНЯ, прежде чем что-либо написать
|
|
| |
b0s | Дата: Пятница, 20.04.2012, 00:43 | Сообщение # 201 |
Ищущий
Группа: Пользователи
Сообщений: 22
Статус: Отсутствует
| Я как то упустил из виду, что создавал файл, в 64-х битной версии Ubuntu...
|
|
| |
Sh1td0wn | Дата: Пятница, 20.04.2012, 00:48 | Сообщение # 202 |
Программист
Группа: Модераторы
Сообщений: 3829
Статус: Отсутствует
| Тогда перед сборкой потребуется ввести "linux32". Возможно, потребуется пакет ia32-libs.
НАЖМИ МЕНЯ, прежде чем что-либо написать
|
|
| |
b0s | Дата: Пятница, 20.04.2012, 03:30 | Сообщение # 203 |
Ищущий
Группа: Пользователи
Сообщений: 22
Статус: Отсутствует
| Sh1td0wn, использования данной команды не даёт во всяком случае видимого ответа, ни в виде цикла, не в простом виде fuser /dev. Я поставил вызов функции и до umount и после, ни та ни другая ни даёт ответа, но umount всёравно говори что устройство занято. Может тогда попробовать по списку устройств внутри папки dev? Или занятость папки не связана с занятостью ссылок внутри? Добавлено (20.04.2012, 03:30) --------------------------------------------- Раскопал информацию, о том как можно узнать о коде завершения программы. Если я правильно понял, то когда $? = 0 команда выполнена успешно, когда же $? = 1 это или любое другое число кроме нуля, это ошибка? После завершения работы fuser $? = 1 .
|
|
| |
Sh1td0wn | Дата: Пятница, 20.04.2012, 18:58 | Сообщение # 204 |
Программист
Группа: Модераторы
Сообщений: 3829
Статус: Отсутствует
| > umount всёравно говори что устройство занято cat /proc/mounts losetup -a
> Или занятость папки не связана с занятостью ссылок внутри? По идее, связана, и если файлы внутри директории заняты, занята и сама директория вплоть до своего mountpoint'а.
> Если я правильно понял, то когда $? = 0 команда выполнена успешно, когда же $? = 1 это или любое другое число кроме нуля, это ошибка? Верно.
> После завершения работы fuser $? = 1 . На любой диектории? Или он показывает правильные результаты хоть когда-нибудь? Смонтирован ли /proc на момент его запуска?
НАЖМИ МЕНЯ, прежде чем что-либо написать
|
|
| |
b0s | Дата: Пятница, 20.04.2012, 23:07 | Сообщение # 205 |
Ищущий
Группа: Пользователи
Сообщений: 22
Статус: Отсутствует
| Спасибо за ответ, обязательно проверю. Добавлено (20.04.2012, 21:45) ---------------------------------------------
Quote (Sh1td0wn) На любой диектории? Или он показывает правильные результаты хоть когда-нибудь? Смонтирован ли /proc на момент его запуска
Посмотрим. Проверю позже.Добавлено (20.04.2012, 22:58) --------------------------------------------- Ужас продолжается... И такс: Добавлено (20.04.2012, 23:06) --------------------------------------------- Результат вызова fuser одинаков во всех трёх случаях. Code fuser# возвращает 1 fuser /# возвращает 1 fuser /dev# возвращает 1
cat /proc/mounts# cat: can't open '/proc/mounts': No such file or directory losetup -a# /linuxrc: line 405: losetup: not found mount# mount: no /proc/mounts Добавлено (20.04.2012, 23:07) --------------------------------------------- umount /dev# же сейчас вообще промолчала, и возвратила 0. Видимо, пока все эти процедуры запускались, времени "чему-то" хватило, что бы отпустить /dev
|
|
| |
Sh1td0wn | Дата: Пятница, 20.04.2012, 23:10 | Сообщение # 206 |
Программист
Группа: Модераторы
Сообщений: 3829
Статус: Отсутствует
| Очевидно, это потому, что /proc был отмонтирован выше в скрипте. Попробуйте переместить отключение /dev и соответствующие проверки перед тем местом, где отключается /proc/.
НАЖМИ МЕНЯ, прежде чем что-либо написать
|
|
| |
b0s | Дата: Пятница, 20.04.2012, 23:31 | Сообщение # 207 |
Ищущий
Группа: Пользователи
Сообщений: 22
Статус: Отсутствует
| Ааа это я же паузу поставил перед девом. Забыл. Сча уберу. Добавлено (20.04.2012, 23:15) --------------------------------------------- Паузу убрал. /dev снова busy. Сейчас проверю, есть ли отсоединение /proc раньше. Добавлено (20.04.2012, 23:17) --------------------------------------------- Блин. А мы так не увидим с вами я боюсь от чего /dev in busy. Потому, что там ещё до массового umount, три или четыре функции и любая из них может мешать. Но всё же. Ой, что то во мне спорщик проснулся. Пойду поробовать. Добавлено (20.04.2012, 23:25) --------------------------------------------- Что именно необходимо найти в списках, которые представлены командами кэт и маунт? Добавлено (20.04.2012, 23:31) --------------------------------------------- Вот что тут есть с /dev:
cat /proc/mounts # /dev/root / squashfs ro,relatime 0 0 memfs dev/root / squashfs ro,relatime 0 0
mount # /dev/root on / type squashfs (ro,relatime) memfs on /dev type tmpfs (rw,relatime)
|
|
| |
Sh1td0wn | Дата: Пятница, 20.04.2012, 23:42 | Сообщение # 208 |
Программист
Группа: Модераторы
Сообщений: 3829
Статус: Отсутствует
| Если fuser молчал, а /dev был занят, это могло означать занятость директории ядром. Есть возможность поместить fuser /dev перед отмонтированием /dev и /proc?
НАЖМИ МЕНЯ, прежде чем что-либо написать
|
|
| |
b0s | Дата: Суббота, 21.04.2012, 00:09 | Сообщение # 209 |
Ищущий
Группа: Пользователи
Сообщений: 22
Статус: Отсутствует
| О! fuser заработала. Добавлено (21.04.2012, 00:09) --------------------------------------------- Почему то функция for не вызывает перебор pid добавляя его в cat. Я даже в for перед cat добавил echo c pid, но не работает. Нет результата перебора. А в режиме DEBUG=1 там просто один раз команда пишется и всё, никакого дополнительного вывода.
|
|
| |
Sh1td0wn | Дата: Суббота, 21.04.2012, 00:15 | Сообщение # 210 |
Программист
Группа: Модераторы
Сообщений: 3829
Статус: Отсутствует
| > Почему то функция for не вызывает перебор pid добавляя его в cat. А fuser-то пишет что-нибудь?
НАЖМИ МЕНЯ, прежде чем что-либо написать
|
|
| |
|
|