Что ест мое дисковое пространство?

Я понимаю страницу справочника для getrlimit(2) что это ограничивает количество потоков (не релевантный здесь), который может работать как реальный пользователь.

Я не уверен, что понимаю то, что Вы делаете, поэтому терпите меня. Вы запускаете программу, которая берет сценарий, который Вы перечисляете, и выполнения что как ребенок. Между тем Вы работаете ps проверять на PIDs?

Оболочка, которую выполняет пользователь, конечно, один, программа, запускающая сценарий другой, затем существует выполнение сценария, и PS делает 5. Если теперь PS попытается запустить поток в своих собственных внутренних целях, то он перестанет работать из-за предела 5 процессам.

То, что Вы описываете, похоже на некоторый эксперимент, чтобы видеть, как сделать что-то. Какую проблему Вы действительно пытаетесь решить? Без knowning, что то есть, действительно нет никакого способа для нас предложить лучшие альтернативы (или сказать Вам, как сделать то, что Вы хотите).

11
13.04.2017, 15:37
6 ответов

Используйте что-то как

lsof -s | grep deleted | sort -k 8

видеть, какие процессы сохраняют удаленные файлы открытыми. Важные поля являются вторыми (PID) и восьмыми (треть от в последний раз; размер файла).

(Обратите внимание на дублированные строки, не считайте их дважды. Проверьте PID и путь к файлу (последнее поле) или inode число (предпоследнее поле).)

После этого, если Вы находите процесс, который вероятен преступник, мы видим, как зафиксировать его.

7
27.01.2020, 19:57
  • 1
    Хорошее предложение, но на моей машине, эта команда сообщает о только 2 открытых удаленных файлах с размером 2k, который находится на далеком расстоянии 2.7G используемый со временем некоторым случайным процессом. –  Arry 08.02.2014, 14:24
  • 2
    Это было большим предложением, и оно действительно помогло мне решить проблему, подобную родительскому вопросу. У меня было огромное несоответствие между командами du и df. В моем конкретном случае у меня есть вращающиеся журналы и сервис что вперед журналы (logstash в этом примере). logstash сервис сохранял повернутые журналы открытыми, даже когда удалено. Это вызывало несоответствие между du и df. После того как logstash сервис был перезапущенным дисковым пространством, обнаружился правильно. –  aemus 25.03.2015, 23:00
  • 3
    , который у меня был процесс, пишущий append-only-file, который вырос неограниченно долго и в конечном счете заполнил мой диск. Затем я решил к комнате, что файл, но процесс не закрыл свой дескриптор файла, таким образом, это так или иначе все еще использовалось. Перезапуск процесса и ограничение размера AOF решили мою проблему. –  aviggiano 24.07.2015, 17:49
find / -size +10000k -print0 | xargs -0 ls -l -h

Используйте это для нахождения рекурсивно, что заполняет больше чем 10 МБ + от /(корень) и дисплей это с партиями детализирует с ls -l в xargs. Если Вы пишете 1000000 (2 дополнительных нуля), можно получить 1 ГБ +, например.

du / -h --max-depth=1 | sort -h

Можно также использовать du и просто вырыть в него вручную.

4
27.01.2020, 19:57

Повторное выполнение

sudo du -x   -d1 -h /

(вниз дерево каталогов), должен сказать Вам, где место занимается. Это, вероятно, объясняет без дальнейшего расследования, какое приложение вызывает это.

невидимые файлы

Если du не показывает эти файлы затем, одна из возможностей является удаленными файлами. Файл (или скорее: его имя т.е. его запись в каталоге), может быть удален, в то время как файл все еще используется. Пока существует дескриптор правильного файла, указывающий на этот файл, он покрывает пространство на объеме (если это не пустой файл...).

cat >file &
ls -l file
rm file
ls -l file
# PID of cat is 19834
ls -l /proc/19834/fd
lrwx------ 1 hl hauke 64 11. Feb 19:16 0 -> /dev/pts/0
l-wx------ 1 hl hauke 64 11. Feb 19:16 1 -> /crypto/home/hl/tmp/file (deleted)
lrwx------ 1 hl hauke 64 11. Feb 19:15 2 -> /dev/pts/0

Можно найти эти файлы с find:

find /proc/ -mindepth 3 -maxdepth 3 \
-regex '/proc/[1-9][0-9]*/fd/[1-9][0-9]*' -type l -lname '*(deleted)' \
-printf '%p\n     %l\n' 2>/dev/null

Это может быть один единственный огромный файл или набор меньших файлов, которые вызывают Вашу проблему. Существует приблизительно 30 таких файлов в моей системе теперь (принадлежащий только пяти процессам). ls -l показывает размер этих файлов, но это, кажется, не возможно получить это значение от find.

После уничтожения процесса пространство становится доступным файловой системе (df) снова.

13
27.01.2020, 19:57
  • 1
    Это не рассматривает мой вопрос. du отчеты никакое изменение в занимавшем месте: 7.3G в запуске и 7.3G после передач времени. df отчеты 7.3G свободный в запуске и до 10G как передачи времени. Я не могу найти проблему с du. –  Arry 08.02.2014, 14:21
  • 2
    @Arry Действительно, я читал слишком быстро. –  Hauke Laging 11.02.2014, 21:15

Каждый раз, когда это происходит, я всегда запускаю свой фокус в определенных подкаталогах. Структура FHS, которой придерживается большинство дистрибутивов Linux, размечается с этим в памяти.

Сначала загляните /var, сопровождаемый /home.

$ sudo du -x -d1 -h /var  | sort -hr`

$ sudo du -x -d1 -h /home | sort -hr`

Можно сузить фокус к подкаталогам в любом из тех местоположений также. После того как Вы исчерпали взгляд там, я обычно перемещаюсь в /root, и наконец остающиеся подкаталоги в /.

Если это - основанный на Red Hat дистрибутив кэш это yum использование для выполнения обновлений могло бы использовать большую сумму пространства. Можно использовать эту команду для очистки его:

$ yum clean packages

Другие дистрибутивы то использование apt может сделать что-то подобное, apt-get clean.

Я также выполнил эту команду наверху Вашего / каталог, это местоположение может иногда становиться источником для случайных файлов журнала.

$ ls -la /

Обратите особое внимание для отмечания точкой файлов! Вещи называют .blah, например.

1
27.01.2020, 19:57

Возможно, вам понадобится обертка FCGI, выполняющая весь материал с помощью команды php-cgi. Укажите это в vhost:

AllowOverride All Параметры = ExecCGI, Includes, NOEXEC, индексы, MultiView, SymLinks IfOwterMatch AddHandler fcgid-script .php AddHandler fcgid-script .php5 FCGIWrapper/home/.../fcgi-bin/php5.fcgi .php FCGIWrapper/home/.../fcgi-bin/php5.fcgi .php5

Затем подготовьте сценарий /home/.../fcgi-bin/php5.fcgi

# !/bin/bash PHPRC = $ PWD/../etc/php5 экспорт PHPRC umask 022 экспорт PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=99999 экспорт PHP_FCGI_MAX_REQUESTS SCRIPT_FILENAME=$PATH_TRANSLATED экспорт SCRIPT_FILENAME exec/usr/bin/php5-cgi

-121--174144-

Согласно информационной странице, GNU date принимает другие формы, которые можно использовать. Вот пример:

FileName=$(date --date '1 day ago' +"%Y%m%d")
FileName=$(date --date 'last Friday' +"%Y%m%d")

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

-121--216768-

У меня почти такая же ситуация.

В моем случае причиной была VMware. Одна из других VMwares на той же машине потребила места. Поэтому мое дисковое пространство использовалось на 100%.

После удаления больших файлов из соседней VMware она работает правильно.

0
27.01.2020, 19:57

timeshift ел мой диск. Удаление одного снимка:

sudo timeshift --delete  --snapshot '2014-10-12_16-29-08'

Чтобы удалить все снимки:

sudo timeshift --delete-all
2
24.03.2020, 14:59

Теги

Похожие вопросы