Я понимаю страницу справочника для getrlimit(2)
что это ограничивает количество потоков (не релевантный здесь), который может работать как реальный пользователь.
Я не уверен, что понимаю то, что Вы делаете, поэтому терпите меня. Вы запускаете программу, которая берет сценарий, который Вы перечисляете, и выполнения что как ребенок. Между тем Вы работаете ps
проверять на PIDs?
Оболочка, которую выполняет пользователь, конечно, один, программа, запускающая сценарий другой, затем существует выполнение сценария, и PS делает 5. Если теперь PS попытается запустить поток в своих собственных внутренних целях, то он перестанет работать из-за предела 5 процессам.
То, что Вы описываете, похоже на некоторый эксперимент, чтобы видеть, как сделать что-то. Какую проблему Вы действительно пытаетесь решить? Без knowning, что то есть, действительно нет никакого способа для нас предложить лучшие альтернативы (или сказать Вам, как сделать то, что Вы хотите).
Используйте что-то как
lsof -s | grep deleted | sort -k 8
видеть, какие процессы сохраняют удаленные файлы открытыми. Важные поля являются вторыми (PID) и восьмыми (треть от в последний раз; размер файла).
(Обратите внимание на дублированные строки, не считайте их дважды. Проверьте PID и путь к файлу (последнее поле) или inode число (предпоследнее поле).)
После этого, если Вы находите процесс, который вероятен преступник, мы видим, как зафиксировать его.
find / -size +10000k -print0 | xargs -0 ls -l -h
Используйте это для нахождения рекурсивно, что заполняет больше чем 10 МБ + от /
(корень) и дисплей это с партиями детализирует с ls -l
в xargs
. Если Вы пишете 1000000 (2 дополнительных нуля), можно получить 1 ГБ +, например.
du / -h --max-depth=1 | sort -h
Можно также использовать du и просто вырыть в него вручную.
Повторное выполнение
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
) снова.
du
отчеты никакое изменение в занимавшем месте: 7.3G в запуске и 7.3G после передач времени. df
отчеты 7.3G свободный в запуске и до 10G как передачи времени. Я не могу найти проблему с du
.
– Arry
08.02.2014, 14:21
Каждый раз, когда это происходит, я всегда запускаю свой фокус в определенных подкаталогах. Структура 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
, например.
Возможно, вам понадобится обертка 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
Согласно информационной странице, 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 она работает правильно.
timeshift
ел мой диск. Удаление одного снимка:
sudo timeshift --delete --snapshot '2014-10-12_16-29-08'
Чтобы удалить все снимки:
sudo timeshift --delete-all