How to properly delete PHP sessions files to free inodes?

June 25, 2016 10.7k views

So this morning, I noticed I was having trouble using tab-completion while logged into ssh. I received a cannot create temp file for here-document: No space left on device message whenever I attempted a tab-completion.

Confused by the “no space left” message when I was using less than 30% of the disk space on the device, I dug into it a little deeper and realized the lack of available “inodes” was actually the problem.

I managed to clear enough files manually to run the following command: sudo find / -xdev -printf '%h\0' | sort -z | uniq -cz | sort -nrzk 1 | tr '\0' '\n' | head -n 50

That revealed the biggest culprit to be PHP and HHVM session files (FWIW, I don’t use HHVM anymore).

1261734 /var/lib/php5
543376 /var/lib/hhvm/sessions

I’d love to clear these out (especially the HHVM ones) but am not sure of the proper way to do it.

Any advice would be much appreciated.

2 Answers

This one solves my problem on my php7
A quick command to delete all sess* files on /var/lib/php/sessions is this:
find /var/lib/php/sessions -type f -cmin +24 -name “sess
*” -exec rm -f {} \;

For php5 you can try this one:

On Ubuntu there should be a cron job configured to delete unused session files on a regular basis located in /etc/cron/php5.

Running out of inodes just means that you have too many files. If you are no longer using hhvm you can simply delete those files (or uninstall unneeded software) to free them up.

Have another answer? Share your knowledge.