Я получил предупреждение, что локальный диск был заполнен;

dm@fooserv:/local/data/plog $ df -l
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/rootvg-datavol
                     121790564 115659468         0 100% /local/data
tmpfs                   102400      1028    101372   2% /var/asagent/lib/asagen

Я проверил каталог и увидел файл.

user@fooserv:/local/data/plog $ ls -ltr
total 84926904
lrwxrwxrwx 1 user ers_gsd          37 Aug 15 03:00 bomb.log -> /local/data/plog/bomb.31655.log
-rw-rw-rw- 1 user ers_gsd           0 Aug 15 03:00 recovery.log
drwxrwxrwt 2 user ers_gsd        4096 Aug 15 03:00 log/
-rw-rw-rw- 1 user ers_gsd           0 Aug 15 03:00 dropping.log
-rw-rw-rw- 1 user ers_gsd       10109 Aug 15 09:20 proc_fooserv.log
-rw-rw-rw- 1 user ers_gsd      381083 Aug 15 10:25 trip_bomb.rip.1.log
-rw-rw-rw- 1 user ers_gsd    60563456 Aug 15 13:35 bomb.31655.log
-rw-rw-rw- 1 user ers_gsd           0 Aug 15 13:37 bomb.stats
-rw-rw-rw- 1 user ers_gsd 86819237888 Aug 15 13:37 process-one.log

Я узнал, какой процесс создавал файлы, и убил их:

user@fooserv:/local/data/plog $ ps -ef | grep 12077
user    12077     1  0 09:20 ?        00:00:00 /bin/bash /home/user/bin/process_big.sh /local/data/plog/process-one.log
user    12085 12077  0 09:20 ?        00:00:35 tail -f /local/data/plog/process-one.log
user    12088 12077  0 09:20 ?        00:01:31 grep ERR
user    12095 12077  0 09:20 ?        00:02:06 grep -v FIXME
user    12098 12077 61 09:20 ?        02:38:56 /bin/bash /home/user/bin/process_big.sh /local/data/plog/process-one.log
user    22836 32756  0 13:36 pts/0    00:00:00 grep 12077
user@fooserv:/local/data/plog $ kill 12098
user@fooserv:/local/data/plog $ kill 12100

Я удалил файл:

user @ fooserv:/local/data/plog $ rm process-one.log

df все еще говорит, что каталог полон:

dm@fooserv:/local/data/plog $ df -l
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/rootvg-datavol
                    121790564 115659468         0 100% /local/data
   tmpfs                   102400      1028    101372   2% /var/asagent/lib/asagent
user@fooserv:/local/data/plog $

~

4 ответа4

2

Попытка проверить, не запущен ли еще процесс, который приводит к задержке файловых ресурсов.

lsof -nP | grep '(deleted)'

Должен дать вам отправную точку.

0

Я нашел это хорошее объяснение здесь:

https://access.redhat.com/solutions/2316

Как и в ответе R J, lsof | grep deleted очень помогает. После того как я определил основных нарушителей (т.е. десятки файлов в ГБ), я использовал echo > /proc/pid/fd/fd_number , где pid и fd идентифицированы, как в ссылке выше.

Это потребует sudo. Также помогает перезагрузка.

Связанный совет был особенно полезен, так как у нас было ограничение не перезапускать машину.

0

Вы уверены, что убили правильный процесс? Похоже, что 12077 - это тот, который открывает / создает / держит рассматриваемый файл.

0

Hymie, вероятно, прав - либо вы убили неправильный процесс, либо файл открыт более чем одному процессу. При удалении файла индекс был удален из таблицы каталогов, но пространство не освобождается, пока каждый процесс, использующий файл, не закроет его. Сам по себе он не заблокирован, но есть счетчик, который должен быть равен нулю, чтобы освободить место.

Попробуй ИСОФ. И так как вы уже удалили файл, посмотрите, что открыто в каталоге:

$ lsof +D /local /data /plog

Или одно из других заклинаний lsof: http://www.thegeekstuff.com/2012/08/lsof-command-examples/

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