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... Удалялось все часами.
Потому что вот так :)

Code: Select all

rm -rfd /home/admin/tmp/*

Re: /home/admin/tmp закончились inodes

Posted: Thu Jan 12, 2017 9:01 pm
by nitsik
Т. к. опять случилась такая же ситуация на vps, то скажу, что команда

Code: Select all

rm -rfd /home/admin/tmp/*
работает ООООчень медленно - освобождается где-то 1 inodes в секунду +-, а у меня их занято около 600 тыс.
и заканчивается все

Code: Select all

-bash: /bin/rm: Argument list too long
Команда же

Code: Select all

rm -rfd /home/admin/tmp
почистила все за несколько минут (скорость примерно 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.