2

У меня на моем FreeBSD 8.4 запущен процесс nohup. Изначально я просматривал вывод сообщений консоли nohup через

tail -f nohup.out

Но я случайно удалил файл nohup.out. Как я могу получить доступ к сообщениям консоли сейчас?

1 ответ1

1

Да, хотя файл все еще находится там до тех пор, пока процесс сохраняет его открытым, поскольку он не unlink ссылками, он больше недоступен.

Если вам нужно продолжать видеть сообщения по мере их создания, вы можете включить ktrace для процесса, который их генерирует:

% ktrace -p PID
% kdump -l

Выше перечислены все системные вызовы, сделанные процессом, однако, не только записи в stdout и stderr , так что это может быть немного подавляющим и / или требовать дополнительной фильтрации, чтобы получить только то, что вы хотите видеть.

Если вам нужна копия файла, вы можете использовать одну из утилит общего назначения, таких как tsk_recover из порта sysutils/sleuthkit . Обычный разум не записывать в файловую систему, содержащую случайно удаленные файлы, которые вы хотите восстановить, не применимо, потому что у вас все еще есть процесс, сохраняющий файл открытым.

Однако при восстановлении будет создана копия удаленного файла - все, что будет записано в него тем же процессом позже, не будет в копии.

Извините, я не могу думать ни о чем другом ... В Solaris я однажды смог восстановить удаленный файл, который все еще был открыт процессом, перейдя в /proc/PID/fd/... , но procfs во FreeBSD не предлагает такой функциональности ...

Согласно этому ответу, метод /proc/PID/fd также будет работать в Linux, но linprocfs во FreeBSD также не предлагает эту функцию. Стыдно, правда ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .