L'ordinateur de ma mère utilise Ubuntu 12.04 LTS. Cela fonctionne très bien, mais soudainement, syslog s'est rempli. Et en remplissant, je veux dire que je viens de supprimer un /var/log/syslog
d’une taille de 400 Go. Oui - gigaoctets.
Bien que je sois sûr qu'il contienne des informations utiles, je ne suis pas sûr que 400 Go soit une sorte d'information à parcourir. Et ce qui est vraiment étonnant, c’est que cela s’est passé dans un délai de 8 heures - j’avais couru df
vers midi, et entre-temps et maintenant, son lecteur s’est rempli à 30% (d’un peu moins de 70% à 100%).
Quelle pourrait en être la cause et comment pourrais-je résoudre le problème?
EDIT On dirait que l'USB est le coupable:
Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157829] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157836] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157842] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157849] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157857] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157863] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157870] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157877] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157884] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157891] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Vous devriez savoir ce qui cause la grande quantité de messages, car si vous corrigez ce problème, vous corrigez le fichier journal volumineux.
Cependant, jusque-là, vous pouvez créer une base de rotation de journal sur l’un des éléments suivants.
Ce sera déjà configuré sur le système par défaut: / etc/logrotate.d/rsyslog
/var/log/syslog
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
Vous pouvez voir à partir de cela qu'il fera pivoter le fichier/var/log/syslog quotidien et conservera 7 copies du fichier pivoté.
Vous pouvez changer cette taille en faisant pivoter une limite de taille, par exemple 1 Mo ou en réduisant le nombre de copies stockées.
Attention: cela ne résoudra pas la cause première de votre problème, mais cela vous fera gagner un peu de temps car cela empêchera le système de fichiers de se remplir.
Ouvrez le fichier de configuration /etc/logrotate.d/syslog
Sudo nano /etc/logrotate.d/syslog
Le fichier a l'air qc. comme
/var/log/syslog
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
....
...
Ajouter par exemple size 100k
entre parenthèses. Ensuite, cela devrait ressembler à:
/var/log/syslog
{
rotate 7
size 100k
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
Notez que cela limite la taille des fichiers en rotation, et non le fichier syslog réel. Enregistrez le fichier. La prochaine fois que le travail logrotate chron démarrera, il limitera la taille des journaux pivotés.
Pour limiter la taille de /var/log/syslog
, vous devez éditer le /etc/rsyslog.d/50-default.conf
et définir une taille de journal fixe.
Ajoutez ou modifiez ce paramètre en modifiant la ligne suivante dans /etc/rsyslog.d/50-default.conf
:
.*;auth,authpriv.none -/var/log/syslog
Voici un extrait de manuel de rsyslog :
Les canaux de sortie sont définis via une directive $ outchannel. Sa syntaxe est la suivante: $ nom outchannel, nom de fichier, taille maximale, action-on-max-size nom est le nom du canal de sortie (pas le fichier), nom de fichier est le nom du fichier dans lequel écrire , max-size la taille maximale autorisée et l'action-on-max-size qu'une commande doit être émise lorsque la taille maximale est atteinte. Cette commande a toujours exactement un paramètre. Le binaire est la partie de action-on-max-size avant le premier espace, son paramètre est tout derrière cet espace. Veuillez noter que max-size est interrogé AVANT d'écrire le message de journal dans le fichier. Veillez donc à définir une limite suffisamment basse pour que tout message puisse tenir. Pour la version actuelle, il est utile de le régler 1k plus bas que prévu. La taille maximale doit toujours être spécifiée en octets - il n'y a pas de symboles spéciaux (tels que 1k, 1m,…) à ce stade de développement. Gardez à l'esprit que $ outchannel définit simplement un canal avec “name”. Cela ne l’active pas. Pour ce faire, vous devez utiliser une ligne de sélection (voir ci-dessous). Cette ligne de sélecteur comprend le nom de la chaîne et un signe $ devant celle-ci. Voici un exemple: . : omfile: $ mychannel Dans sa forme actuelle, les canaux de sortie permettent principalement de limiter la taille d'un fichier de sortie. Pour ce faire, spécifiez une taille maximale. Lorsque cette taille est atteinte, rsyslogd exécutera la commande action-on-max-size, puis rouvrira le fichier et réessayera. La commande devrait être quelque chose comme un script de rotation de journal ou une chose similaire.
S'il n'y a pas de commande action-on-max-size ou si la commande n'a pas résolu le problème, le fichier est fermé et jamais rouvert par rsyslogd (sauf, bien sûr, en le survolant). Cette logique a été intégrée lorsque nous avons rencontré pour la première fois de graves problèmes avec des fichiers de taille supérieure à 2 Go, ce qui pourrait entraîner une décharge de base de rsyslogd. Dans de tels cas, il est plus approprié d'arrêter l'écriture dans un seul fichier. Pendant ce temps, rsyslogd a été corrigé pour prendre en charge les fichiers plus volumineux, mais uniquement sur les systèmes de fichiers et les versions de système d'exploitation qui le font. Il peut donc toujours être judicieux d’appliquer une limite de taille de fichier de 2 Go.
Ici, la taille maximale est de 1 Mo. Placez cette ligne avant la ligne *.*; ...
$outchannel mysyslog,/var/log/syslog,1048576
et remplacez la ligne *.*; ...
par
*.*;auth,authpriv.none :omfile:$mysyslog
Redémarrez rsyslogd
Sudo service rsyslog restart
J'ai eu le même problème avec une Lexmark Pro915 pendant deux semaines. J'ai fait deux choses, et cela fonctionne maintenant bien. J'ai réinstallé le pilote. (Ne croyez pas que c'est ce qui a aidé.) J'ai sorti l'extension USB que j'utilisais, qui faisait presque 15 pieds de long et qui n'était peut-être pas tout à fait compatible. Je soupçonne que le pilote Lexmark pour systèmes Linux pourrait détecter un signal médiocre ou mal synchronisé et vouloir vous en informer 10 milliards de fois par jour. Essayez d'améliorer votre connexion d'une manière ou d'une autre.
Logrotate et des solutions similaires ne m'ont pas aidé. Kern.log et syslog enregistraient ensemble plus de 1 To par jour! Logrotate pourrait vous aider si vous pouviez le configurer pour s'exécuter toutes les douze minutes.