Назад | Перейти на главную страницу

/ tmp было 1,8 ГБ; удаление файлов старше 8 дней удалило только ~ 300мб .. зачем столько места?

Я использую веб-сервер на CentOS.

Сегодня я не мог запускать SQL-запросы. После расследования error 28мой /tmp каталог не может быть записан.

Я побежал du /tmp и было 1,8Гб. Я тогда побежал find /tmp -type f -mtime +8 -exec rm -f {} \; что освободило 300Мб места.

На данный момент это сделало свою работу - MySQL снова может работать.

Однако мне любопытно, почему на сервере так много файлов /tmp каталог. Я дважды перезапускал сервер, и размер каталога остался прежним. Разве большинство дистрибутивов Linux не очищают временные файлы при перезагрузке?

Если я сбегу ls /tmp, Я получаю огромный список файлов этого типа:

tempCaa7Nw                             tempk7uZU4  temps3GaF1  tempzzWWjV
tempcAbH5o                             tempK7VCdu  temps3hRWv  tempZzXHPM
tempCabZXR                             tempk7VwjK  temps3IdYj  tempzzxZWw
tempcAcQtu                             tempk7W0SI  tempS3IGMF  tempzZy7FM
tempCaCTkx                             tempk7xrzw  tempS3iMfj  tempzZy8L6
tempcAcur7                             tempk7yX3J  tempS3izd5  tempZZYKXr
tempcaCwnz                             tempk81EIE  tempS3JU5s  tempzZyQLO
tempcAdpAk                             tempk81Qpo  tempS3kaNx  tempzZZos7
tempCaeFae                             tempk81ZLV  tempS3KYOx
tempcaEGmt                             tempk83VVy  tempS3LI1u

Полный список Вот.

Мне нужно выяснить, что вызывает такое количество временных файлов? Или мне просто нужно увеличить размер (что ли?) Моего /tmp каталог? Это где-то в конфигурационном файле?

Я плохой администратор Linux, поэтому прошу прощения за мое незнание.


РЕДАКТИРОВАТЬ для @JeffFerland

Вот результаты grep /tmp на lsof выходной файл.

mysqld     4649   mysql    4u      REG                7,0         0     103774 /                                          tmp/ib4mpAJ8 (deleted)
mysqld     4649   mysql    5u      REG                7,0         0     103775 /                                          tmp/ibvE7FxN (deleted)
mysqld     4649   mysql    6u      REG                7,0         0     103776 /                                          tmp/ibPe3Lls (deleted)
mysqld     4649   mysql    7u      REG                7,0         0     103777 /                                          tmp/ib656Kb7 (deleted)
mysqld     4649   mysql   11u      REG                7,0         0     103778 /                                          tmp/ibpptQzP (deleted)
cp         7997    root    3r      REG                7,0     18897      28260 /                                          tmp/tempF091j1
cp         7997    root    4w      REG                9,1         0     297690 /                                          tmp_bu/tmp/tempF091j1 (deleted)

ДОПОЛНИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ Удалив вчера ~ 300Мб файлов, мой /tmp каталог вернулся к своему исходному размеру 1,8 ГБ, и снова MySQL не работает правильно.

Пожалуйста помоги!

Одна вещь, которую вы можете попробовать, - это использовать lsof команда, чтобы вывести список всех файлов, которые в настоящее время используются ОС. Это может дать вам представление о том, какие запущенные процессы создают / используют эти файлы /temp.*/. Оттуда, предполагая, что вы выясните, какой процесс является виновником, я бы углубился и посмотрел, какие параметры конфигурации могут быть доступны для уменьшения файлового спама.

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

Разные системы делают разные вещи. Я работал над системами, которые очищали / tmp при перезагрузке (sequent mini), но в большинстве дистрибутивов Linux, с которыми я сталкивался, есть задание cron tmpwatch, которое очищает / tmp.

Некоторые программы создают файл tmp, а затем удаляют его, оставляя дескриптор файла открытым, так что, если программа завершится или умирает по какой-либо причине, пространство будет освобождено. Вы могли бы сделать

lsof|grep deleted

чтобы увидеть, какие файлы открыты, но удалены. Затем вы можете посмотреть / proc // fd и увидеть, какие файлы самые большие и в каком процессе они открыты.

Возможно, будет полезно создать специальный том для MySQL, / tmp-mysql, и указать MySQL на этот путь, установив TMP = / tmp-mysql для стартового скрипта. Таким образом, MySQL должен оставаться работоспособным даже при заполнении / tmp.