Как удалить файл «dead.letter», который не оставил свободного места в корневом каталоге - PullRequest
6 голосов
/ 14 декабря 2011
  1. Сегодня я заметил, что файл dead.letter создается в моем корневом каталоге на одном из экземпляров EC2.
  2. После некоторого поиска я узнал, что он создан из-за некоторых неполных или прекращенных функций электронной почты.
  3. Имеет размер 6 ГБ и не оставляет свободного места в корневом каталоге.
  4. Я удалил файл, но мой корневой каталог не показывает свободного места.

Есть идеи, как удалить этот файл и освободить корневое пространство?

Ответы [ 3 ]

7 голосов
/ 14 декабря 2011

Если вы удалили его, а пространство все еще не освобождено, то это означает, что у процесса открыт дескриптор файла.

Попробуйте найти PID процесса, используя, например:

for process in /proc/[0-9]*; do
    for fd in $process/fd/*; do
        file=$(readlink -f $fd)
        if [ "$file" = "/root/dead.letter" ]; then
            echo $process
        fi
    done
done

Тогда убей его / их.

3 голосов
/ 29 апреля 2016

Вы, ребята, знаете о lsof (http://linux.die.net/man/8/lsof)?

В этом случае:

sudo lsof /root/dead.letter

Это выводит информацию о процессе с открытым файлом. Вывсе равно придется убить этот процесс.

1 голос
/ 14 декабря 2011

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

Убить такие процессы, и место на диске будетосвобожден

Вы можете использовать (ps -ef | grep process_name), чтобы узнать идентификатор процесса.

...