Главная страница | Добавить в избранное    
   

 

» Материалы за Апрель 2017 года

   
main1
pix
 

Куда девалось место в файловой системе?

Статьи  
pix pix pix

Например, есть некий процесс, непрерывно пишущий огромный лог. Кто-то этот самый лог удаляет командой rm, и мы наблюдаем странные вещи: свободное место на разделе уменьшается, а файла, занимающего кучу места, нет! Дело в том, что даже после удаления файла из файловой системы, в структурах памяти ОС остаётся открытым т.н. дескриптор файла. А пока у файла остаётся хотя бы один дескриптор (и не важно, в памяти он или на файловой системе), место на диске не освобождается.
Как быть? В Linux есть псевдо-файловая система /proc, из которой при необходимости можно вытащить массу важной ниформации. Итак, поищем открытые файлы, которые были удалены:

find /proc/*/fd -ls | grep  '(deleted)'

Вывод будет выглядеть примерно вот так:

886997021    0 l-wx------   1 root root       64 Apr 12 12:19 /proc/13534/fd/29 -> /var/log/nginx/ssl.access.log.1\ (deleted)
886997022    0 l-wx------   1 root root       64 Apr 12 12:19 /proc/13534/fd/30 -> /var/log/nginx/ssl.error.log.1\ (deleted)

Имена псевдо-директорий в файловой системе /proc, выделенные красным - это pid процессов, которые держат открытыми удалённые файлы. Тут надо принять решение, что делать с процессами. Можно просто убить, можно остановить соответствующие сервисы, можно просто усечь файл:

# Усечём первый файл из списка:
echo > /proc/13534/fd/29

Этот способ сработает в Linux, но можно попробовать и на других UNIX-like ОС.



 
Автор: hellevil | 12-04-2017, 12:22 | Просмотров: 1 692 Подробнее
 
pix
 
pix
search
navi
poll
calendar
«    Апрель 2017    »
ПнВтСрЧтПтСбВс
 12
3456789
10111213141516
17181920212223
24252627282930
main4
pix pix pix

2007 © www.DesktopBSD.ru
Все права сохранены