Quantcast
Channel: Unix — Tru64 — Unix pin
Viewing all articles
Browse latest Browse all 10

Прибил файл, а место не освобождается?

$
0
0

Обычно, когда заканчивается место на файловой системе — ищем растущие файлы (обычно это логи всякие) и удаляем их.
Итак, как правильно удалять файлы? ;)
Проверяем, что этот файл не открыт каким-нибудь процессом:
fuser /dir/filename

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

А что делать, если никто ничего не проверял, файлик грохнули, а вот место не освободилось?

Ищем процессы с открытыми файлами, у которых количество ссылок равно 0.
# find /proc/*/fd/* -type f -links 0
bash: /usr/bin/find: Arg list too long

Вот блин, слишком много процессов для find. Ок, пойдем другим путем:

# for i in `ls -1 /proc`;do find /proc/$i/fd -type f -links 0 -ls -exec file {} \; ;done
2403 0 -rw-rw---- 0 oracle dba 0 Dec 1 00:17 /proc/22973/fd/11
/proc/22973/fd/11: empty file
2403 0 -rw-rw---- 0 oracle dba 0 Dec 1 00:17 /proc/23095/fd/11
/proc/23095/fd/11: empty file
find: stat() error /proc/23165/fd: No such file or directory
find: stat() error /proc/23168/fd: No such file or directory
2403 0 -rw-rw---- 0 oracle dba 0 Dec 1 00:17 /proc/23289/fd/11
/proc/23289/fd/11: empty file
2403 0 -rw-rw---- 0 oracle dba 0 Dec 1 00:17 /proc/23291/fd/11
/proc/23291/fd/11: empty file
2403 0 -rw-rw---- 0 oracle dba 0 Dec 1 00:17 /proc/23293/fd/11
/proc/23293/fd/11: empty file
2403 0 -rw-rw---- 0 oracle dba 0 Dec 1 00:17 /proc/23298/fd/11
/proc/23298/fd/11: empty file
702090358 8 -rw------- 0 root root 20489865 Nov 30 16:48 /proc/912/fd/6
/proc/912/fd/6: data

Ну вот, похоже процесс, который держит файлик — 912.
Ну и дальше
# ps -f -p 912
UID PID PPID C STIME TTY TIME CMD
root 912 1 0 Nov 30 ? 5:45 /my-process.pl
# kill -9 912


Viewing all articles
Browse latest Browse all 10

Trending Articles