Освобождаем удалённые файлы без перезапуска процесса
Предыстория: Некоторые процессы не отпускают файловые дескрипторы (указатели на файл на диске) даже после удаления файла. Тогда при исследовании занимаемго места способом
1. Находим какие файлы удалены, изучаем что хотим освободить.
Предыстория: Некоторые процессы не отпускают файловые дескрипторы (указатели на файл на диске) даже после удаления файла. Тогда при исследовании занимаемго места способом
du -hs
вы не найдете файлы, при этом df -h
покажет что место используется. В таком случае это скорее всего именна та ситуация. Проверить можно с помощью lsof | grep deleted | less
. Самый простой способ решить проблему - перезапустить процесс. А если это не представляется возможным - подойдёт вот такой вариант:1. Находим какие файлы удалены, изучаем что хотим освободить.
# find /proc/*/fd -ls 2> /dev/null | grep '(deleted)' | grep logstash2. Руками или скриптом формируем очищение файла (файлов)
1945358443 0 l-wx------ 1 www-data www-data 64 Sep 12 14:26 /proc/1058699/fd/21 -> /opt/www/.pm2/logs/pm2-logstash-out.log\ (deleted)
1945358444 0 l-wx------ 1 www-data www-data 64 Sep 12 14:26 /proc/1058699/fd/22 -> /opt/www/.pm2/logs/pm2-logstash-error.log\ (deleted)
# truncate -s 0 /proc/1058699/fd/21#linux #filesystem