Я прочитал десятки сообщений на его тему, но не могу найти решение, которое работает для меня.
У меня есть учетная запись пользователя. Сеансы PHP для этой учетной записи хранятся в
/home/user/tmp
. Apache начинает выдавать ошибки, из-за которых я не могу открыть сессии, потому что устройство заполнено.
df и df -i показывают, что на устройстве достаточно места.
Так что я смотрю в каталог / home / user / tmp. Это показывает, что размер каталога составляет 901 МБ.
Я хочу удалить файлы сеанса из каталога.
Я пытался
rm -rf /home/user/tmp/sess_*
Я позволил его бегу более часа, затем использовал cntr+C
, чтобы убить команду. В каталоге еще написано 901 МБ.
Я перезагрузил систему, каталог по-прежнему показывает в 901MB.
Я пытался
find /home/*/tmp -type f -name 'sess_*' -ctime +5 -delete
Так же, как и с rm -rf
, я позволил команде работать более часа и убил ее.
В каталоге по-прежнему отображается 901 МБ.
Я выдаю эти команды от имени пользователя root. Я использую Ubuntu 16.04. Это сервер, поэтому будут работать только параметры командной строки.
Что я могу сделать, чтобы удалить эти файлы сеанса?
Если много маленьких файлов, удаление может занять значительное время. Позвольте этому бежать, пока это не заканчивается. Это должно в конечном итоге закончить.
Я провел быструю проверку своей системы, и удаление 100 тыс. Пустых файлов на диске SSD с ext4 заняло 1,14 секунды. Если у вас есть десятки миллионов файлов, это может занять некоторое время.
Часто вы не можете удалить файлы сеанса даже с помощью такой команды, как sudo rm -rf /var/lib/php/sessions/*
, потому что расширение имени пути происходит ДО sudo (https://serverfault.com/a/851261/591003).
Вы можете попробовать другую команду, например sudo sh -c "rm -rf /var/lib/php/sessions/*"
, но если у вас много файлов, вы получите ответ, что rm: Список аргументов слишком длинный
, потому что список файлов сеанса обычно очень велик (до миллионов файлов).
Предлагаю очень простой способ:
mkdir /var/lib/php/sessions_new
sudo chmod --reference=sessions session_new
sudo chown --reference=sessions session_new
sudo rm -rf /var/lib/php/sessions
sudo find /var/lib/php/sessions/. -тип f|wc -l
. Эта команда подсчитывает количество файлов в папке sessions. Запустите его два раза. Если при втором запуске команды вы получите меньшее число, чем в первый раз, значит, процесс идет в правильном направлении. mv /var/lib/php/sessions_new /var/lib/php/sessions