Thursday, April 14th, 2005 05:41 pm

Дано: обычный линукс. На нем работает демон и пишет логи в файл. По несчастливой случайности ротирующий скрипт стёр запись о файле из директории. Но демона не перезапустил, поэтому демон продолжает писать в тот же файл.
Задача: прочитать данные из этого файла.

Решившие задачу безработные (или желающие сменить место работы) сисадмины могут присылать резюме.
Page 1 of 2 << [1] [2] >>
Thursday, April 14th, 2005 01:51 pm (UTC)
Черт, почему я не безработный сисадмин?...
Thursday, April 14th, 2005 02:05 pm (UTC)
совсем навскидку - в /proc//fd перечислены все дескрипторы, открытые процессом. Можно жрать оттуда.

- пид писающего демона.
Thursday, April 14th, 2005 02:06 pm (UTC)
/proc/pid/fd, естественно.

(no subject)

[identity profile] sha90w.livejournal.com - 2005-04-14 02:07 pm (UTC) - Expand

(no subject)

[identity profile] motto.livejournal.com - 2005-04-14 02:11 pm (UTC) - Expand

(no subject)

[identity profile] scarabeus.livejournal.com - 2005-04-14 02:25 pm (UTC) - Expand

(no subject)

[identity profile] dil.livejournal.com - 2005-04-14 02:34 pm (UTC) - Expand

(no subject)

[identity profile] dil.livejournal.com - 2005-04-14 02:35 pm (UTC) - Expand

(no subject)

[identity profile] jerom.livejournal.com - 2005-04-14 03:26 pm (UTC) - Expand

(no subject)

[identity profile] jerom.livejournal.com - 2005-04-14 07:26 pm (UTC) - Expand
Thursday, April 14th, 2005 02:58 pm (UTC)
Копирайты! Копирайты!
(Anonymous)
Thursday, April 14th, 2005 03:16 pm (UTC)
если много времени - идем сюда и читаем http://www.tldp.org/HOWTO/Ext2fs-Undeletion.html
если мало времени - то сюда http://recover.sourceforge.net/linux/recover/
удачи
Thursday, April 14th, 2005 03:20 pm (UTC)
Ну вот так:
lsofом найду inode, потом:
debugfs /dev/hda3
debugfs: cat <196511>
Thursday, April 14th, 2005 03:21 pm (UTC)
тьфу
debugfs: cat <196511>

Ну cat не обязательно, есть другие команды в man debugfs.

Thursday, April 14th, 2005 06:37 pm (UTC)
Так тоже можно, но есть горазздо более простой способ
Thursday, April 14th, 2005 03:29 pm (UTC)
а пока безработные или желающие сменить работу амины будут рещать задачу, вы бите следить, чтоб демон не помер и продолжал писать тот самый лог? :)))
Thursday, April 14th, 2005 06:38 pm (UTC)
Не, мы её уже решили :)
Thursday, April 14th, 2005 04:14 pm (UTC)
Просто lsof'ом посмотреть какой inode использует демон для этого файла и по нему к файлу обратиться. Да хотя б линк на него кинуть.
Thursday, April 14th, 2005 06:39 pm (UTC)
это работающий, но длинный способ. есть гораздо более простой.
Thursday, April 14th, 2005 04:25 pm (UTC)
Я не админ и совершенно ничего не понимаю в администрировании Linux.
Но случайно его нельзя прочитать из /proc/[pid]/fd ?
Thursday, April 14th, 2005 06:47 pm (UTC)
Ага, ответ правильный :)
Thursday, April 14th, 2005 04:55 pm (UTC)
тоже мне, Бином Ньютона ;)
по шагам для 2.6 (на другом лень проверять):
1) находим pid процесса. Далее pid
2) cd /proc//task//fd
3) ls -l | grep deleted. Пусть выдало n
4) cat n >>/path/to/real/file
Thursday, April 14th, 2005 04:58 pm (UTC)
2) похоже побился. Следует читать:
cd /proc/pid/task/pid/fd
Thursday, April 14th, 2005 05:21 pm (UTC)
а что рассматривается в качестве подручных средств?
debugfs и -d? или там gdb и вставление в демона кода типа seek 0; read src; write dst? или стоит какая-нибудь экзотика типа http://amadeus.uprm.edu/~undelete/ ?
Thursday, April 14th, 2005 06:46 pm (UTC)
есть гораздо более простой способ
Thursday, April 14th, 2005 05:47 pm (UTC)
Как я ненавижу линукс, а?!

Варианты для извращенцев (кодеров) и для тупых людей (админов): через gdb и через файловую систему.

(Типа задачи про место и время умерщвления мухи и двух поездов.)

Первых я ненавижу, поэтому этот шаг опустим.

Второй, для тупых. Вызнаём lsof-ом по имени процесса $pid и открытый номер $fd, лезем тупо в норку /proc/$pid/fd/$fd и шарим там кочергой.

После чего спасаемся бегством.
Thursday, April 14th, 2005 06:18 pm (UTC)
А я знаю!
Проверил... действительно, блин, читается!
Thursday, April 14th, 2005 06:37 pm (UTC)
Огласите весь спсок вакансий пжалссста! ;)
Thursday, April 14th, 2005 06:48 pm (UTC)
http://company.yandex.ru/inside/job/index.xml
Thursday, April 14th, 2005 06:59 pm (UTC)
Разрешите присоединиться к вашему компетишену:

Решившие эту задачу под фрибзд 4-х программисты, могут присылать резюме нам (http://mail.ru) ;)
Thursday, April 14th, 2005 07:40 pm (UTC)
Не, вы себе сами задачки придумывайте :)
Хотя в общих чертах я себе этот процесс представляю, надо будет попробовать вживую.
А сколько у вас денег дают?

(no subject)

[identity profile] int21h.livejournal.com - 2005-04-14 08:14 pm (UTC) - Expand

(no subject)

[identity profile] sigterm.livejournal.com - 2005-04-15 05:13 am (UTC) - Expand

(no subject)

[identity profile] bobuk.livejournal.com - 2005-04-14 08:29 pm (UTC) - Expand

(no subject)

[identity profile] dil.livejournal.com - 2005-04-15 04:00 am (UTC) - Expand

(no subject)

[identity profile] icelord.livejournal.com - 2005-04-15 07:33 am (UTC) - Expand

(no subject)

[identity profile] bobuk.livejournal.com - 2005-04-15 08:34 am (UTC) - Expand

(no subject)

[identity profile] dil.livejournal.com - 2005-04-15 09:00 am (UTC) - Expand

(no subject)

[identity profile] lazyreader.livejournal.com - 2005-04-15 09:50 am (UTC) - Expand

(no subject)

[identity profile] dil.livejournal.com - 2005-04-15 08:16 pm (UTC) - Expand

(no subject)

[identity profile] lazyreader.livejournal.com - 2005-04-17 08:19 pm (UTC) - Expand

(no subject)

[identity profile] int21h.livejournal.com - 2005-04-15 05:03 am (UTC) - Expand

(no subject)

[identity profile] bobuk.livejournal.com - 2005-04-15 08:34 am (UTC) - Expand
Thursday, April 14th, 2005 07:28 pm (UTC)
Что-то мне в голову никаких больше более-менее файлосистемнонезависимых способов не приходит. Ну разве только mc уже научился делать undelete на любых файловых системах :)
Thursday, April 14th, 2005 07:42 pm (UTC)
Хинт: существенно, что это линукс.
Насчет любых fs я не знаю, подразумеваются систмы с юниксовой логикой работы, в частности, родные ext2/ext3, когда удаленный из директории файл не удаляется с диска физически, пока его не закроет последний процесс.
Thursday, April 14th, 2005 07:50 pm (UTC)
О, боги, какой я тормоз :))) Действительно, очень простой способ.
Например cat /proc//fd/ ?
Thursday, April 14th, 2005 07:58 pm (UTC)
Во-о-от!
Thursday, April 14th, 2005 09:16 pm (UTC)
/proc/$pid/fd/что-то
как-то я оттуда инфу доставал...
Friday, April 15th, 2005 04:02 am (UTC)
Ага :)
Thursday, April 14th, 2005 09:20 pm (UTC)
Ну, к примеру -- посмотреть lsof'ом номер открытой inode'ы и debugfs'ом (если дело на ext2/3) либо сдампить её, либо сделать еще один линк.
Приходят в голову также и экзотические решения, включающие аттач к демону ptrace()'ом с помощью gdb и вызовы read() :)
Friday, April 15th, 2005 04:01 am (UTC)
Это сложный способ. А есть простой.
Friday, April 15th, 2005 07:09 am (UTC)
Зануда :)
Ну, можно посмотреть в /proc/
[Error: Irreparable invalid markup ('<pid демона>') in entry. Owner must fix manually. Raw contents below.]

Зануда :)
Ну, можно посмотреть в /proc/<pid демона>/fd/<какой там у него fd для этого файла>
Но это совершенно неспортивно :)
Friday, April 15th, 2005 07:24 am (UTC)
lsof?
Friday, April 15th, 2005 08:01 am (UTC)
Ну. А дальше?
Friday, April 15th, 2005 07:53 am (UTC)
(заинтересованно) таки что вы можете предложить? :)))))
Friday, April 15th, 2005 08:53 am (UTC)
Таки где ж решение, а то прямо и не знаю чего предлагать :)

(no subject)

[identity profile] alexkuklin.livejournal.com - 2005-04-15 09:03 am (UTC) - Expand

(no subject)

[identity profile] dil.livejournal.com - 2005-04-15 09:13 am (UTC) - Expand

(no subject)

[identity profile] aklyachkin.livejournal.com - 2005-04-15 11:17 am (UTC) - Expand

(no subject)

[identity profile] jerom.livejournal.com - 2005-04-15 11:57 am (UTC) - Expand
(Anonymous)
Friday, April 15th, 2005 09:17 am (UTC)
cd /proc/`pidof daemon/fd/;
cat `ls -l | grep deleted | awk '{print $9}'`

// Mon :-)
Friday, April 15th, 2005 09:40 am (UTC)
хм, на заскриненое на дает ответить, а ты ответ хочешь... в общем
lsof.../proc/NNN ... дальше рассказывать?
Page 1 of 2 << [1] [2] >>