Newsgroup: it.comp.os.linux.debian
Titolo: Raspbian, log e micro-SD

Debian (raspbian) Lenny su Raspberry pi3.
 
 
Tengo i log (giornalieri) del router per parecchi mesi, ed ad ogni riga
(migliaia al giorno) viene fatta una scrittura sulla schedina SD (micro-SD) che
funge da hard-disk.
 
In queste condizioni la schedina SD non dura troppo, e comicia ad evere 
problemi con inode non leggibili o con errori.
 
Periodicamente faccio un clone (con dd) su una schedina nuova.
 
Per ridurre ulteriormente il problema, avevo pensato di indirizzare il log
giornaliero, in ram (/dev/shm) e poi nel logrotate fare un accrocchio per avere
comunque la rotazione dei log corretta.
 
Un qualcosa del tipo:
prerotate
    mv /run/shm/router.log /var/log
    touch /run/shm/router.log
endscript
 
O forse, è meglio mettere in /var/log un link al file /run/shm/router.log al 
quale sono indirizzati i log del router, ma non so come si comporta logrotate 
nel ruotare un link.
 
Poi, per salvaguardare il log in caso di halt o reboot, mettere un qualcosa per 
salvarlo nelle rispettive catene di init.d, e ricaricarlo al riavvio.
 
Controindicazioni?   Mi sono fumato roba troppo strana?
 
 
-- 
I suspect you are non-linear minded, too.

 Controindicazioni?   Mi sono fumato roba troppo strana?
 
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >

 }
 
Bello, ma purtroppo logrotate lavora solo sullo stesso device, e /run/shm che
è poi un link a /dev/shm è diverso da / dove risiede /var/log !
 
L'idea era buona !!!
 
N.B. I file di log da ruotare in /dev/log sono 90.
 
-- 
Se sei stanco, fermati e fatti fare una pompa.


Dove lo hai letto che logrotate lavora solo sullo stesso device?  Sulla 
mia debian (ed anche sulla slackware) funziona anche se li ruoto su un 
altro device.


In date: Mon, 25 Mar 2019 16:14:32 on group: it.comp.os.linux.debian,

Ho fatto una prova e non ha fatto la rotazione dicendolo in un messaggio.
 
sudo /usr/sbin/logrotate -f /etc/logrotate.conf
error: pallletta:12 olddir /var/log and log file /run/shm/palletta.log are on different devices
error: found error in file pallletta, skipping
 
(ho omesso solo le righe del postrotate ed ho nominato lo script in logrotate.d come pallletta)
 
 
Dal man di logorotate:
       olddir directory
              Logs are moved into directory for rotation. The directory must be on the same  physical  device  as  the  log  file  being
              rotated,  unless copy, copytruncate or renamecopy option is used. The directory is assumed to be relative to the directory
              holding the log file unless an absolute path name is specified. When this option is used all old versions of the  log  end
              up in directory.  This option may be overridden by the noolddir option.
 
 
Il log viene scritto in tempfs (/run/shm), ma la rotazione deve avvienire in / (/var/log).
Ed è questo a farlo incazzare.
 
Provo ad inserire le direttive come suggerito dal man:
       renamecopy
              Log  file  is renamed to temporary filename in the same directory by adding ".tmp" extension to it. After that, postrotate script is run and log file
              is copied from temporary filename to final filename. This allows storing rotated log files on the different devices using olddir  directive.  In  the
              end, temporary filename is removed.
 
 
-- 
Al termine delle elezioni,la madre superiora fa la conta dei voti:
DC, DC, DC,... MSI. Chiama subito suor Maddalena per le spiegazioni...
Maria Santissima Immacolata, Madre!
Ah! OK! Tutto bene, scusa!

               end, temporary filename is removed.
 
Il man era della stretch (che sto usando adesso), ma là gira la jessie e "renamecopy" non esiste!
E me lo dice! Cribbio!
Buco nell'acqua!



 
Chiedo scusa ma ti ho postato un esempio dimenticando di riportare le 
direttive in /etc/logrotate.conf   Evidentemente quando (anni fa oramai) 
mi era servito qualcosa di simile, avevo letto più attentamente il 
manuale.  La risposta è nelle righe del manuale relative ad olddir che 
mi hai riportato.
 
olddir directory
	Logs are moved into directory for rotation. The directory must
	be on the same  physical  device  as  the  log  file  being
	rotated,  _unless copy, copytruncate or renamecopy option is
	used_ .
 
Nel mio logrotate.conf c'è inserita la direttiva:  copytruncate che per 
dove è inserita diventa una direttiva globale valida per tutti i file 
della directory logrotate.d.  Invece di renamecopy prova con copytruncate.


 della directory logrotate.d.  Invece di renamecopy prova con copytruncate.
 
Ho dovuto fare questo accrocchio (uso per le prove una copia del log
originale...):
 
/var/log/palletta.log
{
    firstaction
        chmod 666 /run/shm/palletta.log
        cp /run/shm/palletta.log /var/log
        rm /run/shm/palletta.log
        touch /run/shm/palletta.log
        chmod 666 /run/shm/palletta.log
    endscript
        rotate 4
        daily
        missingok
#        notifempty      (altrimenti non ruota il log)
        delaycompress
        compress
        create 666 root root
#        extension .log
#        olddir /var/log
#        sharedscripts
}
 
 
Il 666 è provvisorio per le prove!
 
Così funziona, ma debbo risolvere ora come far salvare il file log su ramfs
(/run/shm) allo spegnimento/reboot e ricaricarlo all'avvio.
 
Debbo salvare il log subito dopo che viene arrestato rsyslog.
Debbo ricarirare in /run/shm/ subito prima del riavvio di rsyslog.
 
Ma quì c'è systemd!
 
Col vecchio sistema era una bazzecola. Bastava inserire un paio di righe nel
corrispettivo in /etc/init.d.
 
Con questo nuovo non mi ci raccapezzo.   :(
 
 
-- 
Q: This FAQ did not solved my problem, what shold I do?
A: Visit your psychiatrist.

 Con questo nuovo non mi ci raccapezzo.   :(
 
Qui non posso aiutarti le Debian con systemd sono un osso duro da 
riconfigurare.  Per installare openvpn ho dovuto fare i salti mortali 
provando su virtualbox prima di passare alla macchina dell'università.
 
Ora sto provando a configurare exim per un certo servizio ma dopo aver 
fatto un po` di prove ho dovuto rimuoverlo e reinstallarlo per ripartire 
da zero.  Il maledetto ha solo 5 configurazioni standard e una 
documentazione abbastanza oscura.


 documentazione abbastanza oscura.
 
Ti capisco!
 
 
-- 
Se alla tavoletta del cesso ci attacchi una mela, mica diventa un MacBook!
Pero' se al MacBook togli la mela, diventa una tavoletta del cesso  :P