Попытка проверить, не запущен ли еще процесс, который приводит к задержке файловых ресурсов.
lsof -nP | grep '(deleted)'
Должен дать вам отправную точку.
Я получил предупреждение, что локальный диск был заполнен;
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 $ ~
Попытка проверить, не запущен ли еще процесс, который приводит к задержке файловых ресурсов.
lsof -nP | grep '(deleted)'
Должен дать вам отправную точку.
Вы уверены, что убили правильный процесс? Похоже, 12077
это тот, который открывает / создает / содержит файл, о котором идет речь.
Hymie, вероятно, прав - либо вы убили неправильный процесс, либо файл открыт более чем одному процессу. При удалении файла индекс был удален из таблицы каталогов, но пространство не освобождается, пока каждый процесс, использующий файл, не закроет его. Сам по себе он не заблокирован, но есть счетчик, который должен быть равен нулю, чтобы освободить место.
Попробуй ИСОФ. И так как вы уже удалили файл, посмотрите, что открыто в каталоге:
$ lsof + D / local / data / plog
Или одно из других заклинаний lsof: http://www.thegeekstuff.com/2012/08/lsof-command-examples/
Я нашел это хорошее объяснение здесь:
https://access.redhat.com/solutions/2316
Как и в ответе RJ, lsof | grep deleted
это очень помогает. После того, как я определил основных нарушителей (т.е. десятки файлов ГБ), я использовал echo > /proc/pid/fd/fd_number
, где pid и fd идентифицированы, как в ссылке выше.
Это потребует sudo. Также помогает перезагрузка.
Связанный совет был особенно полезен, так как у нас было ограничение не перезапускать машину.