Page 1 of 1
/home/admin/tmp закончились inodes
Posted: Sun Aug 14, 2016 6:04 am
by nitsik
Здравствуйте. Как я понял, у меня примерно эта ситуация
http://www.thin.kiev.ua/unix/39-unix/60 ... query.html - закончились айноды из-за файлов сессий в папке /home/admin/tmp, но я не могу удалить эти файлы, пробовал как по ссылке - не получается, ввожу команды в putty - и тишина, в соседнем putty проверяю количество inod-ов - оно не меняется, что делать?
Пробовал еще так
rm -rf /home/admin/tmp/sess_*
тоже тишина... (не знаю, правильно ли придумал команду)
Помогите, сайт не работает из-за этого...
ps вроде заработало так rm -rfd /home/admin/tmp
айноды начали появляться, вопрос, эта команда не удалит саму папку tmp? В этой папке хранятся только файлы сессий, ничего другого важного не затрется?
Re: /home/admin/tmp закончились inodes
Posted: Mon Aug 15, 2016 1:43 pm
by skurudo
Code: Select all
nice find /home/*/tmp -type f -name 'sess_*' -ctime +3 -delete
Вот так можно красиво обойти все каталоги и почистить сессии.
Можно сделать sh скрипт и запускать из-под рута в кроне.
Re: /home/admin/tmp закончились inodes
Posted: Sat Sep 03, 2016 9:18 am
by nitsik
skurudo wrote:Code: Select all
nice find /home/*/tmp -type f -name 'sess_*' -ctime +3 -delete
Вот так можно красиво обойти все каталоги и почистить сессии.
Можно сделать sh скрипт и запускать из-под рута в кроне.
Насколько я понял find со звездочкой не поможет, т. к. он вначале строит дерево файлов, что-то такое, а потом только удаляет, а т. к. файлов ОЧЕНЬ много (сколько не знаю), то команда просто зависает. Решил, кажется, этой командой (давно это было)
rm -rfd /home/admin/tmp
но удалилась и сама папка tmp... Удалялось все часами.
Re: /home/admin/tmp закончились inodes
Posted: Mon Sep 05, 2016 1:25 pm
by skurudo
nitsik wrote:
Насколько я понял find со звездочкой не поможет, т. к. он вначале строит дерево файлов, что-то такое, а потом
Что вы, помогает и еще как.
Естественно процесс не быстрый, но вполне рабочий.
nitsik wrote:только удаляет, а т. к. файлов ОЧЕНЬ много (сколько не знаю), то команда просто зависает. Решил, кажется, этой
Я сразу вспоминаю вот эту статью, как раз по теме.
Для расширения кругозора крайне рекомендую :)
https://habrahabr.ru/post/157613/
nitsik wrote:командой (давно это было)
rm -rfd /home/admin/tmp
но удалилась и сама папка tmp... Удалялось все часами.
Потому что вот так :)
Re: /home/admin/tmp закончились inodes
Posted: Thu Jan 12, 2017 9:01 pm
by nitsik
Т. к. опять случилась такая же ситуация на vps, то скажу, что команда
работает ООООчень медленно - освобождается где-то 1 inodes в секунду +-, а у меня их занято около 600 тыс.
и заканчивается все
Code: Select all
-bash: /bin/rm: Argument list too long
Команда же
почистила все за несколько минут (скорость примерно 10 тыс. inodes в секунду). Конечно после этого пришлось создавать папку и назначать ей былые права
Code: Select all
mkdir /home/admin/tmp
chown -R admin:admin /home/admin/tmp/
Пока лучшего решения не нашел.
Re: /home/admin/tmp закончились inodes
Posted: Sat Jan 14, 2017 9:03 pm
by canoodle
for security reasons the php-build-in garbage collector is not used in Debian (permissions) to not allow session-hijacking on multi-user systems!?
Because Debian sets very stringent permissions on /var/lib/php5 (1733, owner root, group root) to prevent PHP session hijacking. Unfortunately, this also prevents the native PHP session garbage collector from working, because it can’t see the session files there. The cron job runs as root, which does have sufficient access to see and clean up the session files.
http://dwaves.de/2017/01/14/linux-webse ... mp-folder/
usually this script: /usr/lib/php5/sessionclean
and this cronjob: /etc/cron.d/php5
but it seems not to run, or not do the job?
so yeah as you allready said:
1. try run the sessionclean script
if that does not help.
2. manual mode:
Code: Select all
find /home/*/tmp -follow -maxdepth 1 -type f | wc -l; # count the files and symlinks in this folder
762730; # just for fun
nice find /home/*/tmp -type f -name 'sess_*' -ctime +3 -delete; # delete those files older than 3 days
# -ctime n
# File's status was last changed n*24 hours ago. See the comments
# for -atime to understand how rounding affects the interpretation
# of file status change times.