Introduction
Web hosting providers limit the number of files (inodes) per account to ensure fair resource usage. When an account exceeds this limit -- often due to accumulated session files, email queues, cache files, or log files -- the hosting provider suspends the account, making the website and email inaccessible.
Symptoms
- Website returns
Account Suspendedor503 Service Unavailablepage - cPanel login shows
Inode usage exceededwarning - Email delivery fails with
Mailbox fullorquota exceedederrors - SSH access returns
No space left on devicewhen creating new files - cPanel dashboard shows inode usage at 100% of the plan limit
Common Causes
- Session files accumulating in
/tmporsessionsdirectory - Email queue filling up with undeliverable messages
- Cache directories (WordPress, application caches) growing unbounded
- Log files not being rotated, creating thousands of small log files
- Git repository with many small files in the
.gitdirectory
Step-by-Step Fix
- 1.Check inode usage by directory: Find which directories consume the most inodes.
- 2.```bash
- 3.# SSH into the account (if accessible) or use cPanel File Manager
- 4.for dir in /home/username/*/; do
- 5.count=$(find "$dir" -xdev -type f | wc -l)
- 6.echo "$count $dir"
- 7.done | sort -rn | head -20
- 8.
` - 9.Remove accumulated session files: Clean up temporary files.
- 10.```bash
- 11.# Remove old session files (older than 24 hours)
- 12.find /home/username/tmp/sessions -type f -mtime +1 -delete
- 13.# Remove old cache files
- 14.find /home/username/public_html/wp-content/cache -type f -mtime +7 -delete
- 15.
` - 16.Clear the email queue: Remove stuck emails.
- 17.```bash
- 18.# List queued emails
- 19.exim -bpc
- 20.# Remove frozen messages
- 21.exim -Mrm $(exim -bp | grep frozen | awk '{print $3}')
- 22.
` - 23.Delete old log files: Remove rotated logs that accumulated.
- 24.```bash
- 25.# Remove old access logs
- 26.find /home/username/access-logs -type f -mtime +30 -delete
- 27.# Compress remaining logs
- 28.find /home/username/logs -name "*.log" -mtime +7 -exec gzip {} \;
- 29.
` - 30.Contact hosting provider to restore the account: Request unsuspension after cleanup.
- 31.
` - 32.# After reducing inode count below the limit:
- 33.# Contact hosting support to unsuspend the account
- 34.# Verify website and email are working after unsuspension
- 35.
`
Prevention
- Monitor inode usage in cPanel and alert when usage exceeds 80%
- Configure automatic cleanup of session files and cache directories
- Set up log rotation with compression and deletion of old logs
- Use database-backed sessions instead of file-based sessions
- Implement email forwarding rules to prevent queue buildup
- Choose a hosting plan with adequate inode limits for the expected file count