Не могу удалить сессии php

Я прочитал десятки сообщений на его тему, но не могу найти решение, которое работает для меня.

У меня есть учетная запись пользователя. Сеансы 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. Это сервер, поэтому будут работать только параметры командной строки.

Что я могу сделать, чтобы удалить эти файлы сеанса?

0
задан 3 June 2019 в 02:10

2 ответа

Если много маленьких файлов, удаление может занять значительное время. Позвольте этому бежать, пока это не заканчивается. Это должно в конечном итоге закончить.

Я провел быструю проверку своей системы, и удаление 100 тыс. Пустых файлов на диске SSD с ext4 заняло 1,14 секунды. Если у вас есть десятки миллионов файлов, это может занять некоторое время.

0
ответ дан 3 June 2019 в 02:10

Часто вы не можете удалить файлы сеанса даже с помощью такой команды, как sudo rm -rf /var/lib/php/sessions/*, потому что расширение имени пути происходит ДО sudo (https://serverfault.com/a/851261/591003).

Вы можете попробовать другую команду, например sudo sh -c "rm -rf /var/lib/php/sessions/*", но если у вас много файлов, вы получите ответ, что rm: Список аргументов слишком длинный, потому что список файлов сеанса обычно очень велик (до миллионов файлов).

Предлагаю очень простой способ:

  1. Создать новую папку sessions_new: mkdir /var/lib/php/sessions_new
  2. Выставить те же разрешения, что и для старой session directory: sudo chmod --reference=sessions session_new
  3. Проделайте то же самое с владельцем: sudo chown --reference=sessions session_new
  4. Убейте его! sudo rm -rf /var/lib/php/sessions
  5. Вам не нужно долго ждать результата. Вы можете сразу проверить это в новом окне терминала, выполнив sudo find /var/lib/php/sessions/. -тип f|wc -l. Эта команда подсчитывает количество файлов в папке sessions. Запустите его два раза. Если при втором запуске команды вы получите меньшее число, чем в первый раз, значит, процесс идет в правильном направлении.
  6. Подождите долго :P
  7. Когда процесс завершится, просто переименуйте каталог session_new: mv /var/lib/php/sessions_new /var/lib/php/sessions
1
ответ дан 16 December 2020 в 15:32

Другие вопросы по тегам:

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