Linux下如何清理系统及MySQL/Nginx/PHP-FPM等日志
在Linux系统中,日志文件的积累可能会导致磁盘空间不足,影响系统性能,定期清理日志文件是十分必要的,本文将介绍如何在Linux下清理系统及MySQL/Nginx/PHP-FPM等日志。
清理系统日志
1、清理内核日志
Linux系统的内核日志记录了系统运行过程中的各种信息,包括错误、警告等,这些日志对于排查问题非常有帮助,但过多的日志可能会占用大量磁盘空间,可以通过以下命令清理内核日志:
sudo cat /proc/sys/kernel/printk | tail -n +4 > /tmp/kmsg.log sudo dmesg > /dev/null sudo sh -c 'cat /tmp/kmsg.log > /var/log/kern.log' sudo rm -f /tmp/kmsg.log
2、清理邮件服务器日志
如果你的系统使用了邮件服务器(如Postfix或Exim),可以定期清理其日志文件以节省磁盘空间,以下是一个简单的脚本,用于删除超过30天的邮件服务器日志:
!/bin/bash find /var/log -type f -name "mail*" -mtime +30 -exec rm {} \;
清理MySQL日志
MySQL的慢查询日志和常规查询日志可能会占用大量磁盘空间,可以通过配置MySQL的慢查询日志来限制其大小,并定期清理,以下是一个简单的脚本,用于保留最近7天的慢查询日志,并删除超过30天的常规查询日志:
!/bin/bash 保留最近7天的慢查询日志 sudo sed -i 's/\( \+Mysql\)\[1-9]\{1,\}.[0-9]\{1,\}\(.*\)/\1slow_query_log_file = "$MYSQL_DATADIR/mysql-slow.log\" \t\t\t\tlong_query_time = 2 \t\t\t\tlog_queries_not_using_indexes = 1 \t\t\t\tmax_heap_table_size = 16M \t\t\ttmin_heap_table_size = 8M t\t\t\tquery_cache_size = 64M \t\tt\tslow_query_log = 1 \tt\t\tthread_cache_size = 64 /' /etc/my.cnf sudo service mysql restart 删除超过30天的常规查询日志 find /var/lib/mysql -type f -name "*.log" -mtime +30 -exec rm {} \;
清理Nginx日志
Nginx的访问日志和错误日志可能会占用大量磁盘空间,可以通过配置Nginx的访问日志来限制其大小,并定期清理,以下是一个简单的脚本,用于保留最近7天的访问日志,并删除超过30天的错误日志:
!/bin/bash 保留最近7天的访问日志 sudo sed -i 's/\(access_log \+\)\"logs-\w*\"/\1\"access.log main\"/\;s/(error_log \+\)\"logs-\w*\"/\1\"error.log\"/\;' /etc/nginx/nginx.conf sudo service nginx restart 删除超过30天的错误日志 find /var/log/nginx -type f -name "*.log" -mtime +30 -exec rm {} \;
清理PHP-FPM日志
PHP-FPM的错误日志和访问日志可能会占用大量磁盘空间,可以通过配置PHP-FPM的错误日志来限制其大小,并定期清理,以下是一个简单的脚本,用于保留最近7天的错误日志,并删除超过30天的访问日志:
!/bin/bash 保留最近7天的错误日志 sudo sed -i 's/(error_log \+\)\"logs-\w*\"/\1\"php-fpm.log\"/\;' /etc/php5/fpm/pool.d/*.conf sudo service php5-fpm restart 删除超过30天的访问日志(如果有) find /var/log/php5-fpm -type f -name "access.log" -mtime +30 -exec rm {} \;
相关问题与解答
Q1:如何查看系统当前使用的磁盘空间?
A1:可以使用df
命令查看当前系统的磁盘空间使用情况。
df -h --total
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/273828.html