Logrotate inoltre viene periodicamente attivato tramite crontab e comprime i vari file di log e potreste trovare una situazione tipo questa:
con la presenza di molti file compressi.
L'accumularsi di molti file potrebbe creare anche qualche problemino vista la presenza di Ramlog, il software che si occupa di mantenere in ramdisk tutti i log. Infatti lo spazio che Ramlog destina al log di sistema non è infinito, ma ovviamente limitato per non occupare troppa ram del nostro Raspberry.
Con il comando
Codice: Seleziona tutto
df /var/log
è possibile verificare lo spazio disponibile ed utilizzato per /var/log
Un modo molto semplice per ripulire velocemente tutti i file .gz creati da logrotate e che contengono i log più vecchi, conservando però i log più recenti è eseguire il seguente comando da terminale:
Per ripulire la cartella /var/log/
Codice: Seleziona tutto
sudo find /var/log/ -type f -regex '.*\.[0-9]+\.gz$' -delete
Per ripulire anche la cartella /var/log/apache2/ dove sono contenuti i log del web server apache:
Codice: Seleziona tutto
sudo find /var/log/apache2/ -type f -regex '.*\.[0-9]+\.gz$' -delete
Allo stesso modo potete anche ripulire altre eventuali sottocartelle presenti in /var/log.
ATTENZIONE: non cancellate mai nessuna cartella all'interno di /var/log in quanto questo impedirà di funzionare al relativo software che utilizza la cartella cancellata. Cancellate eventualmente solo i file contenuti nelle varie cartelle.
PULIZIA AUTOMATICA
E anche possibile automatizzare questa procedura, creando uno script nella cartella comapps con i comandi:
Codice: Seleziona tutto
cd /var/www/comapps
nano clenalog.sh
ed incollare quanto segue:
Codice: Seleziona tutto
#!/bin/bash
#
# Raspberry SOLARJESSIE cleaning /var/log of logrotate files
#
# "cleanlog.sh" Rev. 1.0
#
# Copyright (C) 2017 Flavio Anesi <www.flanesi.it>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Pulizia della cartella /var/log dei file compressi da logrotate
# ln -s /var/www/comapps/cleanlog.sh /usr/local/bin/cleanlog
#
# UTILIZZO:
# cleanlog 50 esegue la pulizia solo se lo spazio di log è pieno per più del 50%
# cleanlog esegue la pulizia sempre
#
# è possibile automatizzare la procedura di pulizia inserendo in crontab la seguente riga:
#
# 02 00 1 * * /usr/local/bin/cleanlog 80 >/dev/null 2>&1
#
# in questo modo il primo di ogni mese alle ore 00:02 verrà eseguita la procedura di pulizia
# solo se la partizione di log è occupata per più dell'80%
SIZE_PERC_LIMIT="$1"
if [ -z "$SIZE_PERC_LIMIT" ]; then
SIZE_PERC_LIMIT=0
fi
df -a -P /var/log | tr -s ' ' | cut -d' ' -f5 | grep '%' | cut -d% -f1 | while read value; do
if [ $value -ge $SIZE_PERC_LIMIT ]; then
# clear
echo "Pulizia cartella \\var\\log"
sudo find /var/log/ -type f -regex '.*\.[0-9]+\.gz$' -delete
echo "Pulizia cartella \\var\\log\\apache2"
sudo find /var/log/apache2/ -type f -regex '.*\.[0-9]+\.gz$' -delete
echo "Aggiornamento file RamLog"
sudo ramlog flush
else
echo "Pulizia non necessaria"
echo "Percentuale /var/log utilizzata: $value %"
echo "Percentuale limite per pulizia : $SIZE_PERC_LIMIT %"
fi
done
CTRL O + CTRL X per salvare ed uscire
Date i permessi in esecuzione a file:
Codice: Seleziona tutto
chmod +x cleanlog.sh
Create infine il link
Codice: Seleziona tutto
ln -s /var/www/comapps/cleanlog.sh /usr/local/bin/cleanlog
Ora eseguendo da terminale il comando cleanlog verrà effettuata la pulizia dei file di log.
E' anche possibile eseguire la pulizia solo se la cartella /var/log è piena per più di una certa percentuale (es. 80%) semplicemente eseguendo il comando e specificando la percentuale:
Codice: Seleziona tutto
cleanlog 80
E' anche possibile automatizzare la procedura inserendo uan riga in crontab come indicato nei commenti iniziali dello script.
Se volete modificare la programmazione di crontab, evidenzio un ottimo tool che vi aiuta nella scrittura della riga di crontab.
DISABILITARE ACCESS.LOG
Con Apache2 per limitare le continue scritture nel file access.log dei comandi GET quando si consultano le pagine web di 123solar e Metern (che possono portare ad una saturazione dello spazio di log in caso di prolungate consultazioni) è consigliabile disabilitare il log in access.log, mantenendo comunque il log di eventuali errori in error.log.
Per fare ciò è necessario accedere ai seguenti file:
Codice: Seleziona tutto
/etc/apache2/sites-available/default-ssl
/etc/apache2/sites-available/default
ed in entrambi commentare la riga con CustomLog :
Codice: Seleziona tutto
#CustomLog ${APACHE_LOG_DIR}/access.log combined
Salvate il file e riavviate il Web server Apache con il comando:
Codice: Seleziona tutto
systemctl restart apache2.service
Fonte: HOW TO EASILY DISABLE LOG IN APACHE