Voici comment procéder :
- modifier le point de montage /tmp pour qu’il soit uniquement géré en RAM
- spécifier à domoticz que l’on veux que les logs s’écrivent dans /tmp
- ajouter un script qui quotidiennement va sauvegarder le fichier de log.
Etape 1 : définir le point de montage /tmp en ram au lieu de disque
Pour éviter de trop solliciter la carte SD et donc à terme la détériorer, nous allons utiliser un « bout » de ram comme espace de stockage temporaire. Attention : cela à comme conséquence de vider le contenu de ce répertoire à chaque redémarrage.
Le fichier /etc/fstab permet de définir les points de montage, dans un premier temps, sauvegardez la configuration actuelle :
sudo cp -p /etc/fstab /etc/fstab.save
puis éditez le fichier /etc/fstab et ajoutez la ligne suivante :
tmpfs /tmp tmpfs nodev,nosuid,size=20M 0 0
Notez que dans ma config j’utilise 2OM ce qui est tout à fait suffisant. Vous pouvez ajuster en fonction de vos besoin dans la limite de la ram disponible.
Supprimer les éventuels fichiers présents dans le répertoire /tmp (sauvegardez-les si vous pensez en avoir besoin) puis redémarrer le Raspberry.
En faisant un df vous devriez maintenant voir que le répertoire /tmp à un stockage définit de 20M (dernière ligne ):
# df -hP Filesystem Size Used Avail Use% Mounted on /dev/root 5.6G 3.9G 1.5G 73% / devtmpfs 214M 0 214M 0% /dev tmpfs 44M 260K 44M 1% /run tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 87M 0 87M 0% /run/shm /dev/mmcblk0p5 60M 20M 40M 33% /boot tmpfs 20M 0M 20M 3% /tmp
Etape 2 : configurer le fichier de log domoticz
pour cela éditez simplement le fichier : « /etc/init.d/domoticz.sh »
en ajoutant l’argument « -log /tmp/domoticz.log »
Pour ma part cela donne la ligne :
DAEMON_ARGS="-daemon -www 8080 -log /tmp/domoticz.log"
Puis redémarrer domoticz.
vous pouvez vérifier que le changement a bien été pris en compte en faisant un tail -f sur le fichier :
root@raspberrypi:~# tail -f /tmp/domoticz.log 2016-03-07 14:24:39.509 (EDF) P1 Smart Meter (Conso EDF) 2016-03-07 14:24:47.160 (RFXCOM) Temp + Humidity (Cuisine) 2016-03-07 14:24:50.888 (EDF) P1 Smart Meter (Conso EDF) 2016-03-07 14:24:54.907 Hardware Monitor: Fetching data (System sensors) 2016-03-07 14:25:02.268 (EDF) P1 Smart Meter (Conso EDF)
Etape 3 : script de log tournant domoticz
Pour éviter que le répertoire /tmp ne se remplisse trop avec les logs de domoticz on va utiliser un script qui va sauvegarder journellement les fichiers de log de domoticz et remettre la taille a zéro dans le fichier initial /tmp/domoticz.log.
Commencez par créer le répertoire de sauvegarde des logs :
sudo mkdir /home/pi/domoticz/logs sudo mkdir /home/pi/scripts
Le second répertoire « scripts » est le répertoire dans lequel je mets tous mes scripts domoticz, vous pouvez l’appeler comme vous voulez …
mkdir /home/pi/scripts cd /home/pi/scripts curl -O https://raw.githubusercontent.com/Sirus10/domoticz/master/clean_logs.sh chmod +x clean_logs.sh
Pour que tous les fichiers de logs des derniers 7 jours soient disponibles dans le même repertoire, créé un lien pointant ver le fichier dans tmp :
ln -s /tmp/domoticz.log /home/pi/domoticz/logs/domoticz.log
Cela permet par exemple de faire une recherche dans l’ensemble des fichier des 7 derniers jours. Ensuite vous pouvez manuellement tester le script :
/home/pi/scripts/clean_logs.sh ############### Start Script ############### Mon 7 Mar 14:35:11 CET 2016 cp /home/pi/domoticz/logs/domoticz.log /home/pi/domoticz/logs/domoticz.log.1 cleanup log /home/pi/domoticz/logs/domoticz.log ############### Ends Script ############### Mon 7 Mar 14:35:12 CET 2016
Puis une fois que vous avez vus que tout est ok le planifier en cron tous les jours à minuit :
# cleanup domoticz logs 0 0 * * * /home/pi/scripts/clean_logs.sh > /tmp/clean_logs.log
Au bous de quelques jour vous aurez 7 fichiers de log en plus de votre log actuels (qui elle reste dans /tmp)
1 = Lundi, 2 = Mardi …
ls -l /home/pi/domoticz/logs domoticz.log.1 domoticz.log.2 domoticz.log.3 domoticz.log.4 domoticz.log.5 domoticz.log.6 domoticz.log.7
Voila c’est fini ! Pour ma part ce script fonctionne depuis au plus d’un an sans problème….