Когда я делаю
du -h --max-depth=1
на моем сервере появляются следующие ошибки,
du: cannot access `./proc/13379/task/13379/fd/4': No such file or directory
du: cannot access `./proc/13379/task/13379/fdinfo/4': No such file or directory
du: cannot access `./proc/13379/fd/4': No such file or directory
du: cannot access `./proc/13379/fdinfo/4': No such file or directory
если я сделаю
rm -rf /proc/13379/*
чтобы удалить папку, она возвращается с другим pid.
Как мне узнать, какой процесс использует это и какие проблемы с этими ссылками на файлы?
Фактически, папка «/ proc /» предназначена для размещения информации о процессе и связи с irq, файловым дискриптором и другими источниками ядра (которые, как ожидается, будут видеть ссылку цикла и в зависимости от работы самого процесса).
Следовательно, его невозможно удалить, когда процесс запущен и работает, поскольку процесс занимает ресурс в этой папке. Кроме того, PID выражается в "/ proc / {PID}", поэтому вам не нужно использовать какие-либо команды (например, lsof) для поиска того, какой процесс использует эту ссылку на файл. В приведенном выше случае «13379» - это идентификатор процесса, который вы ищете.
Как упоминалось выше, / proc - это служебная информация от запущенных на машине процессов. Это виртуальная файловая система, не занимает места на диске и содержит только символические ссылки и «файлы» с информацией, которые генерируются ядром или читаются ядром (некоторые из них доступны для записи).
Однако эти сообщения об ошибках совершенно безвредны. Что случилось, так это du
собрал список каталогов в / proc (которые являются идентификаторами процессов), и когда он попытался спуститься в каталог или даже находясь внутри него, процесс завершился и соответствующий ему каталог исчез. Это смущает du
.
Чтобы избежать таких ошибок, вы можете пропустить / proc с --ecxlude=/proc
или используйте другие параметры, например --one-file-system
или --exclude-from=FIlE
так что вы также можете пропустить / dev, / sys и т. д.