( Cette question traite d'un problème similaire, mais il s'agit d'un fichier journal pivoté.)
Aujourd'hui, j'ai reçu un message système concernant l'espace /var
très bas.
Comme d'habitude, j'ai exécuté les commandes dans la ligne Sudo apt-get clean
, ce qui n'a amélioré que légèrement le scénario. Ensuite, j'ai supprimé les fichiers journaux en rotation, ce qui a encore une fois apporté très peu d'amélioration.
Après examen, je constate que certains fichiers journaux du /var/log
sont devenus très volumineux. Pour être précis, ls -lSh /var/log
donne,
total 28G -rw-r----- 1 syslog adm 14G Aug 23 21:56 kern.log -rw-r----- 1 syslog adm 14G Aug 23 21:56 syslog -rw-rw-r-- 1 root utmp 390K Aug 23 21:47 wtmp -rw-r--r-- 1 root root 287K Aug 23 21:42 dpkg.log -rw-rw-r-- 1 root utmp 287K Aug 23 20:43 lastlog
Comme on peut le constater, les deux premiers sont les fautifs. Je suis un peu surpris de savoir pourquoi ces fichiers volumineux n'ont pas été pivotés.
Donc qu'est ce que je devrais faire? Supprimez simplement ces fichiers puis redémarrez? Ou optez pour des mesures plus prudentes?
J'utilise Ubuntu 14.04.
UPDATE 1
Pour commencer, le système n'a que quelques mois. J'ai dû installer le système à partir de rien quelques mois en arrière après un crash de disque dur.
Maintenant, comme conseillé dans cette réponse , j'ai d'abord vérifié les fichiers journaux incriminés en utilisant tail
, sans surprise. Ensuite, pour une inspection plus approfondie, j’ai exécuté ce script à partir de même réponse .
for log in /var/log/{syslog,kern.log}; do
echo "${log} :"
sed -e 's/\[[^]]\+\]//' -e 's/.*[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}//' ${log} \
| sort | uniq -c | sort -hr | head -10
done
Le processus a pris plusieurs heures. La sortie était dans la ligne de,
/var/log/syslog : 71209229 Rafid-Hamiz-Dell kernel: sda3: rw=1, want=7638104968240336200, limit=1681522688 53929977 Rafid-Hamiz-Dell kernel: attempt to access beyond end of device 17280298 Rafid-Hamiz-Dell kernel: attempt to access beyond end of device 1639 Rafid-Hamiz-Dell kernel: EXT4-fs warning (device sda3): ext4_end_bio:317: I/O error -5 writing to inode 6819258 (offset 0 size 4096 starting block 54763121030042024) <snipped> /var/log/kern.log.1 : 71210257 Rafid-Hamiz-Dell kernel: attempt to access beyond end of device 71209212 Rafid-Hamiz-Dell kernel: sda3: rw=1, want=7638104968240336200, limit=1681522688 1639 Rafid-Hamiz-Dell kernel: EXT4-fs warning (device sda3): ext4_end_bio:317: I/O error -5 writing to inode 6819258 (offset 0 size 4096 starting block 954763121030042024)
(/dev/sda3
est mon répertoire personnel. Comme nous pouvons le trouver,
lsblk /dev/sda NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931.5G 0 disk ├─sda1 8:1 0 122.1G 0 part / ├─sda2 8:2 0 7.6G 0 part [SWAP] └─sda3 8:3 0 801.8G 0 part /home
Pourquoi un processus voudra-t-il écrire au-delà de la limite n'entre pas dans le cadre de ma compréhension? Peut-être que je voudrai poser une question différente dans ce forum si cela continue même après une mise à jour du système.)
Ensuite, de cette réponse (vous pouvez vérifier this pour une compréhension plus profonde), j’ai exécuté,
Sudo su -
> kern.log
> syslog
Maintenant, ces fichiers n'ont aucune taille. Le système fonctionne correctement avant et après un redémarrage.
Je regarderai ces dossiers (avec d’autres) dans les prochains jours et je ferai un compte rendu
Ils se comportent mal.
En guise de conclusion, les fichiers en cause (kern.log
et syslog
) sont configurés pour faire l'objet d'une rotation, ainsi que l'inspection des fichiers (grep
aidé) à l'intérieur de /etc/logrotate.d/
.
UPDATE 2
Les fichiers journaux sont réellement pivotés. On dirait que les grandes tailles ont été atteintes en un seul jour.
Supprimez simplement ces fichiers puis redémarrez?
Non, videz-les mais n'utilisez pas rm
car il pourrait en résulter un plantage lors de la saisie de la commande touch
pour le recréer.
Méthode la plus courte:
cd /var/log
Sudo su
> lastlog
> wtmp
> dpkg.log
> kern.log
> syslog
exit
Si ce n'est pas le cas, il faudra Sudo
name__. Tiré d'un autre réponse sur AU.
AVANT DE FAIRE QUE. Faites un tail {logfile}
et vérifiez s’il ya une raison pour qu’ils soient si gros. À moins que ce système ne date de plusieurs années, il ne devrait y avoir aucune raison à cela et résoudre le problème vaut mieux que de laisser cela se poursuivre.
Kern.log et syslog ne devraient normalement pas être aussi gros. Mais comme je l’ai dit: si ce système fonctionne pendant des années et des années, il est peut-être normal que les fichiers soient simplement effacés.
Et pour éviter qu’elle ne devienne aussi grosse à l’avenir: configurez logrotate
name__. Il est assez simple et compressera le fichier journal quand il deviendra plus grand que la taille que vous avez définie.
Autre chose: si vous ne voulez pas supprimer le contenu, vous pouvez compresser les fichiers en les compressant ou en les compressant. Cela vous donnera des fichiers probablement 10% de ce qu'ils sont maintenant. C'est-à-dire s'il y a encore de la place sur le disque pour le faire.
Il vaut probablement la peine d'essayer de déterminer ce qui remplit le ou les journaux, soit en les examinant simplement à l'aide de la commande less
ou tail
.
tail -n 100 /var/log/syslog
ou si les lignes en cause sont trop profondément enfouies pour voir facilement ce qui se passe, quelque chose comme
for log in /var/log/{dmesg,syslog,kern.log}; do
echo "${log} :"
sed -e 's/\[[^]]\+\]//' -e 's/.*[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}//' ${log} \
| sort | uniq -c | sort -hr | head -10
done
(Remarque: cela peut prendre un certain temps, étant donné la taille des fichiers) qui tentera de supprimer les horodatages, puis comptera les messages les plus fréquents.
Ma méthode pour nettoyer les fichiers journaux du système est la suivante. Les étapes 1 et 2 sont facultatives, mais vous devez parfois vérifier les anciens journaux et la sauvegarde est parfois utile. ;-)
Facultatif: Copier le fichier journal
cp -av --backup=numbered file.log file.log.old
Facultatif: Utilisez Gzip sur la copie du journal
gzip file.log.old
Utilisez/dev/null pour le fichier propre
cat /dev/null > file.log
Et nous utilisons pour cela les journaux (uniquement sur plusieurs serveurs) logrotate et un script hebdomadaire exécuté par tous les fichiers avec * .1 (ou la rotation suivante) compressés par gzip.
J'ai installé Ubuntu 16.04 aujourd'hui et j'ai remarqué le même problème. Cependant, j'ai résolu ce problème avec busybox-syslogd. Ouaip! Je viens d'installer ce paquet et le problème a été résolu. :)
$ Sudo apt-get install busybox-syslogd
Après avoir installé ce paquet, réinitialisez syslog
et kern.log
:
Sudo tee /var/log/syslog /var/log/kern.log </dev/null
J'espère que cette solution simple est utile à d'autres personnes.