Дано: обычный линукс. На нем работает демон и пишет логи в файл. По несчастливой случайности ротирующий скрипт стёр запись о файле из директории. Но демона не перезапустил, поэтому демон продолжает писать в тот же файл.
Задача: прочитать данные из этого файла.
Решившие задачу безработные (или желающие сменить место работы) сисадмины могут присылать резюме.
Tags:
no subject
no subject
- пид писающего демона.
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
если мало времени - то сюда http://recover.sourceforge.net/linux/recover/
удачи
no subject
lsofом найду inode, потом:
debugfs /dev/hda3
debugfs: cat <196511>
no subject
debugfs: cat <196511>
Ну cat не обязательно, есть другие команды в man debugfs.
no subject
хы
Re: хы
no subject
no subject
no subject
Но случайно его нельзя прочитать из /proc/[pid]/fd ?
no subject
no subject
по шагам для 2.6 (на другом лень проверять):
1) находим pid процесса. Далее pid
2) cd /proc//task//fd
3) ls -l | grep deleted. Пусть выдало n
4) cat n >>/path/to/real/file
no subject
cd /proc/pid/task/pid/fd
no subject
debugfs и -d? или там gdb и вставление в демона кода типа seek 0; read src; write dst? или стоит какая-нибудь экзотика типа http://amadeus.uprm.edu/~undelete/ ?
no subject
разве сложно?
Варианты для извращенцев (кодеров) и для тупых людей (админов): через gdb и через файловую систему.
(Типа задачи про место и время умерщвления мухи и двух поездов.)
Первых я ненавижу, поэтому этот шаг опустим.
Второй, для тупых. Вызнаём lsof-ом по имени процесса $pid и открытый номер $fd, лезем тупо в норку /proc/$pid/fd/$fd и шарим там кочергой.
После чего спасаемся бегством.
no subject
Проверил... действительно, блин, читается!
no subject
no subject
no subject
Решившие эту задачу под фрибзд 4-х программисты, могут присылать резюме нам (http://mail.ru) ;)
no subject
Хотя в общих чертах я себе этот процесс представляю, надо будет попробовать вживую.
А сколько у вас денег дают?
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
Насчет любых fs я не знаю, подразумеваются систмы с юниксовой логикой работы, в частности, родные ext2/ext3, когда удаленный из директории файл не удаляется с диска физически, пока его не закроет последний процесс.
no subject
Например cat /proc//fd/ ?
no subject
no subject
как-то я оттуда инфу доставал...
no subject
no subject
Приходят в голову также и экзотические решения, включающие аттач к демону ptrace()'ом с помощью gdb и вызовы read() :)
no subject
no subject
Ну, можно посмотреть в /proc/
Ну, можно посмотреть в /proc/<pid демона>/fd/<какой там у него fd для этого файла>
Но это совершенно неспортивно :)
no subject
no subject
no subject
no subject
(no subject)
(no subject)
(no subject)
(no subject)
no subject
cat `ls -l | grep deleted | awk '{print $9}'`
// Mon :-)
no subject
lsof.../proc/NNN ... дальше рассказывать?